class Twb::Analysis::SheetFieldsAnalyzer
Attributes
localEmit[RW]
Public Class Methods
new(**args)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 44 def initialize(**args) @args = args @recordDir = !@args.nil? && @args[:recordDir] == true @ttdocdir = @args[:ttdocdir] @csvAdd = args[:csvMode] == :add @csvMode = @csvAdd ? 'a' : 'w' # @localEmit = true init @funcdoc = {:class=>self.class, :blurb=>'Analyze Worksheet Fields', :description=>nil,} #-- docFileName = docFile('WorksheetFields.csv') @sheetFieldsCSV = CSV.open(docFileName,@csvMode) unless @csvAdd if @recordDir @sheetFieldsCSV << ['Rec #','Workbook','Workbook Modified','Worksheet','Data Source','Data Source (tech)','Field','Field (tech)','Usage','Usage - code','Workbook Dir'] else @sheetFieldsCSV << ['Rec #','Workbook','Workbook Modified','Worksheet','Data Source','Data Source (tech)','Field','Field (tech)','Usage','Usage - code' ] end end addDocFile @sheetFieldsCSV, docFileName, "Workbooks, Worksheets, and the Sheets' Data Sources and Fields" #-- @twbCnt = 0 @sheetCnt = 0 @fieldsCnt = 0 @recNum = 0 end
Public Instance Methods
metrics()
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 71 def metrics { # '# of Workbooks' => @twbcount, '# of Worksheets' => @sheetCnt, '# of Worksheet Fields' => @fieldsCnt } end
processTWB(twb)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 79 def processTWB twb @twb = twb @modTime = @twb.modtime emit " -- twb:: #{@twb.name}" @twbCnt += 1 @twbDomainsLoaded = false parseSheets finis end
Private Instance Methods
ftc(type)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 218 def ftc type # ftc : abbr for fieldTypeCode, for brevity @@fieldTypeCodes[type].nil? ? type : @@fieldTypeCodes[type] end
parseSheets()
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 91 def parseSheets @worksheets = @twb.worksheets @worksheets.each do |sheet| @sheetName = sheet.name @sheetCnt += 1 emit "SHEET: #{@sheetName}" showFields sheet unless sheet.datasourceFields.nil? end end
recordCSV(record)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 208 def recordCSV record numberedRec = [@recNum+=1] + record if @recordDir @sheetFieldsCSV << numberedRec.push(@twb.dir) else @sheetFieldsCSV << numberedRec end @sheetFields[record[2]] << record[4] end
recordDBFields(sheet)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 115 def recordDBFields sheet fields = sheet.datasourceFields emit "def recordDBFields sheet: #{sheet.name} #FIELDS: #{fields.length}" fields.each do |dsName, dsfields| ds = @twb.datasource dsName emit " ds: #{dsName}" emit " - #{ds.uiname}" emit " : #{ds.class}" dsfields.each do |sheetField| @fieldsCnt += 1 emit " f: #{sheetField}" emit " c: #{sheetField.class}" fuiName = ds.fieldUIName sheetField #Fields[sheetField] recordCSV [@twb.name, @modTime, @sheetName, ds.uiname, dsName, sheetField.uiname, sheetField.name, 'DB ref', ftc('DB ref')] end end end
recordDSFilterFields(sheet)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 179 def recordDSFilterFields sheet sheet.slicesFields.each do |field| dsName = field.dataSource ds = @twb.datasource dsName dsUIName = ds.uiname ds.filters.each do |filter| recordCSV [@twb.name, @modTime, @sheetName, dsUIName, dsName, filter.uiname, filter.name, 'dsfilter', ftc('dsfilter')] end end end
recordEncodedFields(sheet)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 149 def recordEncodedFields sheet unless sheet.encodedFields.nil? sheet.encodedFields.each do |type,fields| fields.each do |field| dsName = field.dataSource ds = @twb.datasource dsName fuiName = ds.fieldUIName field.name recordCSV [@twb.name, @modTime, @sheetName, ds.uiname, dsName, fuiName, field.name, type, ftc(type)] end end end end
recordFilterFields(sheet)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 162 def recordFilterFields sheet filters = sheet.filters filters.each do |filter| dsName = filter.dataSource.name dsUIName = filter.dataSource.uiname recordCSV [@twb.name, @modTime, @sheetName, dsUIName, dsName, filter.uiname, filter.name, 'filter', ftc('filter')] end end
recordPageFields(sheet)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 171 def recordPageFields sheet sheet.pageFields.each do |pfield| ds = @twb.datasource pfield.dataSource fuiname = ds.fieldUIName pfield.name recordCSV [@twb.name, @modTime, @sheetName, ds.uiname, ds.name, fuiname, pfield.name, 'page', ftc('page')] end end
recordRCFields(fields, usage)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 133 def recordRCFields fields, usage emit "def recordRCFields #fields: #{fields.length} \t #{fields}" fields.each do |cf| emit "coded field: #{cf}" fldName = cf.name dsName = cf.dataSource ds = @twb.datasource dsName emit "DATASOURCE : #{ds.class} " #{ }" #{ds}" fuiName = ds.fieldUIName cf.name emit " ds: #{dsName}" emit " - #{ds.uiname}" emit " : #{ds.class}" recordCSV [@twb.name, @modTime, @sheetName, ds.uiname, dsName, fuiName, fldName, usage, ftc(usage)] end end
recordSlicesFields(sheet)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 190 def recordSlicesFields sheet sheet.slicesFields.each do |field| dsName = field.dataSource ds = @twb.datasource dsName dsuiname = ds.uiname fuiName = ds.fieldUIName field.name recorded = @sheetFields.key?(dsuiname) && @sheetFields[dsuiname].include?(fuiName) emit " # #{@sheetFields.inspect}" emit " - %-6s %-25s -> %-s" % [recorded, dsuiname, fuiName] unless recorded recordCSV [@twb.name, @modTime, @sheetName, dsuiname, dsName, fuiName, field.name, 'slice', ftc('slice')] emit " - recorded" end emit "--" end emit "\n " end
showFields(sheet)
click to toggle source
# File lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb, line 101 def showFields sheet @sheetFields = Hash.new { |ds,fields| ds[fields] = Set.new } # recordCSV [@twb.name, @sheetName, nil, nil, nil, nil, nil] emit "Sheet: #{@sheetName}" recordDBFields sheet recordRCFields sheet.rowFields, :row recordRCFields sheet.colFields, :column recordEncodedFields sheet recordFilterFields sheet recordPageFields sheet recordDSFilterFields sheet recordSlicesFields sheet end