torrone 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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