class Twb::Analysis::DataSources::DataSourceFieldsAnalyzer
Attributes
csvFileName[R]
csvRecords[R]
dsCount[R]
fieldsCount[R]
Public Class Methods
csvFileNaame()
click to toggle source
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 125 def self.csvFileNaame @@csvFileName end
csvFileType()
click to toggle source
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 121 def self.csvFileType @@csvFileType end
csvHeader()
click to toggle source
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 117 def self.csvHeader @@csvHeader end
new(**args)
click to toggle source
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 83 def initialize(**args) emit "DataSourceFieldsAnalyzer initialize(**args) args: #{args}" @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 Data Source Fields', :description=>'Documents Data Source fields, with (some) technical information.',} #-- detailsFileName = docFile(@@fullFileName) @csvFile = CSV.open( detailsFileName,@csvMode ) #-- colsFileName = docFile(@@colsFileName) @colsFile = CSV.open( colsFileName, @csvMode ) #-- unless @csvAdd if @recordDir @csvFile << @@fullHeader + ['Workbook Dir'] @colsFile << @@colsHeader + ['Workbook Dir'] else @csvFile << @@fullHeader @colsFile << @@colsHeader end end addDocFile @csvFile, detailsFileName, "Workbooks, Data Sources, and Fields' details (technical use)." addDocFile @colsFile, colsFileName, "Workbooks, Data Sources, and Column Fields." #-- @dsCount = 0 @recNum = 0 @colFldNum = 0 end
Public Instance Methods
metrics()
click to toggle source
@@colsHeader = ['Field #',
'Workbook', 'Data Source', 'Field - tech', 'caption', 'uiname', 'alias', 'datatype', 'datatype-customized', 'default-format', 'param-domain-type', 'role', 'type', 'value' ]
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 226 def metrics { '# of Data Sources' => @dsCount, '# of Records' => @recNum } end
processColumnFields(ds)
click to toggle source
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 188 def processColumnFields ds deepFields = {} recordedFields = {} ds.columnFields.each do |field| if field.pathbare.eql? '/workbook/datasources/datasource/column' recordColField field recordedFields[field.name] = field # print '.' else deepFields[field.name] = field # print '-' end end deepFields.each do |name,field| unless recordedFields.has_key? name recordColField(field) recordedFields[field.name] = field # print ':' end end end
processTWB(twb)
click to toggle source
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.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 @twbName = @twb.name @twbDir = @twb.dir 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 processColumnFields ds # 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
Private Instance Methods
recordColField(field)
click to toggle source
def recordCSV record
numberedRec = [@recNum+=1] + record if @recordDir @csvFile << numberedRec.push(@twb.dir) else @csvFile << numberedRec end
end
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 246 def recordColField field numberedRec = [ @colFldNum +=1, @twbName, @dsname, field.name, field.caption, field.uiname, field.alias, field.dataType, field.datatypeCustomized, field.defaultFormat, field.paramDomainType, field.role, field.semanticRole, field.type, !field.calcField.nil?, field.value, field.hidden, field.pathbare ] #-- if @recordDir @colsFile << numberedRec.push(@twb.dir) else @colsFile << numberedRec end end
recordFieldFull(field, source)
click to toggle source
# File lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb, line 275 def recordFieldFull field, source # print field.properties.nil? ? '-' : ":#{field.properties.length}" # puts field.properties @fieldCnt+=1 field.properties.each do |name,value| # print name csvRec = [ @recNum+=1, @twb.name, # @twb.dir, @dsname, field.uiname, field.name, source, field.class, field.node.path.to_s.gsub(/[0-9]/,'').gsub('[]',''), name, value ] csvRec << @twb.dir if @recordDir @csvFile << csvRec end end