jasper-bridge 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,41 @@
1
+ = jasper-bridge
2
+
3
+ A bridge from RubyOnRails to Jasper.
4
+
5
+ == Requires
6
+
7
+ 1. Java (JDK) - http://www.oracle.com/technetwork/java/javase/downloads/index.html
8
+
9
+ == Install
10
+
11
+ In Gemfile:
12
+ gem 'jasper-bridge'
13
+
14
+ Run 'bundle install' or in console 'gem install jasper-bridge'.
15
+
16
+ == Use
17
+
18
+ 1.In controller class:
19
+
20
+ require 'jasper-bridge'
21
+ class ProductsController < ApplicationController
22
+ include Jasper::Bridge
23
+ ...
24
+ end
25
+
26
+ 2.Put jasper file in "#{Rails.root}/reports" directory.
27
+
28
+ 3.In action of the controller, call method 'send_doc' to response the report. Like the example:
29
+
30
+ def index
31
+ @produtos = Produto.all
32
+ send_doc(@products.to_xml, '/products/product', 'Products.jasper', "Products", params[:output_type])
33
+ end
34
+
35
+ == Jasper Lib Versions
36
+
37
+ The java libs on this gem is from JasperReports 3.7.6. So reports must be compiled in the same version.
38
+
39
+ == Copyright
40
+ Copyright (c) 2011 paulopessoa. See LICENSE.txt for further details.
41
+
@@ -0,0 +1,9 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'lib' << 'test'
6
+ t.test_files = Dir["test/**/*_test.rb"]
7
+ t.pattern = 'test/**/test_*.rb'
8
+ t.verbose = true
9
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ require "jasper-bridge/version"
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "jasper-bridge"
8
+ s.version = Jasper::Bridge::VERSION
9
+ s.authors = ["Paulo Pessoa"]
10
+ s.email = ["paulopessoa@gmail.com"]
11
+ s.homepage = "https://github.com/paulopessoa/jasper-bridge"
12
+ s.summary = %q{Bridge from RoR to Jasper by IO.popen}
13
+ s.description = %q{Bridge from RoR to Jasper by IO.popen}
14
+
15
+ s.rubyforge_project = "jasper-bridge"
16
+
17
+ # s.files = `git ls-files`.split("\n")
18
+ s.files = Dir["{lib/**/*.rb,README.rdoc,test/**/*.rb,Rakefile,*.gemspec,jasper/bin/**,jasper/lib/**}"]
19
+
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ # s.test_files = Dir["{test/*}"]
22
+
23
+ # s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ # s.executables = ["jb"]
25
+
26
+ s.require_paths = ["lib"]
27
+ end
@@ -0,0 +1,2 @@
1
+ libs.CopyLibs.classpath=\
2
+ ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
Binary file
@@ -0,0 +1,33 @@
1
+ module Jasper
2
+
3
+ class Generator
4
+ include Config
5
+
6
+ def self.generate_report(xml_data, report_design, output_type, select_criteria)
7
+ report_design << '.jasper' if !report_design.match(/\.jasper$/)
8
+
9
+ dir = File.expand_path("../../",__FILE__)
10
+ classpath = "#{dir}/jasper/bin"
11
+
12
+ case CONFIG['host']
13
+ when /mswin32/,/mingw32/
14
+ Dir.foreach("#{dir}/jasper/lib") do |file|
15
+ classpath << ";#{dir}/jasper/lib/"+file if (file != '.' and file != '..' and file.match(/\.jar$/))
16
+ end
17
+ else
18
+ Dir.foreach("#{dir}/jasper/lib") do |file|
19
+ classpath << ":#{dir}/jasper/lib/"+file if (file != '.' and file != '..' and file.match(/\.jar$/))
20
+ end
21
+ end
22
+
23
+ pipe = IO.popen "java -cp \"#{classpath}\" XmlJasperInterface -o:#{output_type} -f:reports/#{report_design} -x:#{select_criteria}", "w+b"
24
+ pipe.write xml_data
25
+ pipe.close_write
26
+ result = pipe.read
27
+ pipe.close
28
+ result
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,34 @@
1
+ require "jasper-bridge/version"
2
+ require "generator"
3
+
4
+ module Jasper
5
+ module Bridge
6
+
7
+ protected
8
+
9
+ def cache_hack
10
+ if ENV['HTTP_USER_AGENT'] =~ /msie/i
11
+ response.headers['Pragma'] = ''
12
+ response.headers['Cache-Control'] = ''
13
+ else
14
+ response.headers['Pragma'] = 'no-cache'
15
+ response.headers['Cache-Control'] = 'no-cache, must-revalidate'
16
+ end
17
+ end
18
+
19
+ def send_doc(xml, xml_start_path, report, filename, output_type = 'pdf')
20
+ mime_type = "application/#{output_type}"
21
+
22
+ cache_hack
23
+ send_data Generator.generate_report(xml, report, output_type, xml_start_path),
24
+ :filename => "#{filename}.#{output_type}",
25
+ :type => mime_type,
26
+ :disposition => 'inline' #'attachment'
27
+ end
28
+
29
+ def self.teste
30
+ p 'dir=' + File.expand_path("../../",__FILE__)
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,5 @@
1
+ module Jasper
2
+ module Bridge
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+
12
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
13
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
14
+
15
+ class Test::Unit::TestCase
16
+ end
@@ -0,0 +1,19 @@
1
+ require 'helper'
2
+ require 'test/unit'
3
+ require 'jasper-bridge'
4
+
5
+ class TestGenerate < Test::Unit::TestCase
6
+
7
+ def test_generate_report_pdf
8
+ xml_data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<produtos>\n <produto>\n <cod-produto>1</cod-produto>\n <created-at>2011-09-19T14:34:15Z</created-at>\n <nome>bolacha</nome>\n <updated-at>2011-09-19T14:34:15Z</updated-at>\n </produto>\n <produto>\n <cod-produto>2</cod-produto>\n <created-at>2011-09-19T17:33:55Z</created-at>\n <nome>biscoito</nome>\n <updated-at>2011-09-19T17:33:55Z</updated-at>\n </produto>\n</produtos>\n"
9
+ result = Jasper::Generator.generate_report(xml_data, 'Produtos.jasper', 'pdf', '/produtos/produto')
10
+ assert result != nil
11
+ end
12
+
13
+ def test_generate_report_rtf
14
+ xml_data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<produtos>\n <produto>\n <cod-produto>1</cod-produto>\n <created-at>2011-09-19T14:34:15Z</created-at>\n <nome>bolacha</nome>\n <updated-at>2011-09-19T14:34:15Z</updated-at>\n </produto>\n <produto>\n <cod-produto>2</cod-produto>\n <created-at>2011-09-19T17:33:55Z</created-at>\n <nome>biscoito</nome>\n <updated-at>2011-09-19T17:33:55Z</updated-at>\n </produto>\n</produtos>\n"
15
+ result = Jasper::Generator.generate_report(xml_data, 'Produtos.jasper', 'rtf', '/produtos/produto')
16
+ assert result != nil
17
+ end
18
+
19
+ end
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jasper-bridge
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Paulo Pessoa
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-16 00:00:00.000000000 -03:00
13
+ default_executable:
14
+ dependencies: []
15
+ description: Bridge from RoR to Jasper by IO.popen
16
+ email:
17
+ - paulopessoa@gmail.com
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - lib/generator.rb
23
+ - lib/jasper-bridge.rb
24
+ - lib/jasper-bridge/version.rb
25
+ - README.rdoc
26
+ - test/test_generate.rb
27
+ - test/helper.rb
28
+ - Rakefile
29
+ - jasper-bridge.gemspec
30
+ - jasper/bin/XmlJasperInterface.class
31
+ - jasper/lib/xalan.jar
32
+ - jasper/lib/nblibraries.properties
33
+ - jasper/lib/commons-beanutils-1.8.2.jar
34
+ - jasper/lib/jasperreports-3.7.6.jar
35
+ - jasper/lib/iText-2.1.7.jar
36
+ - jasper/lib/commons-collections-3.2.1.jar
37
+ - jasper/lib/commons-digester-1.7.jar
38
+ - jasper/lib/commons-logging-1.1.jar
39
+ has_rdoc: true
40
+ homepage: https://github.com/paulopessoa/jasper-bridge
41
+ licenses: []
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project: jasper-bridge
60
+ rubygems_version: 1.6.2
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: Bridge from RoR to Jasper by IO.popen
64
+ test_files: []