Class: Rasper::Report

Inherits:
Object
  • Object
show all
Extended by:
Locale
Defined in:
lib/rasper/report.rb

Class Method Summary collapse

Methods included from Locale

run_with_locale

Class Method Details

.generate(jasper_name, data, params = {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rasper/report.rb', line 19

def generate(jasper_name, data, params = {})
  run_with_locale do
    namespace, jasper_name = extract_namespace(jasper_name)
    set_file_resolver(params, namespace)
    file_name = File.join(Config.jasper_dir || '.', namespace,
      jasper_name + '.jasper')
    jasper_content = File.read(file_name)
    data = { jasper_name => data }.to_xml
    xpath_criteria = "/hash/#{jasper_name}/#{jasper_name.singularize}"
    source = JRXmlDataSource.new(
        ByteArrayInputStream.new(data.to_java_bytes), xpath_criteria)
    input = BufferedInputStream.new(
        ByteArrayInputStream.new(jasper_content.to_java_bytes))
    String.from_java_bytes(
      JasperRunManager.runReportToPdf(input, params, source))
  end
end