public HierarchySecurityBucketFactory(ISecurityBucketFactory securityBucketFactory, Hierarchy hierarchy) { _securityBucketFactory = securityBucketFactory; _hierarchy = hierarchy; }
static void Main(string[] args) { List <Security> datalist = new List <Security>(); datalist.Add( new Security() { PortUID = "P851", CUSIP = "123456789", Sector = "A", Rating = "AAA", MKV = 100000, MaturityDate = new DateTime(2020, 1, 1), PortTotalMarketValue = 800000, Coupon = 4.3m }); datalist.Add( new Security() { PortUID = "P851", CUSIP = "234567891", Sector = "A", Rating = "AAA", MKV = 200000, MaturityDate = new DateTime(2019, 1, 1), PortTotalMarketValue = 800000, Coupon = 3.3m }); datalist.Add( new Security() { PortUID = "P851", CUSIP = "345678912", Sector = "A", Rating = "BBB", MKV = 300000, MaturityDate = new DateTime(2020, 1, 1), PortTotalMarketValue = 800000, Coupon = 2.3m }); datalist.Add( new Security() { PortUID = "P851", CUSIP = "456789123", Sector = "B", Rating = "AA", MKV = 200000, MaturityDate = new DateTime(2024, 1, 1), PortTotalMarketValue = 800000, Coupon = 1.3m }); Hierarchy durationHierarchy = new Hierarchy(); durationHierarchy.Name = "Duration Hierarchy"; durationHierarchy.HierarchyNodes = new List <HierarchyNode>(); durationHierarchy.HierarchyNodes.Add(new HierarchyNode() { Condition = "Duration >= 0 && Duration < 1", Name = "Dur 0-1" }); durationHierarchy.HierarchyNodes.Add(new HierarchyNode() { Condition = "Duration >= 1 && Duration < 3", Name = "Dur 1-3" }); durationHierarchy.HierarchyNodes.Add(new HierarchyNode() { Condition = "Duration >= 3 && Duration < 6", Name = "Dur 3-6" }); Report report = new Report(); report.Name = "Test Report"; // report.SecurityBucketFactory = new HierarchySecurityBucketFactory(new GroupSecurityBucketFactory(null, "Sector"), durationHierarchy); report.SecurityBucketFactory = new GroupSecurityBucketFactory(new HierarchySecurityBucketFactory(null, durationHierarchy), "Rating"); // report.SecurityBucketFactory = new GroupSecurityBucketFactory(new GroupSecurityBucketFactory(null, "Rating"), "Sector") ; report.StatisticsFields = new List <StatisticsField>(); report.StatisticsFields.Add(new StatisticsField() { DisplayName = "%MKV", FieldName = "PercentageMKV", Statistic = "SUM(PercentageMKV)" //Statistic = "AVERAGE(PercentageMKV)" //Statistic = "COUNT()" //Statistic = "MAX(PercentageMKV)" //Statistic = "MIN(PercentageMKV)" }); /* report.StatisticsFields.Add(new StatisticsField() * { * DisplayName = "Cpn", * FieldName = "Coupon", * Statistic = "AVERAGE(Coupon)" * }); */ var reportMatrixDataCreator = new ReportMatrixDataCreator(report, datalist); Console.Write("\t"); for (int i = 0; i < report.StatisticsFields.Count; i++) { foreach (var topName in reportMatrixDataCreator.TopNames) { Console.Write(topName + "\t"); } } for (int i = 0; i < report.StatisticsFields.Count; i++) { Console.Write("Total\t"); } Console.WriteLine(); foreach (var sideName in reportMatrixDataCreator.SideNames.OrderBy(s => s)) { Console.Write(sideName + "\t"); foreach (var topName in reportMatrixDataCreator.TopNames) { foreach (var field in report.StatisticsFields) { Console.Write(reportMatrixDataCreator.GetData(reportMatrixDataCreator.CreateKey("P851", sideName, topName, field.FieldName)) ?? "---"); Console.Write("\t"); } } foreach (var field in report.StatisticsFields) { Console.Write(reportMatrixDataCreator.GetData(reportMatrixDataCreator.CreateKey("P851", sideName, null, field.FieldName)) ?? "---"); Console.Write("\t"); } Console.WriteLine(); } Console.Write("Total\t"); foreach (var topName in reportMatrixDataCreator.TopNames) { foreach (var field in report.StatisticsFields) { Console.Write(reportMatrixDataCreator.GetData(reportMatrixDataCreator.CreateKey("P851", topName, null, field.FieldName)) ?? "---"); Console.Write("\t"); } } foreach (var field in report.StatisticsFields) { Console.Write(reportMatrixDataCreator.GetData(reportMatrixDataCreator.CreateKey("P851", null, null, field.FieldName)) ?? "---"); Console.Write("\t"); } Console.ReadLine(); }