birt-core 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7445f67e241fc3aba7fb0ca91b58018eabbb6f8c
4
- data.tar.gz: 71c8771fdd739b7325d824d7395bbc0c31d0b6d4
3
+ metadata.gz: 1dd88b8f71e985e806347414c5548bcd9ce5013f
4
+ data.tar.gz: ce5bfa174ba56eba559f037b5245d7379754149c
5
5
  SHA512:
6
- metadata.gz: eec2f19c683e4c8fce0caa0521899ade9753d9d72f746b956276dc5bd65415574367333d10ff760546f17d587f7ef26fcc5966cb9fe006e9fac09605ce78bd1e
7
- data.tar.gz: 9589b28f101cb4ce3fdad6824d8a665c049780cfbf5601c3fc58e40720097ec67a02162d180f2e1178fdb4c6d7ae04bf1d031106ce7e5f33f7619a076f713230
6
+ metadata.gz: 403653f667629407dcdbd2ec7a3c5e517c6d40639cd5e64b920b94f50e3a425bd1885a124d02e63c009a2f556a7b219a4a18da51832842448b2d04b9b131e04b
7
+ data.tar.gz: f13c91555c88b2c98ecc02ee3ee0bc0e7310b2a9c4e3d164f250df1e279fa994a3859188d42571c9a2f8c6413aa20e5221d981432ad72c544bde91625b0c7861
data/.gitignore CHANGED
@@ -8,3 +8,5 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  /.idea/
11
+ *.gem
12
+ /birt/reports/*.rptdesign
data/.project ADDED
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>birt-core</name>
4
+ <comment></comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ </buildSpec>
9
+ <natures>
10
+ <nature>org.eclipse.birt.report.designer.ui.reportprojectnature</nature>
11
+ </natures>
12
+ </projectDescription>
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source 'https://ruby.taobao.org'
2
2
 
3
3
  # Specify your gem's dependencies in birt-core.gemspec
4
4
  gemspec
data/birt-core.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://github.com/mumaoxi/birt-core"
15
15
  spec.license = "MIT"
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|birt)/}) }
18
18
  spec.bindir = "exe"
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
@@ -25,4 +25,6 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.9"
27
27
  spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "core_extend", "~> 0.1.5"
29
+ spec.add_development_dependency "mysql2","~> 0.3.19"
28
30
  end
@@ -0,0 +1,27 @@
1
+ class Birt::Core::DataSet
2
+
3
+ attr_accessor :name
4
+ attr_accessor :columns
5
+ attr_accessor :query_text
6
+ attr_accessor :query_result
7
+ attr_accessor :data_source
8
+
9
+ def initialize(xml_element)
10
+ self.columns = Array.new
11
+ if xml_element
12
+ self.name = xml_element.attribute(:name).value
13
+ xml_element.get_elements("list-property[@name='resultSet']/structure/property[@name='name']").each do |column|
14
+ self.columns.push column.text
15
+ end
16
+ self.query_text = xml_element.get_elements("xml-property[@name='queryText']")[0].text.gsub("\n", ' ')
17
+ end
18
+ yield(self) if block_given?
19
+ end
20
+
21
+ #开始查询
22
+ def query
23
+ Birt::Core::Mysql.query(self.data_source, query_text).each do |row|
24
+ p row
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ class Birt::Core::DataSource
2
+
3
+ attr_accessor :name
4
+ attr_accessor :host
5
+ attr_accessor :port
6
+ attr_accessor :username
7
+ attr_accessor :password
8
+ attr_accessor :database
9
+
10
+ def initialize(xml_element)
11
+ if xml_element
12
+ self.name = xml_element.attribute(:name).value
13
+ self.host = xml_element.get_elements("property[@name='odaURL']")[0].text
14
+ self.username = xml_element.get_elements("property[@name='odaUser']")[0].text
15
+ self.password = Base64.decode64 xml_element.get_elements("encrypted-property[@name='odaPassword']")[0].text
16
+ end
17
+ yield(self) if block_given?
18
+ end
19
+
20
+ def host=(host)
21
+ host_port = host.gsub('jdbc:mysql://', '').split(':')
22
+ port_database = host_port[1].split('/')
23
+ @host = host_port[0]
24
+ @port = port_database[0]
25
+ @database = port_database[1]
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ class Birt::Core::Mysql
2
+
3
+ def self.client(data_source)
4
+ @client ||=Mysql2::Core::Client.new(
5
+ host: data_source.host,
6
+ port: data_source.port,
7
+ username: data_source.username,
8
+ password: data_source.password,
9
+ database: data_source.database
10
+ )
11
+ end
12
+
13
+ def self.query(data_source, query_text)
14
+ client = client(data_source)
15
+ results = client.query(query_text)
16
+ yield(results) if block_given?
17
+ results
18
+ end
19
+ end
@@ -0,0 +1,2 @@
1
+ class Birt::Core::TableReport
2
+ end
@@ -0,0 +1,36 @@
1
+ class Birt::Core::RptDesign
2
+
3
+ #design文件路径
4
+ attr_accessor :rpt_design_path
5
+ attr_accessor :data_sources
6
+ attr_accessor :data_sets
7
+
8
+ def initialize(rpt_design_path)
9
+ self.rpt_design_path = rpt_design_path
10
+ self.data_sources = Hash.new
11
+ self.data_sets = Hash.new
12
+ end
13
+
14
+ #解析文件
15
+ def parse_rpt
16
+ _root = REXML::Document.new(File.read(self.rpt_design_path)).root
17
+
18
+ #数据源
19
+ _root.each_element(xpath = '/report/data-sources/oda-data-source') do |item|
20
+ self.data_sources[item.attribute(:name).value] = Birt::Core::DataSource.new(item)
21
+ end
22
+
23
+ #数据集
24
+ _root.each_element(xpath='/report/data-sets/oda-data-set') do |item|
25
+ self.data_sets[item.attribute(:name).value] = Birt::Core::DataSet.new(item) do |data_set|
26
+ data_set.data_source = self.data_sources[item.get_elements("property[@name='dataSource']")[0].text]
27
+ data_set.query
28
+ end
29
+ end
30
+
31
+ p self.data_sources
32
+ p self.data_sets
33
+
34
+ end
35
+
36
+ end
@@ -1,5 +1,5 @@
1
1
  module Birt
2
2
  module Core
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
data/lib/birt/core.rb CHANGED
@@ -1,4 +1,10 @@
1
1
  require "birt/core/version"
2
+ require 'rexml/document'
3
+ require 'base64'
4
+ require 'mysql2'
5
+
6
+ Dir.glob("#{File.dirname(__FILE__)}/core/*.rb") { |f| require f }
7
+ Dir.glob("#{File.dirname(__FILE__)}/core/report/*.rb") { |f| require f }
2
8
 
3
9
  module Birt
4
10
  module Core
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: birt-core
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
  - Stream
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-31 00:00:00.000000000 Z
11
+ date: 2015-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: core_extend
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.1.5
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.5
55
+ - !ruby/object:Gem::Dependency
56
+ name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.3.19
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.3.19
41
69
  description: birt report design parser
42
70
  email:
43
71
  - 15201280641@qq.com
@@ -46,6 +74,7 @@ extensions: []
46
74
  extra_rdoc_files: []
47
75
  files:
48
76
  - ".gitignore"
77
+ - ".project"
49
78
  - CODE_OF_CONDUCT.md
50
79
  - Gemfile
51
80
  - LICENSE
@@ -56,6 +85,11 @@ files:
56
85
  - bin/setup
57
86
  - birt-core.gemspec
58
87
  - lib/birt/core.rb
88
+ - lib/birt/core/data_set.rb
89
+ - lib/birt/core/data_source.rb
90
+ - lib/birt/core/mysql.rb
91
+ - lib/birt/core/report/table_report.rb
92
+ - lib/birt/core/rpt_design.rb
59
93
  - lib/birt/core/version.rb
60
94
  homepage: https://github.com/mumaoxi/birt-core
61
95
  licenses: