jasper-command-line 0.3.2 → 0.3.3
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.
- data/lib/jasper-command-line/jasper.rb +47 -41
- data/lib/jasper-command-line/version.rb +1 -1
- metadata +2 -2
@@ -23,64 +23,40 @@
|
|
23
23
|
|
24
24
|
|
25
25
|
module JasperCommandLine
|
26
|
-
classpath = '.'
|
27
|
-
Dir["#{File.dirname(__FILE__)}/java/*.jar"].each do |jar|
|
28
|
-
classpath << File::PATH_SEPARATOR + File.expand_path(jar)
|
29
|
-
end
|
30
|
-
|
31
|
-
Dir["lib/*.jar"].each do |jar|
|
32
|
-
classpath << File::PATH_SEPARATOR + File.expand_path(jar)
|
33
|
-
end
|
34
|
-
|
35
|
-
Rjb::load( classpath, ['-Djava.awt.headless=true','-Xms128M', '-Xmx256M'] )
|
36
|
-
|
37
|
-
JRException = Rjb::import 'net.sf.jasperreports.engine.JRException'
|
38
|
-
JasperCompileManager = Rjb::import 'net.sf.jasperreports.engine.JasperCompileManager'
|
39
|
-
JasperExportManager = Rjb::import 'net.sf.jasperreports.engine.JasperExportManager'
|
40
|
-
JasperFillManager = Rjb::import 'net.sf.jasperreports.engine.JasperFillManager'
|
41
|
-
JasperPrint = Rjb::import 'net.sf.jasperreports.engine.JasperPrint'
|
42
|
-
JRXmlUtils = Rjb::import 'net.sf.jasperreports.engine.util.JRXmlUtils'
|
43
|
-
# This is here to avoid the "already initialized constant QUERY_EXECUTER_FACTORY_PREFIX" warnings.
|
44
|
-
JRXPathQueryExecuterFactory = silence_warnings{Rjb::import 'net.sf.jasperreports.engine.query.JRXPathQueryExecuterFactory'}
|
45
|
-
InputSource = Rjb::import 'org.xml.sax.InputSource'
|
46
|
-
StringReader = Rjb::import 'java.io.StringReader'
|
47
|
-
HashMap = Rjb::import 'java.util.HashMap'
|
48
|
-
ByteArrayInputStream = Rjb::import 'java.io.ByteArrayInputStream'
|
49
|
-
JavaString = Rjb::import 'java.lang.String'
|
50
|
-
JFreeChart = Rjb::import 'org.jfree.chart.JFreeChart'
|
51
|
-
|
52
26
|
module Jasper
|
53
27
|
def self.render_pdf(jasper_file, datasource, parameters, options)
|
28
|
+
initialize_engine
|
29
|
+
|
54
30
|
options ||= {}
|
55
31
|
parameters ||= {}
|
56
32
|
jrxml_file = jasper_file.sub(/\.jasper$/, ".jrxml")
|
57
33
|
|
58
34
|
sign_options = options.delete(:signature)
|
59
35
|
|
60
|
-
begin
|
36
|
+
# begin
|
61
37
|
# Convert the ruby parameters' hash to a java HashMap.
|
62
38
|
# Pay attention that, for now, all parameters are converted to string!
|
63
|
-
jasper_params =
|
39
|
+
jasper_params = @hashMap.new
|
64
40
|
parameters.each do |k,v|
|
65
|
-
jasper_params.put(
|
41
|
+
jasper_params.put(@javaString.new(k.to_s), @javaString.new(v.to_s))
|
66
42
|
end
|
67
43
|
|
68
44
|
# Compile it, if needed
|
69
45
|
if !File.exist?(jasper_file) || (File.exist?(jrxml_file) && File.mtime(jrxml_file) > File.mtime(jasper_file))
|
70
|
-
|
46
|
+
@jasperCompileManager.compileReportToFile(jrxml_file, jasper_file)
|
71
47
|
end
|
72
48
|
|
73
49
|
datasource = datasource.to_xml(options).to_s unless datasource.is_a?(String)
|
74
50
|
|
75
51
|
# Fill the report
|
76
|
-
input_source =
|
77
|
-
input_source.setCharacterStream(
|
52
|
+
input_source = @inputSource.new
|
53
|
+
input_source.setCharacterStream(@stringReader.new(datasource))
|
78
54
|
data_document = silence_warnings do
|
79
55
|
# This is here to avoid the "already initialized constant DOCUMENT_POSITION_*" warnings.
|
80
|
-
|
56
|
+
@jRXmlUtils._invoke('parse', 'Lorg.xml.sax.InputSource;', input_source)
|
81
57
|
end
|
82
58
|
|
83
|
-
jasper_params.put(
|
59
|
+
jasper_params.put(@jRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, data_document)
|
84
60
|
|
85
61
|
temp_file = Tempfile.new(['pdf-', '.pdf'])
|
86
62
|
file = temp_file.path
|
@@ -99,10 +75,10 @@ module JasperCommandLine
|
|
99
75
|
copy_file = copy_temp_file.path
|
100
76
|
copy_temp_file.close!
|
101
77
|
|
102
|
-
jasper_params.put
|
103
|
-
jasper_print =
|
78
|
+
jasper_params.put @javaString.new('copy_number'), @javaString.new(copy.to_s)
|
79
|
+
jasper_print = @jasperFillManager.fillReport(jasper_file, jasper_params)
|
104
80
|
|
105
|
-
File.open(copy_file, 'wb') { |f| f.write
|
81
|
+
File.open(copy_file, 'wb') { |f| f.write @jasperExportManager._invoke('exportReportToPdf', 'Lnet.sf.jasperreports.engine.JasperPrint;', jasper_print) }
|
106
82
|
|
107
83
|
merge_pdf_command_line << " #{copy_file}"
|
108
84
|
|
@@ -148,11 +124,41 @@ module JasperCommandLine
|
|
148
124
|
created_files.each { |file| File.unlink file if File.exists?(file) }
|
149
125
|
end
|
150
126
|
|
151
|
-
rescue Exception => e
|
152
|
-
|
127
|
+
# rescue Exception => e
|
128
|
+
# JasperCommandLine.logger.error e.message + "\n " + e.backtrace.join("\n ")
|
153
129
|
|
154
|
-
|
155
|
-
end
|
130
|
+
# abort e.message
|
131
|
+
# end
|
156
132
|
end
|
133
|
+
|
134
|
+
private
|
135
|
+
|
136
|
+
def self.initialize_engine
|
137
|
+
classpath = '.'
|
138
|
+
Dir["#{File.dirname(__FILE__)}/java/*.jar"].each do |jar|
|
139
|
+
classpath << File::PATH_SEPARATOR + File.expand_path(jar)
|
140
|
+
end
|
141
|
+
|
142
|
+
Dir["lib/*.jar"].each do |jar|
|
143
|
+
classpath << File::PATH_SEPARATOR + File.expand_path(jar)
|
144
|
+
end
|
145
|
+
|
146
|
+
Rjb::load( classpath, ['-Djava.awt.headless=true','-Xms128M', '-Xmx256M'] )
|
147
|
+
|
148
|
+
@jRException = Rjb::import 'net.sf.jasperreports.engine.JRException'
|
149
|
+
@jasperCompileManager = Rjb::import 'net.sf.jasperreports.engine.JasperCompileManager'
|
150
|
+
@jasperExportManager = Rjb::import 'net.sf.jasperreports.engine.JasperExportManager'
|
151
|
+
@jasperFillManager = Rjb::import 'net.sf.jasperreports.engine.JasperFillManager'
|
152
|
+
@jasperPrint = Rjb::import 'net.sf.jasperreports.engine.JasperPrint'
|
153
|
+
@jRXmlUtils = Rjb::import 'net.sf.jasperreports.engine.util.JRXmlUtils'
|
154
|
+
# This is here to avoid the "already initialized constant QUERY_EXECUTER_FACTORY_PREFIX" warnings.
|
155
|
+
@jRXPathQueryExecuterFactory = silence_warnings{Rjb::import 'net.sf.jasperreports.engine.query.JRXPathQueryExecuterFactory'}
|
156
|
+
@inputSource = Rjb::import 'org.xml.sax.InputSource'
|
157
|
+
@stringReader = Rjb::import 'java.io.StringReader'
|
158
|
+
@hashMap = Rjb::import 'java.util.HashMap'
|
159
|
+
@byteArrayInputStream = Rjb::import 'java.io.ByteArrayInputStream'
|
160
|
+
@javaString = Rjb::import 'java.lang.String'
|
161
|
+
@jFreeChart = Rjb::import 'org.jfree.chart.JFreeChart'
|
162
|
+
end
|
157
163
|
end
|
158
164
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasper-command-line
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rjb
|