Example #1
0
        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);
            }
        }