package gw.rating uses gw.api.rating.MultiFactorVariable uses gw.rating.flow.RateQuery uses gw.rating.worksheet.domain.WorksheetRateQuery abstract class RateRoutineExecutionLoggedRateQuery extends RateQuery { protected var _logger : RateRoutineExecutionLogger protected var _op : String protected var _leftParens : int protected var _rightParens : int construct(logger : RateRoutineExecutionLogger, op : String, rbook : RateBook, table : String) { this(logger, op, 0, 0, rbook, table) } construct(logger : RateRoutineExecutionLogger, op : String, leftParens : int, rightParens : int, rbook : RateBook, table : String) { super(rbook, table) _logger = logger _op = op _leftParens = leftParens _rightParens = rightParens } override function getFactor(factorColumnName : String) : R { var result = super.select(factorColumnName) var factorValue = result.getFactor() var factorName = factorColumnName == null ? TableDef.Factors.single().ColumnLabel : TableDef.Factors.where(\ r -> r.ColumnName == factorColumnName).single().ColumnLabel var rateQueryType = TableDef.Factors.Count > 1 ? WorksheetRateQuery.MultiFactorType : WorksheetRateQuery.SingleFactorType var factorSource = result.getFactorSource().getWorksheetLog() logQuery(factorValue, factorName, rateQueryType, factorSource) return factorValue } override function getFactors(factorCodes : List) : MultiFactorVariable { var factorValue = super.getFactors(factorCodes) var factorNames = factorCodes.map(\ code -> TableDef.Factors.where(\ r -> r.ColumnName == code).single().ColumnLabel) logQuery(factorValue, factorNames.join(", "), WorksheetRateQuery.MultiFactorVarType, factorValue.FactorSource.getWorksheetLog()) return factorValue } abstract function logQuery(factorValue : T, factorName : String, rateQueryType : String, factorSource : String) }