Exemple #1
0
        public static TradeRule LoadRule(string ruleFileName)
        {
            TradeRule rule = null;

            try
            {
                XmlSaveRule xsr = (XmlSaveRule)EZAPI.Toolbox.Serialization.Xml.Deserialize(typeof(XmlSaveRule), ruleFileName);

                rule        = new TradeRule(xsr.Name, xsr.RuleCombination, xsr.RuleType);
                rule.Active = xsr.Active;

                foreach (var xsrc in xsr.RuleConditions)
                {
                    IDataProvider dataProvider1 = MonkeyFactory.CreateDataProviderInstance(xsrc.Value1.Name);
                    IDataProvider dataProvider2 = MonkeyFactory.CreateDataProviderInstance(xsrc.Value2.Name);
                    dataProvider1.SaveData = xsrc.Value1;
                    dataProvider2.SaveData = xsrc.Value2;

                    RuleValue       value1    = new RuleValue(dataProvider1);
                    RuleValue       value2    = new RuleValue(dataProvider2);
                    IRuleComparison compare   = MonkeyFactory.CreateRuleComparisonInstance(xsrc.Compare.Name);
                    RuleCondition   condition = new RuleCondition(value1, compare, value2);

                    rule.AddRuleCondition(condition);
                }
            }
            catch (Exception ex)
            {
                // If there is a problem loading the rule, then we return null (not some partial rule).
                rule = null;
                ExceptionHandler.TraceException(ex);
            }

            return(rule);
        }
        private static Workspace ArchitectureModel(IInfrastructureEnvironment environment)
        {
            var workspace = CreateWorkspace();

            var monkeyFactory = new MonkeyFactory(workspace, environment);

            var contextView = workspace.Views.CreateSystemContextView(monkeyFactory.System, "Monkey factory context view", "Overview over the monkey factory system");

            contextView.AddAllSoftwareSystems();
            contextView.AddAllPeople();

            var containerView = workspace.Views.CreateContainerView(monkeyFactory.System, "Monkey factory Container View", "Overview over the monkey factory system architecture");

            containerView.AddAllContainers();
            containerView.AddAllPeople();

            foreach (var systemContainer in monkeyFactory.System.Containers)
            {
                containerView.AddNearestNeighbours(systemContainer);
            }

            return(workspace);
        }
        static void Main(string[] args)
        {
            //test
            Console.WriteLine("Start Program");
            iTreeFactory    treeFactory   = new TreeFactory();
            iWoodFactory    woodFactory   = new WoodFactory(treeFactory);
            iMonkeyFactory  monkeyFactory = new MonkeyFactory();
            iDatabaseFiller dbWriter      = new BulkDatabaseUploader();
            ReportWriter    reportWriter  = new ReportWriter();
            BitmapDrawer    mapDrawer     = new BitmapDrawer();

            List <iMonkey> monkeys1   = monkeyFactory.GetMonkeys(4, MonkeyTypes.Standard);
            List <iMonkey> monkeys2   = monkeyFactory.GetMonkeys(8, MonkeyTypes.Standard);
            var            wood1      = woodFactory.CreateWood(100, 100, 500, monkeys1);
            var            wood2      = woodFactory.CreateWood(200, 200, 1500, monkeys2);
            Thread         letLooseW1 = new Thread(wood1.LetTheMonkeysLoose);

            letLooseW1.Start();
            Thread letLooseW2 = new Thread(wood2.LetTheMonkeysLoose);

            letLooseW2.Start();


            //upload the layout of the woods(no monkey movement needed)
            Thread treeUploader1 = new Thread(() => dbWriter.UploadWoodRecords(wood1));

            treeUploader1.Start();

            Thread treeUploader2 = new Thread(() => dbWriter.UploadWoodRecords(wood2));

            treeUploader2.Start();

            //report on the first one
            letLooseW1.Join();
            Thread draw1 = new Thread(() => mapDrawer.DrawMap(wood1));

            draw1.Start();

            Thread logUploader1 = new Thread(() => dbWriter.UploadLogs(wood1));

            logUploader1.Start();
            Thread monkeyUploader1 = new Thread(() => dbWriter.UploadMonkeyRecords(wood1));

            monkeyUploader1.Start();

            Thread reporter1 = new Thread(() => reportWriter.WriteReport(wood1));

            reporter1.Start();


            //report on the second one
            letLooseW2.Join();

            Thread draw2 = new Thread(() => mapDrawer.DrawMap(wood2));

            draw2.Start();

            Thread logUploader2 = new Thread(() => dbWriter.UploadLogs(wood2));

            logUploader2.Start();
            Thread monkeyUploader2 = new Thread(() => dbWriter.UploadMonkeyRecords(wood2));

            monkeyUploader2.Start();

            Thread reporter2 = new Thread(() => reportWriter.WriteReport(wood2));

            reporter2.Start();
        }