class Twb::Analysis::DocumentedFieldsCSVEmitter

Attributes

csvFileName[R]
csvRecords[R]
dsCount[R]
fieldsCount[R]

Public Class Methods

csvFileNaame() click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 58
def self.csvFileNaame
  @@csvFileName
end
csvFileType() click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 54
def self.csvFileType
  @@csvFileType
end
csvHeader() click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 50
def self.csvHeader
  @@csvHeader
end
new() click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 39
def initialize
  @csvFile     = CSV.open(@@csvFileName,'w')
  @csvFile     << @@csvHeader
  @csvRecords  = Set.new
  puts "Opened: #{!@csvFile.nil?} - #{@@csvFileName}"
  # --
  @recNum      = 0
  @dsCount     = 0
  @fieldsCount = 0
end

Public Instance Methods

cleanup() click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 201
def cleanup
  @csvFile.close unless @csvFile.nil?
end
emitFields(fields) click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 148
def emitFields fields
  fields.each do |fieldName,props|
    # puts "FIELD::  %-40s  :: %s" % [fieldName,props.inspect]
    # class = props[]
    csvRec = [ @recNum+=1,
               @twb.name,
               @twb.dir,
               @dsname,
               fieldName,
               props[:type],
               props['hidden'],
               props[:columnField],
               props[:calculatedField],
               props[:dbField],
               props[:mappedField],
               props[:metadataField]
             ]
    @csvFile << csvRec
    @csvRecords.add csvRec
  end
end
emitTech(dataSource, fieldName, type, properties) click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 185
def emitTech dataSource, fieldName, type, properties
  # puts "XX #{dataSource.uiname} :: #{fieldName} #{}  :: #{type} :: #{properties}"
  @recNum+=1
  properties.each do |name,value|
    @csvFileTech << [ @recNum,
                      @twb.name,
                      @twb.dir,
                      dataSource.uiname,
                      fieldName,
                      type,
                      name,
                      value
                    ]
  end
end
processTwb(twb) click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 62
def processTwb twb
  @twb = nil
  @twb         = twb                    if twb.instance_of? Twb::Workbook
  @twb         = Twb::Workbook.new(twb) if twb.instance_of? String
  raise ArgumentError.new("ERROR in Workbok processing: '#{twb}' must be a Workbook (class) or the name of a Workbook (String), is a #{twb.class} \n ") unless @twb.is_a? Twb::Workbook
  # --
  dss = @twb.datasources
  dss.each do |ds|
    @dsname = ds.uiname
    # puts "\n    -- #{ds.uiname} "
    # tables = Set.new
    fields = {}
    @dsCount += 1
    fclasses = Set.new
    ds.localFields.each do |field|
      recordFieldFull field, :local
      # recordField( fields, field, {:type=>:local,:columnField=>true,:hidden=>field.hidden} )
      # emitTech( ds,     field.uiname, 'Local', field.properties)
      # recordTech( field, 'LocalA')
    end
    ds.columnFields.each do |field|
      recordFieldFull field, :column
      # recordField( fields, field, {:type=>'column',:columnField=>true,:hidden=>field.hidden} )
      # emitTech( ds,     field.uiname, 'Column', field.properties)
      # recordTech( field, 'ColumnA')
    end
    ds.calculatedFields.each do |field|
      recordFieldFull field, :calc
      # puts "WWW #{field.class}  :: #{field} ::prop:: #{field.properties.class} :: #{field.properties}"
      # recordField( fields, field, {:type=>'calc',:calculatedField=>true,:hidden=>field.hidden} )
      # emitTech( ds,     field.uiname, 'Calculated', field.properties)
      # recordTech( field, 'CalcA')
    end
    ds.metadataFields.each do |field|
      recordFieldFull field, :metadata
      # recordField( fields, field,   {:type=>'metadata',:metadataField=>true} )
      # emitTech( ds,     field.uiname, 'MetaData', field.properties)
      # recordTech( field, 'MetadataA')
    end
    ds.dbFields.each do |field|
      recordFieldFull field, :db
      # recordField( fields, field,    {:type=>'database',:dbField=>true} )
      # emitTech( ds,     field.uiname, 'Db', field.properties)
      # recordTech( field, 'DbA')
    end
    ds.mappedFields.each do |field|
      recordFieldFull field, :mapped
      # recordField( fields, field,    {:type=>'mapped',:mappedField=>true} )
      # emitTech( ds,     field.uiname, 'Mapped', field.properties)
      # recordTech( field, 'MappedA')
    end
    emitFields(fields)
  end
end
recordField(fields, field, props) click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 138
def recordField fields, field, props
  # puts "%-65s  :: %s " % [fieldName,props]
  return if field.uiname.nil?
  if fields.has_key? field.uiname
    fields[field.uiname].merge! field.properties
  else
    fields[field.uiname] = field.properties
  end
end
recordFieldFull(field, source) click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 117
def recordFieldFull field, source
  # print field.properties.nil? ? '-' : ":#{field.properties.length}"
  # puts field.properties
  @recNum+=1
  field.properties.each do |name,value|
    # print name
    @csvFileFull << [  @recNum,
                       @twb.name,
                       @twb.dir,
                       @dsname,
                       field.uiname,
                       source,
                       field.class,
                       field.node.path.to_s.gsub(/[0-9]/,'').gsub('[]',''),
                       name,
                       value
                     ]
    # @csvFileFull << csvRec
  end
end
recordTech(field, type) click to toggle source
# File lib/twb/analysis/DocumentedFieldsCSVEmitter.rb, line 170
def recordTech field, type
  @recNum+=1
  field.properties.each do |name,value|
    @csvFileTech << [ @recNum,
                      @twb.name,
                      @twb.dir,
                      @dsname,
                      field.uiname,
                      type,
                      name,
                      value
                    ]
  end
end