package gw.rating.worksheet uses gw.api.system.PCLoggerCategory uses gw.lang.parser.ISymbolTable uses gw.rating.flow.domain.CalcRoutine uses gw.rating.worksheet.domain.WorksheetEntryContainer /** * Provides the functionality required to capture rating worksheets when rate routines are invoked */ class WorksheetCodeExecutionHelper { var _worksheetEntryContainer : WorksheetEntryContainer as WorksheetEntryContainer var _rateBook : RateBook as RateBook var _calcRoutine : CalcRoutine as CalcRoutine var _worksheetEnabled : boolean as WorksheetsEnabled var _symbolTable : ISymbolTable as SymbolTable static var _rfLogger = PCLoggerCategory.RATEFLOW /** * Execute the gosu program instance * with worksheet capturing possibly * enabled * * @param gosu program evaluation block */ function executeRoutine( code : block(), withSymbolTable: boolean = true ){ var logger = WorksheetLogger.get() preExecute(logger, withSymbolTable) code() postExecute(logger) } private function preExecute(logger : WorksheetLogger, withSymbolTable: boolean){ if(!_worksheetEnabled) { return; } logger.WorksheetEntryContainer = _worksheetEntryContainer logger.begin(RateBook.BookCode, RateBook.BookEdition, CalcRoutine.Code, CalcRoutine.Version as String) } private function postExecute(logger : WorksheetLogger){ if(!_worksheetEnabled) return; logger.end() logger.clear() if (_rfLogger.DebugEnabled) { _rfLogger.debug("Worksheet:\n" + _worksheetEntryContainer?.worksheetEntriesString()) } } }