public Characteristic(FormulaInfo formulaInfo, ReportDataProvider reportDataProvider) { if (formulaInfo == null) { throw new ArgumentNullException("formulaInfo"); } if (reportDataProvider == null) { throw new ArgumentNullException("reportDataProvider"); } _reportDataProvider = reportDataProvider; var formulaCore = formulaInfo.Coefficients .Aggregate(formulaInfo.Expression, (current, coeff) => current.Replace(coeff.Key, coeff.Value.ToString(CultureInfo.InvariantCulture))); _arguments = formulaInfo.Arguments; var preparedExpression = ToolsHelper.Parser.Parse(formulaCore); _compiledExpression = ToolsHelper.Compiler.Compile(preparedExpression); _compiledExpression = ToolsHelper.Optimizer.Optimize(_compiledExpression); }
public Report(string name, IReportTableProvider tableProvider, IFormulaProvider formulaProvider, ReportDataProvider reportDataProvider) { if (tableProvider == null) { throw new ArgumentNullException("tableProvider"); } if (formulaProvider == null) { throw new ArgumentNullException("formulaProvider"); } if (reportDataProvider == null) { throw new ArgumentNullException("reportDataProvider"); } Names = new List<string> {name}; ReportTables = new List<ReportTable>(); foreach (var xmlTable in tableProvider.GetTables()) { var reportTable = new ReportTable(xmlTable, formulaProvider, reportDataProvider); ReportTables.Add(reportTable); } }
public ReportTable(XReportTable xmlTable, IFormulaProvider formulaProvider, ReportDataProvider reportDataProvider) { if (xmlTable == null) { throw new ArgumentNullException("xmlTable"); } if (formulaProvider == null) { throw new ArgumentNullException("formulaProvider"); } if (reportDataProvider == null) { throw new ArgumentNullException("reportDataProvider"); } Name = xmlTable.Name; ReportGroups = new List<ReportGroup>(); foreach (var xmlGroup in xmlTable.Groups) { var reportGroup = new ReportGroup(xmlGroup, formulaProvider, reportDataProvider); ReportGroups.Add(reportGroup); } }
public ReportGenerator(Func<Type, IReportTableProvider> reportTableResolver, IFormulaProvider formulaProvider, ReportDataProvider reportDataProvider) { _reportTableResolver = reportTableResolver; _formulaProvider = formulaProvider; _reportDataProvider = reportDataProvider; }
public ReportGroup(XReportTableGroup xmlGroup, IFormulaProvider formulaProvider, ReportDataProvider reportDataProvider) { if (xmlGroup == null) { throw new ArgumentNullException("xmlGroup"); } if (formulaProvider == null) { throw new ArgumentNullException("formulaProvider"); } if (reportDataProvider == null) { throw new ArgumentNullException("reportDataProvider"); } Name = xmlGroup.Name; ReportRows = new List<ReportRow>(); foreach (var formulaId in xmlGroup.Formulas) { var formulaInfo = formulaProvider.GetFormula(formulaId); var characteristic = new Characteristic(formulaInfo, reportDataProvider); var value = NormalizeValue(characteristic.Evaluate()); if (double.IsNaN(value)) { value = 0; } //TODO: Round or Integral part? var reportFormula = new ReportRow(formulaInfo.Name, Convert.ToInt32(value), Convert.ToInt32(formulaInfo.MaxValue)); ReportRows.Add(reportFormula); } }