Exemplo n.º 1
0
 public HierarchySecurityBucketFactory(ISecurityBucketFactory securityBucketFactory, Hierarchy hierarchy)
 {
     _securityBucketFactory = securityBucketFactory;
     _hierarchy             = hierarchy;
 }
Exemplo n.º 2
0
        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();
        }