class Twb::Analysis::DataSources::DataSourceFieldsCSVEmitter

Attributes

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

Public Class Methods

csvFileNaame() click to toggle source
# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 125
def self.csvFileNaame
  @@csvFileName
end
csvFileType() click to toggle source
# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 121
def self.csvFileType
  @@csvFileType
end
csvHeader() click to toggle source
# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 117
def self.csvHeader
  @@csvHeader
end
new(**args) click to toggle source

@@techFileType = 'TwbDataSourceFieldsTech' @@techFileName = @@techFileType + '.csv' @@techHeader = ['Field #',

 'Workbook',           
 'Workbook Dir',
 'Data Source',
 'Field',
 'Field Type',
 'Property - Name',
 'Property - Value'
]
# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 72
def initialize(**args)
  @args      = args
  # puts "@args: #{@args}"
  @recordDir = !@args.nil? && @args[:recordDir] == true
  @ttdocdir  = @args[:ttdocdir]
  @csvAdd    = args[:csvMode] == :add
  @csvMode   = @csvAdd ? 'a' : 'w'
  init
  @funcdoc   = {:class=>self.class, :blurb=>'Analyze Worksheet Filters', :description=>'Documents Quick Filters and the values they employ, if any. Work in progess.',}
  #--
  docFileName      = docFile(@@fullFileName)
  @sheetFieldsCSV  = CSV.open( docFileName,@csvMode)
  unless @csvAdd
    if @recordDir
      @sheetFieldsCSV  << ['Rec #','Workbook','Workbook Modified','Worksheet','Filter Type','Operation','Data Source','Field','Value','Alias', 'Alias?','Operation Mode','Include Null?','Kind','Workbook Dir']
    else
      @sheetFieldsCSV  << ['Rec #','Workbook','Workbook Modified','Worksheet','Filter Type','Operation','Data Source','Field','Value','Alias', 'Alias?','Operation Mode','Include Null?','Kind']
    end
  end
  addDocFile @sheetFieldsCSV, docFileName, "Workbooks, Worksheets and the sheets' Quick Filters"
  #--
  @sheetCount  = 0
  @filterCount = 0
  @recNum      = 0
end

Public Instance Methods

cleanup() click to toggle source

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

# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 269
def cleanup
  @csvFile.close unless @csvFile.nil?
end
initializeX() click to toggle source
# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 98
def initializeX
  # @csvFile     = CSV.open(@@csvFileName,'w')
  # @csvFile     << @@csvHeader
  # @csvRecords  = Set.new
  # puts "Opened: #{!@csvFile.nil?} - #{@@csvFileName}"
  # --
  @csvFileFull = CSV.open(@@fullFileName,'w')
  @csvFileFull << @@fullHeader
  puts "Opened: #{!@csvFileFull.nil?} - #{@@fullFileName} "
  # --
  # @csvFileTech = CSV.open(@@techFileName,'w')
  # @csvFileTech << @@techHeader
  # puts "Opened: #{!@csvFileTech.nil?} - #{@@techFileName}"
  # --
  @recNum      = 0
  @dsCount     = 0
  @fieldsCount = 0
end
processTwb(twb) click to toggle source
# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 129
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
  @fieldCnt = 0
  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
recordFieldFull(field, source) click to toggle source
# File lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb, line 185
def recordFieldFull field, source
  # print field.properties.nil? ? '-' : ":#{field.properties.length}"
  # puts field.properties
  @fieldCnt+=1
  field.properties.each do |name,value|
    # print name
    @csvFileFull << [  @recNum+=1,
                       @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