torrone 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.rst +19 -5
- data/lib/torrone.rb +12 -1
- data/lib/torrone/config.rb +2 -0
- data/lib/torrone/export_manager.rb +13 -0
- data/lib/torrone/exporters/base.rb +40 -0
- data/lib/torrone/exporters/csv.rb +21 -0
- data/lib/torrone/exporters/html.rb +25 -0
- data/lib/torrone/exporters/pdf.rb +21 -0
- data/lib/torrone/exporters/xls.rb +23 -0
- data/lib/torrone/jar_loader.rb +2 -4
- data/lib/torrone/{json_input_stream.rb → json_input_stream_creator.rb} +1 -1
- data/lib/torrone/param_hash_creator.rb +32 -0
- data/lib/torrone/report.rb +4 -40
- data/lib/torrone/run_manager.rb +29 -0
- data/lib/torrone/version.rb +1 -1
- metadata +10 -3
- data/lib/torrone/exporters/pdf_exporter.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f2b7bd828e7f01aee6eb7575092e6e1d37a546c2bea8b54e3c0f8328e1bf625
|
4
|
+
data.tar.gz: 1980156b0c9046ededf76308dd4e4ce021395714b2b4929c7492ffdbef8db216
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 904adb268e1eae1aeedfb82206d61890ad4ff1f3f0551167a42af582eb6667db1c43390a1055fa1bcadcfa81ab97e41faedb5e8794077659bc334ec611338166
|
7
|
+
data.tar.gz: b2b7897f0b5e597d08b55e83eac6345b10edf0e1229349128345324328a4e01194decd6c697c420dc54fc83b4d9b8beba2e7b8cc0a9f25708f569a623193c8c9
|
data/README.rst
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
Torrone
|
2
3
|
======
|
3
4
|
|
@@ -24,13 +25,26 @@ Before doing anything, you should configure Torrone::
|
|
24
25
|
|
25
26
|
Having a compiled jasper file, you can generate a PDF report::
|
26
27
|
|
27
|
-
Torrone::Report.generate('emails',
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
array_of_bytes = Torrone::Report.generate('emails',
|
29
|
+
data: [
|
30
|
+
{ email: 'foo@bar.com' },
|
31
|
+
{ email: 'foo2@bar.com'},
|
32
|
+
{ email: 'foo3@bar.com'}
|
33
|
+
]
|
31
34
|
)
|
32
35
|
|
33
|
-
it
|
36
|
+
it returns an array of bytes.
|
37
|
+
|
38
|
+
You can also pass a hash of custom/specifics parameters, just like this::
|
39
|
+
|
40
|
+
array_of_bytes = Torrone::Report.generate('emails',
|
41
|
+
data: [
|
42
|
+
{ email: 'foo@bar.com' },
|
43
|
+
{ email: 'foo2@bar.com'},
|
44
|
+
{ email: 'foo3@bar.com'}
|
45
|
+
],
|
46
|
+
params: {'COMPANY_NAME' => 'My company name'}
|
47
|
+
)
|
34
48
|
|
35
49
|
Contributing
|
36
50
|
------------
|
data/lib/torrone.rb
CHANGED
@@ -6,5 +6,16 @@ module Torrone
|
|
6
6
|
autoload :Report, 'torrone/report'
|
7
7
|
autoload :JARLoader, 'torrone/jar_loader'
|
8
8
|
autoload :Config, 'torrone/config'
|
9
|
-
autoload :
|
9
|
+
autoload :JsonInputStreamCreator, 'torrone/json_input_stream_creator'
|
10
|
+
autoload :ExportManager, 'torrone/export_manager'
|
11
|
+
autoload :ParamHashCreator, 'torrone/param_hash_creator'
|
12
|
+
autoload :RunManager, 'torrone/run_manager'
|
13
|
+
|
14
|
+
module Exporters
|
15
|
+
autoload :Base, 'torrone/exporters/base'
|
16
|
+
autoload :Pdf, 'torrone/exporters/pdf'
|
17
|
+
autoload :Xls, 'torrone/exporters/xls'
|
18
|
+
autoload :Csv, 'torrone/exporters/csv'
|
19
|
+
autoload :Html, 'torrone/exporters/html'
|
20
|
+
end
|
10
21
|
end
|
data/lib/torrone/config.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
module Torrone
|
2
|
+
class ExportManager
|
3
|
+
class << self
|
4
|
+
VALID_FORMATS = %i[pdf xml csv html].freeze
|
5
|
+
def export(jasper_print, format = :pdf)
|
6
|
+
raise 'Invalid Format' unless VALID_FORMATS.include?(format)
|
7
|
+
|
8
|
+
klass = "Torrone::Exporters::#{format.to_s.capitalize}".constantize
|
9
|
+
klass.new.export(jasper_print)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Torrone
|
2
|
+
module Exporters
|
3
|
+
class Base
|
4
|
+
def export(jasper_print)
|
5
|
+
_DefaultJasperReportsContext = Rjb::import 'net.sf.jasperreports.engine.DefaultJasperReportsContext'
|
6
|
+
_SimpleExporterInput = Rjb::import 'net.sf.jasperreports.export.SimpleExporterInput'
|
7
|
+
_ByteArrayOutputStream = Rjb::import 'java.io.ByteArrayOutputStream'
|
8
|
+
_SimpleOutputStreamExporterOutput = output_stream_exporter_class
|
9
|
+
exporter = exporter_class.new(_DefaultJasperReportsContext.getInstance());
|
10
|
+
exporter.setExporterInput(_SimpleExporterInput.new(jasper_print));
|
11
|
+
outputstream = _ByteArrayOutputStream.new
|
12
|
+
exporter.setExporterOutput(_SimpleOutputStreamExporterOutput.new(outputstream));
|
13
|
+
configuration = report_configuration_class.new;
|
14
|
+
|
15
|
+
yield(exporter,configuration) if block_given?
|
16
|
+
|
17
|
+
exporter.exportReport();
|
18
|
+
|
19
|
+
output = outputstream.toByteArray()
|
20
|
+
outputstream.flush()
|
21
|
+
outputstream.close()
|
22
|
+
output
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def output_stream_exporter_class
|
28
|
+
Rjb::import 'net.sf.jasperreports.export.SimpleOutputStreamExporterOutput'
|
29
|
+
end
|
30
|
+
|
31
|
+
def exporter_class
|
32
|
+
raise 'Not implemented error'
|
33
|
+
end
|
34
|
+
|
35
|
+
def report_configuration_class
|
36
|
+
raise 'Not implemented error'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Torrone
|
2
|
+
module Exporters
|
3
|
+
class Csv < Base
|
4
|
+
def export(jasper_print)
|
5
|
+
super(jasper_print) do |exporter, configuration|
|
6
|
+
#configuration.setOnePagePerSheet(true);
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def exporter_class
|
13
|
+
Rjb::import 'net.sf.jasperreports.engine.export.JRCsvExporter'
|
14
|
+
end
|
15
|
+
|
16
|
+
def report_configuration_class
|
17
|
+
Rjb::import 'net.sf.jasperreports.export.SimpleCsvReportConfiguration'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Torrone
|
2
|
+
module Exporters
|
3
|
+
class Html < Base
|
4
|
+
def export(jasper_print)
|
5
|
+
super(jasper_print) do |exporter, configuration|
|
6
|
+
#configuration.setOnePagePerSheet(true);
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def exporter_class
|
13
|
+
Rjb::import 'net.sf.jasperreports.engine.export.HtmlExporter'
|
14
|
+
end
|
15
|
+
|
16
|
+
def report_configuration_class
|
17
|
+
Rjb::import 'net.sf.jasperreports.export.SimpleHtmlReportConfiguration'
|
18
|
+
end
|
19
|
+
|
20
|
+
def output_stream_exporter_class
|
21
|
+
Rjb::import 'net.sf.jasperreports.export.SimpleHtmlExporterOutput'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Torrone
|
2
|
+
module Exporters
|
3
|
+
class Pdf < Base
|
4
|
+
def export(jasper_print)
|
5
|
+
super(jasper_print) do |exporter, configuration|
|
6
|
+
#configuration.setOnePagePerSheet(true);
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def exporter_class
|
13
|
+
Rjb::import 'net.sf.jasperreports.engine.export.JRPdfExporter'
|
14
|
+
end
|
15
|
+
|
16
|
+
def report_configuration_class
|
17
|
+
Rjb::import 'net.sf.jasperreports.export.SimplePdfReportConfiguration'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Torrone
|
2
|
+
module Exporters
|
3
|
+
class Xls < Base
|
4
|
+
def export(jasper_print)
|
5
|
+
super(jasper_print) do |exporter, configuration|
|
6
|
+
#configuration.setOnePagePerSheet(true);
|
7
|
+
configuration.setDetectCellType(true);//Set configuration as you like it!!
|
8
|
+
configuration.setCollapseRowSpan(false);
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def exporter_class
|
15
|
+
Rjb::import 'net.sf.jasperreports.engine.export.JRXlsExporter'
|
16
|
+
end
|
17
|
+
|
18
|
+
def report_configuration_class
|
19
|
+
Rjb::import 'net.sf.jasperreports.export.SimpleXlsReportConfiguration'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/torrone/jar_loader.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
require 'pry'
|
2
|
-
|
3
1
|
module Torrone
|
4
2
|
class JARLoader
|
5
3
|
def self.load
|
6
4
|
return if Rjb::loaded?
|
7
5
|
#RJM Loading
|
8
|
-
jars = Dir
|
9
|
-
|
6
|
+
jars = Dir["#{Config.jar_dir}/*.jar"].join(':')
|
7
|
+
|
10
8
|
Rjb::load(jars)
|
11
9
|
end
|
12
10
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Torrone
|
2
|
+
class ParamHashCreator
|
3
|
+
def initialize(ruby_params = {})
|
4
|
+
@ruby_params = ruby_params
|
5
|
+
end
|
6
|
+
|
7
|
+
def add(key, value)
|
8
|
+
@ruby_params[key] = value
|
9
|
+
end
|
10
|
+
|
11
|
+
def params_hash
|
12
|
+
_JRParameter = Rjb::import 'net.sf.jasperreports.engine.JRParameter'
|
13
|
+
_JsonQueryExecuterFactory = Rjb::import 'net.sf.jasperreports.engine.query.JsonQueryExecuterFactory'
|
14
|
+
_Locale = Rjb::import 'java.util.Locale'
|
15
|
+
_HashMap = Rjb::import 'java.util.HashMap'
|
16
|
+
|
17
|
+
_HashMap.new.tap do |parameters|
|
18
|
+
parameters.put(_JsonQueryExecuterFactory.JSON_DATE_PATTERN, "yyyy-MM-dd");
|
19
|
+
parameters.put(_JsonQueryExecuterFactory.JSON_NUMBER_PATTERN, "#,##0.##");
|
20
|
+
parameters.put(_JsonQueryExecuterFactory.JSON_LOCALE, _Locale.ENGLISH);
|
21
|
+
parameters.put(_JRParameter.REPORT_LOCALE, _Locale.US);
|
22
|
+
ruby_params.each do |key, value|
|
23
|
+
parameters.put(key, value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_accessor :ruby_params
|
31
|
+
end
|
32
|
+
end
|
data/lib/torrone/report.rb
CHANGED
@@ -6,46 +6,10 @@ module Torrone
|
|
6
6
|
class Report
|
7
7
|
|
8
8
|
class << self
|
9
|
-
def generate(report_name, options = {}
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
_JsonQueryExecuterFactory = Rjb::import 'net.sf.jasperreports.engine.query.JsonQueryExecuterFactory'
|
14
|
-
_JasperFillManager = Rjb::import 'net.sf.jasperreports.engine.JasperFillManager'
|
15
|
-
_JasperExportManager = Rjb::import 'net.sf.jasperreports.engine.JasperExportManager'
|
16
|
-
_JasperPrint = Rjb::import 'net.sf.jasperreports.engine.JasperPrint'
|
17
|
-
|
18
|
-
_Locale = Rjb::import 'java.util.Locale'
|
19
|
-
|
20
|
-
_HashMap = Rjb::import 'java.util.HashMap'
|
21
|
-
_StandardCharsets = Rjb::import 'java.nio.charset.StandardCharsets'
|
22
|
-
|
23
|
-
namespace, report_name = extract_namespace(report_name)
|
24
|
-
report_path = File.join(Config.jasper_dir || '.', namespace, report_name)
|
25
|
-
jrxml_file = "#{report_path}.jrxml"
|
26
|
-
|
27
|
-
jasper_file = Compiler.compile(jrxml_file);
|
28
|
-
|
29
|
-
datastream = JsonInputStream.to_stream(data)
|
30
|
-
|
31
|
-
parameters = _HashMap.new;
|
32
|
-
parameters.put(_JsonQueryExecuterFactory.JSON_DATE_PATTERN, "yyyy-MM-dd");
|
33
|
-
parameters.put(_JsonQueryExecuterFactory.JSON_NUMBER_PATTERN, "#,##0.##");
|
34
|
-
parameters.put(_JsonQueryExecuterFactory.JSON_LOCALE, _Locale.ENGLISH);
|
35
|
-
parameters.put(_JRParameter.REPORT_LOCALE, _Locale.US);
|
36
|
-
parameters.put('CNPJ_EMPRESA', '5--353');
|
37
|
-
parameters.put(_JsonQLQueryExecuterFactory.JSON_INPUT_STREAM, datastream)
|
38
|
-
jasperPrint = _JasperFillManager.fillReport(jasper_file, parameters);
|
39
|
-
_JasperExportManager.exportReportToPdfFile(jasperPrint,"reports/users.pdf");
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def extract_namespace(name)
|
45
|
-
parts = name.split('/')
|
46
|
-
jasper_name = parts.pop
|
47
|
-
namespace = parts.join('/')
|
48
|
-
[namespace, jasper_name]
|
9
|
+
def generate(report_name, options = {})
|
10
|
+
datastream = JsonInputStreamCreator.to_stream(options[:data])
|
11
|
+
jasperPrint = RunManager.fill_report(report_name, datastream, options[:params])
|
12
|
+
ExportManager.export(jasperPrint, options[:format])
|
49
13
|
end
|
50
14
|
end
|
51
15
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Torrone
|
2
|
+
class RunManager
|
3
|
+
class << self
|
4
|
+
def fill_report(report_name, datastream, params = {})
|
5
|
+
_JsonQLQueryExecuterFactory = Rjb::import 'net.sf.jasperreports.engine.query.JsonQLQueryExecuterFactory'
|
6
|
+
|
7
|
+
namespace, report_name = extract_namespace(report_name)
|
8
|
+
report_path = File.join(Config.jasper_dir || '.', namespace, report_name)
|
9
|
+
jrxml_file = "#{report_path}.jrxml"
|
10
|
+
|
11
|
+
jasper_file = Compiler.compile(jrxml_file);
|
12
|
+
_JasperFillManager = Rjb::import 'net.sf.jasperreports.engine.JasperFillManager'
|
13
|
+
|
14
|
+
params_creator = ParamHashCreator.new(params)
|
15
|
+
params_creator.add(_JsonQLQueryExecuterFactory.JSON_INPUT_STREAM, datastream)
|
16
|
+
jasperPrint = _JasperFillManager.fillReport(jasper_file, params_creator.params_hash);
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def extract_namespace(name)
|
22
|
+
parts = name.split('/')
|
23
|
+
jasper_name = parts.pop
|
24
|
+
namespace = parts.join('/')
|
25
|
+
[namespace, jasper_name]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/torrone/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torrone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Bruno
|
@@ -80,10 +80,17 @@ files:
|
|
80
80
|
- lib/torrone.rb
|
81
81
|
- lib/torrone/compiler.rb
|
82
82
|
- lib/torrone/config.rb
|
83
|
-
- lib/torrone/
|
83
|
+
- lib/torrone/export_manager.rb
|
84
|
+
- lib/torrone/exporters/base.rb
|
85
|
+
- lib/torrone/exporters/csv.rb
|
86
|
+
- lib/torrone/exporters/html.rb
|
87
|
+
- lib/torrone/exporters/pdf.rb
|
88
|
+
- lib/torrone/exporters/xls.rb
|
84
89
|
- lib/torrone/jar_loader.rb
|
85
|
-
- lib/torrone/
|
90
|
+
- lib/torrone/json_input_stream_creator.rb
|
91
|
+
- lib/torrone/param_hash_creator.rb
|
86
92
|
- lib/torrone/report.rb
|
93
|
+
- lib/torrone/run_manager.rb
|
87
94
|
- lib/torrone/version.rb
|
88
95
|
homepage: https://github.com/jonathanbruno/torrone
|
89
96
|
licenses:
|
File without changes
|