Class: JDBCReport

Inherits:
JasperReport show all
Defined in:
backend/app/model/reports/jdbc_report.rb

Instance Attribute Summary

Attributes inherited from JasperReport

#data_source, #export_file, #format, #jrprint

Instance Method Summary (collapse)

Methods inherited from JasperReport

compile, finalize, #initialize, #report, report, report_base, #title

Methods included from ReportManager::Mixin

included

Constructor Details

This class inherits a constructor from JasperReport

Instance Method Details

- (Object) default_params



7
8
9
10
11
12
13
14
15
16
# File 'backend/app/model/reports/jdbc_report.rb', line 7

def default_params
  params = {} 
  params[JsonQueryExecuterFactory::JSON_DATE_PATTERN] ||= "yyyy-MM-dd"      
  params[JsonQueryExecuterFactory::JSON_NUMBER_PATTERN] ||= "#,##0.##"       
  params[JsonQueryExecuterFactory::JSON_LOCALE] ||= Locale::ENGLISH          
  params[JRParameter::REPORT_LOCALE] ||= ::Locale::US
  params["repositoryId"] = @repo_id.to_java(:int)
  params["basePath"] = @base_path
  params
end

- (Object) fill(params = {})



18
19
20
21
22
23
24
25
# File 'backend/app/model/reports/jdbc_report.rb', line 18

def fill( params = {} )
  params.merge!(default_params) 
  DB.open(false) do |db| 
      db.pool.hold do |conn| 
        @jrprint =  JasperFillManager.fill_report(report, java.util.HashMap.new(params), conn )
      end 
  end 
end

- (Object) render(format, params = {})



73
74
75
76
77
78
# File 'backend/app/model/reports/jdbc_report.rb', line 73

def render(format, params = {})
  if [:pdf, :html, :xlsx, :csv, :json ].include?(format) 
    fill(params)
    self.send("to_#{format.to_s}")
  end
end

- (Object) to_csv



38
39
40
41
42
43
44
45
46
# File 'backend/app/model/reports/jdbc_report.rb', line 38

def to_csv
  exporter = JRCsvExporter.new
  exporter.exporter_input = SimpleExporterInput.new(@jrprint)
  @export_file = Tempfile.new(SecureRandom.hex)
  exporter.exporter_output = SimpleWriterExporterOutput.new(@export_file.to_outputstream)
  exporter.export_report
  @export_file.rewind 
  @export_file.read.to_java_bytes 
end

- (Object) to_html



31
32
33
34
35
36
# File 'backend/app/model/reports/jdbc_report.rb', line 31

def to_html
  @export_file = Tempfile.new("location.html")
  JasperExportManager.export_report_to_html_file(@jrprint, @export_file.path)
  @export_file.rewind 
  @export_file.read.to_java_bytes 
end

- (Object) to_json



62
63
64
65
66
67
68
69
70
71
# File 'backend/app/model/reports/jdbc_report.rb', line 62

def to_json
   json = { "results" => [] }
   csv = CSV.parse(String.from_java_bytes(to_csv), :headers => true)
   csv.each do |row|
    result = {}
    row.each { |header,val| result[header.downcase] = val unless header.nil?  }
    json["results"] <<  result 
   end
   JSON(json).to_java_bytes 
end

- (Object) to_pdf



27
28
29
# File 'backend/app/model/reports/jdbc_report.rb', line 27

def to_pdf
   JasperExportManager.export_report_to_pdf(@jrprint)
end

- (Object) to_xlsx



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'backend/app/model/reports/jdbc_report.rb', line 48

def to_xlsx
  exporter = JRXlsxExporter.new
  exporter.exporter_input = SimpleExporterInput.new(@jrprint)
  @export_file = Tempfile.new(SecureRandom.hex)
  exporter.exporter_output = SimpleOutputStreamExporterOutput.new(@export_file.to_outputstream)
  configuration = SimpleXlsxReportConfiguration.new 
  configuration.one_page_per_sheet = false 
  exporter.configuration = configuration
  exporter.export_report
  @export_file.rewind 
  @export_file.read.to_java_bytes 

end