Class: Twb::Analysis::CalculatedFieldsAnalyzer
- Inherits:
-
Object
- Object
- Twb::Analysis::CalculatedFieldsAnalyzer
- Defined in:
- lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb
Constant Summary collapse
- @@ttlogfile =
'CalculatedFieldsAnalyzer.ttlog'
- @@gvDotLocation =
'C:\\tech\\graphviz\\Graphviz2.38\\bin\\dot.exe'
- @@processName =
'.CalculatedFields'
- @@calcFieldsCSVFileName =
'CalculatedFields.csv'
- @@calcFieldsCSVFileHeader =
['Record #', 'Workbook', # 'Workbook Modified', 'Data Source', 'Data Source Caption', 'Data Source Name (tech)', 'Field Name', 'Field Caption', 'Field Name (tech)', 'Data Source + Field Name (tech)', 'Data Type', 'Role', 'Type', 'Class', 'Scope Isolation', 'Formula # Chars', 'Formula # Lines', 'Formula', 'Formula (tech)', 'Formula Comments', 'Formula LOD?' ]
- @@calcLinesCSVFileName =
'CalculatedFieldsFormulaLines.csv'
- @@calcLinesCSVFileHeader =
['Calc Field #', 'Workbook', # 'Workbook Modified', 'Data Source', 'Data Source Caption', 'Data Source Name (tech)', 'Field Name', 'Field Caption', 'Field Name (tech)', 'Formula', 'Formula Line #', 'Formula Line' ]
- @@formFieldsCSVFileName =
'CalculatedFieldsReferenced.csv'
- @@formFieldsCSVFileHeader =
['Record #', 'Workbook', # 'Workbook Modified', 'Data Source', 'Field - Calculated', 'Formula (tech)', 'Formula', 'Field - Referenced (tech)', 'Field - Referenced', 'Data Source + Field - Referenced', 'Table' ]
- @@dotHeader =
<<DOTHEADER digraph g { graph [rankdir="LR" splines=line]; node [shape="box" width="2"]; DOTHEADER
Instance Attribute Summary collapse
-
#calculatedFieldsCount ⇒ Object
readonly
Returns the value of attribute calculatedFieldsCount.
-
#metrics ⇒ Object
readonly
Returns the value of attribute metrics.
-
#referencedFieldsCount ⇒ Object
readonly
Returns the value of attribute referencedFieldsCount.
-
#ttdocdir ⇒ Object
Returns the value of attribute ttdocdir.
Attributes included from Graph
Attributes included from TabTool
#alerts, #docDir, #docfiles, #funcdoc, #id, #licensed, #logfilename, #logger, #loglevel, #properties, #type, #uuid
Instance Method Summary collapse
-
#initialize(**args) ⇒ CalculatedFieldsAnalyzer
constructor
A new instance of CalculatedFieldsAnalyzer.
- #loadMetrics ⇒ Object
- #processTWB(workbook) ⇒ Object
Methods included from TabTool
#addDocFile, #alert, #closeDocFiles, #config, #docFile, #docFileMaxNameLen, #docfilesdoc, #docfilesdocto_s, #emit, #emitCSV, #finis, #hasConfig, #init, #initCSV, #initDocDir, #initLogger, #license=, #licensed?, #loadConfig
Constructor Details
#initialize(**args) ⇒ CalculatedFieldsAnalyzer
Returns a new instance of CalculatedFieldsAnalyzer.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb', line 88 def initialize(**args) emit "initialize CalculatedFieldsAnalyzer 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 Calculated Fields', :description=>'Calculated fields can be complex, this tool provides robust coverage.',} #-- CSV records collectors @csvFormulaFields = Set.new @csvFormulaLines = Set.new #-- Counters setup -- @twbCount = 0 @dataSourcesCount = 0 @calculatedFieldsCount = 0 @referencedFieldsCount = 0 #-- @referencedFields = SortedSet.new #-- twbdirLabel = @recordDir.nil? ? nil : 'Workbook Dir' @csvCF = initCSV(@@calcFieldsCSVFileName, 'Calculated fields and their formulas.', @@calcFieldsCSVFileHeader ) @csvCFLs = initCSV(@@calcLinesCSVFileName, "Calculated fields and their formulas' individual lines.", @@calcLinesCSVFileHeader ) @csvFF = initCSV(@@formFieldsCSVFileName, 'Calculated fields and the fields their formulas reference.', @@formFieldsCSVFileHeader ) # TODO migrate addition of 'Workbook Dir' to CSV header to TabTool #-- @localEmit = false @imageFiles = Array.new #-- @doGraph = config(:dograph) end |
Instance Attribute Details
#calculatedFieldsCount ⇒ Object (readonly)
Returns the value of attribute calculatedFieldsCount.
29 30 31 |
# File 'lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb', line 29 def calculatedFieldsCount @calculatedFieldsCount end |
#metrics ⇒ Object (readonly)
Returns the value of attribute metrics.
29 30 31 |
# File 'lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb', line 29 def metrics @metrics end |
#referencedFieldsCount ⇒ Object (readonly)
Returns the value of attribute referencedFieldsCount.
29 30 31 |
# File 'lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb', line 29 def referencedFieldsCount @referencedFieldsCount end |
#ttdocdir ⇒ Object
Returns the value of attribute ttdocdir.
30 31 32 |
# File 'lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb', line 30 def ttdocdir @ttdocdir end |
Instance Method Details
#loadMetrics ⇒ Object
154 155 156 157 158 159 160 |
# File 'lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb', line 154 def loadMetrics @metrics = { '# of Data Sources' => @dataSourcesCount, '# of Calculated Fields' => @calculatedFieldsCount, '# of Referenced Fields' => @referencedFieldsCount, } end |
#processTWB(workbook) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb', line 120 def processTWB workbook @twb = workbook.is_a?(String) ? Twb::Workbook.new(workbook) : workbook throw Exception unless @twb.is_a? Twb::Workbook emit "- Workbook: #{workbook}" emit " version: #{@twb.version}" @twbDir = @twb.dir #File.dirname(File.expand_path(workbook)) @modTime = @twb.modtime @edges = Set.new #-- processing dss = @twb.datasources # puts " # data sources: #{dss.length}" @twbRootFields = Set.new @twbFields = Hash.new { |h,k| h[k] = [] } @nodes = Set.new dss.each do |ds| @dataSourcesCount += 1 # puts "\t\t - #{ds.uiname} \t\t #{ds.calculatedFields.length}" next if ds.Parameters? # don't process the Parameters data source - Parameters' fields aren't Calculated fields for our purposes # dataSourceNode = Twb::Util::Graphnode.new(name: ds.uiname, id: ds.id, type: ds, properties: {workbook: workbook}) # @nodes.add dataSourceNode # ds.calculatedFields.each do |calcField| # end processDataSource ds end mapTwb emitGml @twbCount += 1 finis end |