class ParseDecision::Plugin::PreDecisionGuideline
#######################################################################
Pre-Decision Guideline XML plugin
Attributes
outfile[R]
ppmData[R]
Public Class Methods
new()
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 23 def initialize() $LOG.debug "PreDecisionGuideline::initialize" @fnameTemplate = "@INDEX@-@GDL@-Rules.xml" @searchStrPpms = "<PARAMS><_DATA_SET" @searchStrGdl = "<Guideline " @searchStrGdl2 = "******Guideline*" @searchStrGdlEnd = "<Decision GuidelineId" @searchRulesEnd = "</Decision>" @ppmData = "" @ruleData = [] @openTag = "<@TAG@_DATA>\n" @closeTag = "</@TAG@_DATA>\n" @actualCloseTag = "" @lineCount = 0 @chunkSize = 1000 @outfile = "PreDecision" end
Public Instance Methods
check_for_ppms_or_rule_start(context, ln)
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 57 def check_for_ppms_or_rule_start(context, ln) if ln.include?(@searchStrPpms) @ppmData = ln # XML Tidy doesn't like underscores at the beginning attribute names, take care of it here. @ppmData.gsub!(/_DATA_SET/, "DATA_SET") @ppmData.gsub!(/_Name/, "Name") @ppmData.gsub!(/_Value/, "Value") return true end if ln.include?(@searchStrGdl) || ln.include?(@searchStrGdl2) context.state = :preDecisionGdl @ruleData.clear open_discard_element @ruleData << ln return true end return false end
close_discard_element()
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 90 def close_discard_element # Only output the closing element if discarding is actually on. # This could get called multiple times after discarding has been turned off. if !@discarding.nil? && @discarding @discarding = false @ruleData << "-->\n" # The leading element tag is not valid XML (no quotes around attrib params). @ruleData << "</DISCARD_BY_PARSER>\n" end end
close_out_rules_file(context, ln)
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 149 def close_out_rules_file(context, ln) @ruleData << ln File.open(context.outputPath(@outfile), "a") do |f| write_to_file(f,@ruleData) write_to_file(f, @actualCloseTag) end end
execute(context, ln)
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 42 def execute(context, ln) #$LOG.debug "PreDecisionGuideline::execute" case context.state when :app return check_for_ppms_or_rule_start context, ln when :preDecisionGdl return process_rule_data context, ln else return false end # case end
open_discard_element()
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 78 def open_discard_element # The log can contain a lot of junk here. This prevents it from being a valid # XML doc. To account for this, we'll create a DISCARD element for easy folding # and put everything into an HTML comment block. # We need to track when discarding is on, so we only turn it off once. @discarding = true @ruleData << "<DISCARD_BY_PARSER>\n" @ruleData << "<!-- " # The leading element tag is not valid XML (no quotes around attrib params). end
process_rule_data(context, ln)
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 100 def process_rule_data(context, ln) # Create the rules data file if the Guideline end tag is found if ln.include?(@searchStrGdlEnd) close_discard_element setup_rules_file context, ln return true end # Close the rules data file if the rules end tag is found if ln.include?(@searchRulesEnd) close_out_rules_file context, ln context.state = :app return true end # Haven't found the start or end of the rules here, # we must be somewhere in the middle. # Store the data so it can be written to file later. write_rules_data context, ln return true end
setup_rules_file(context, ln)
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 123 def setup_rules_file(context, ln) @ruleData << ln # Default guideline name gdlName = "PreDecision" # String#match acts weird so using RegEx/MatchData here. m = /\sGuidelineName="([^"]+)/.match(ln) if m[1].length > 1 gdlName = m[1] gdlName = context.createValidName(gdlName) end @outfile = apply_templates(@fnameTemplate, {"@INDEX@"=>context.indexStr, "@GDL@"=>gdlName}) # Store the closing tag for later. @actualCloseTag = apply_template(@closeTag, "@TAG@", gdlName) puts "Creating Gdl Rules file: #{@outfile}" if context.verbose File.open(context.outputPath(@outfile), "w") do |f| write_to_file(f, apply_template(@openTag, "@TAG@", gdlName)) write_to_file(f,@ppmData) end end
write_rules_data(context, ln)
click to toggle source
# File lib/parse_decision/plugin/pre_decision_guideline.rb, line 158 def write_rules_data(context, ln) @ruleData << ln @lineCount += 1 if(@lineCount > @chunkSize) puts "Writing rule data chunk." if context.verbose File.open(context.outputPath(@outfile), "a") do |f| write_to_file(f,@ruleData) end @lineCount = 0 @ruleData.clear end end