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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6222ac1c42a1d255b0686030b7914ae5ddbbeaafb35d0529f507c0dcf99b57a4
4
- data.tar.gz: 5327bfa684effdf07b20819787efd8a4bb4a8ec6833b6ba80ce9d289a21f4358
3
+ metadata.gz: 6f2b7bd828e7f01aee6eb7575092e6e1d37a546c2bea8b54e3c0f8328e1bf625
4
+ data.tar.gz: 1980156b0c9046ededf76308dd4e4ce021395714b2b4929c7492ffdbef8db216
5
5
  SHA512:
6
- metadata.gz: 6bede099b2c68baf591bbe31d297d30e555d49123288a896c274cfcb3875802f5d52a2a7ac686d1a6de116e3b7405110b1d584b9f4d4b59735f72291e5019034
7
- data.tar.gz: b8c96b912a1df032cf98ffa06690d791d1c7025605640b826f8ae47957222c29cfd1be4246286d33f6f86acf0e542b064e8633de49f0c547bca663606ac2c79b
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
- { email: 'foo@bar.com' },
29
- { email: 'foo2@bar.com'},
30
- { email: 'foo3@bar.com'}]
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 generates a report file called emails.pdf
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 :JsonInputStream, 'torrone/json_input_stream'
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
@@ -8,6 +8,8 @@ module Torrone
8
8
 
9
9
  def self.configure
10
10
  conf = Configuration.new
11
+ conf.jar_dir = "#{File.dirname(__FILE__)}/../../jars"
12
+
11
13
  yield conf
12
14
  @jar_dir = conf.jar_dir if conf.jar_dir
13
15
  @jasper_dir = conf.jasper_dir if conf.jasper_dir
@@ -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
@@ -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.glob("#{Config.jar_dir}/*.jar").join(':')
9
- #print jars
6
+ jars = Dir["#{Config.jar_dir}/*.jar"].join(':')
7
+
10
8
  Rjb::load(jars)
11
9
  end
12
10
  end
@@ -1,7 +1,7 @@
1
1
  require 'json'
2
2
 
3
3
  module Torrone
4
- class JsonInputStream
4
+ class JsonInputStreamCreator
5
5
  class << self
6
6
  def to_stream(data)
7
7
  _String = Rjb::import 'java.lang.String'
@@ -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
@@ -6,46 +6,10 @@ module Torrone
6
6
  class Report
7
7
 
8
8
  class << self
9
- def generate(report_name, options = {}, params = {})
10
- data = options[:data]
11
- _JRParameter = Rjb::import 'net.sf.jasperreports.engine.JRParameter'
12
- _JsonQLQueryExecuterFactory = Rjb::import 'net.sf.jasperreports.engine.query.JsonQLQueryExecuterFactory'
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
@@ -1,3 +1,3 @@
1
1
  module Torrone
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
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.0
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/exporters/pdf_exporter.rb
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/json_input_stream.rb
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