class Birt::Core::RptDesign

Attributes

data_sets[RW]

数据集

data_sources[RW]

数据源

display_name[RW]

报表的名字

reports[RW]

图表

rpt_design_path[RW]

design文件路径

Public Class Methods

new(rpt_design_path) click to toggle source
# File lib/birt/core/rpt_design.rb, line 19
def initialize(rpt_design_path)
  self.rpt_design_path = rpt_design_path
  @data_sources, @data_sets = {}, {}
  @reports = {tables: {}}
end

Public Instance Methods

parse_rpt() click to toggle source

解析文件

# File lib/birt/core/rpt_design.rb, line 35
def parse_rpt
  _root = REXML::Document.new(File.read(self.rpt_design_path)).root

  #报表名称
  @display_name = self.display_name(_root)

  #数据源
  _root.each_element(xpath = '/report/data-sources/oda-data-source') do |item|
    p @data_sources[item.attribute(:name).value] = Birt::Core::DataSource.new(item)
  end

  #数据集
  _root.each_element(xpath='/report/data-sets/oda-data-set') do |item|
    @data_sets[item.attribute(:name).value] = Birt::Core::DataSet.new(item) do |data_set|
      data_set.data_source = @data_sources[item.get_elements("property[@name='dataSource']")[0].text]
    end
  end

  #报表
  _root.each_element(xpath='/report/body/table') do |item|
    @reports[:tables]["#{item.attribute(:id).value}"] = Birt::Core::TableReport.new(item) do |report|
      report.data_set = @data_sets[item.get_elements("property[@name='dataSet']")[0].text]
    end
  end
end