public ViewFactory()
        {
            _prototypes = new Dictionary <string, ViewProvider>();

            _prototypes["Startlist_1stRun_StartnumberAscending"] = new FirstRunStartListViewProvider();
            _prototypes["Startlist_1stRun_Points_0"]             = new DSVFirstRunStartListViewProvider(0);
            _prototypes["Startlist_1stRun_Points_15"]            = new DSVFirstRunStartListViewProvider(15);
            _prototypes["Startlist_1stRun_Points_30"]            = new DSVFirstRunStartListViewProvider(30);

            _prototypes["Startlist_2nd_StartnumberAscending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Ascending);
            //_prototypes["Startlist_2nd_StartnumberAscending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Ascending);
            _prototypes["Startlist_2nd_StartnumberDescending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Descending);
            //_prototypes["Startlist_2nd_StartnumberDescending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Descending);
            _prototypes["Startlist_2nd_PreviousRun_0_OnlyWithResults"]      = new BasedOnResultsFirstRunStartListViewProvider(0, false);
            _prototypes["Startlist_2nd_PreviousRun_0_AlsoWithoutResults"]   = new BasedOnResultsFirstRunStartListViewProvider(0, true);
            _prototypes["Startlist_2nd_PreviousRun_15_OnlyWithResults"]     = new BasedOnResultsFirstRunStartListViewProvider(15, false);
            _prototypes["Startlist_2nd_PreviousRun_15_AlsoWithoutResults"]  = new BasedOnResultsFirstRunStartListViewProvider(15, true);
            _prototypes["Startlist_2nd_PreviousRun_30_OnlyWithResults"]     = new BasedOnResultsFirstRunStartListViewProvider(30, false);
            _prototypes["Startlist_2nd_PreviousRun_30_AlsoWithoutResults"]  = new BasedOnResultsFirstRunStartListViewProvider(30, true);
            _prototypes["Startlist_2nd_PreviousRun_all_OnlyWithResults"]    = new BasedOnResultsFirstRunStartListViewProvider(int.MaxValue, false);
            _prototypes["Startlist_2nd_PreviousRun_all_AlsoWithoutResults"] = new BasedOnResultsFirstRunStartListViewProvider(int.MaxValue, true);

            _prototypes["RaceResult_BestOfTwo"]          = new RaceResultViewProvider(RaceResultViewProvider.TimeCombination.BestRun);
            _prototypes["RaceResult_Sum"]                = new RaceResultViewProvider(RaceResultViewProvider.TimeCombination.Sum);
            _prototypes["RaceResult_SumBest2"]           = new RaceResultViewProvider(RaceResultViewProvider.TimeCombination.SumBest2);
            _prototypes["RaceResult_SumDSVPointsSchool"] = new DSVSchoolRaceResultViewProvider();

            _prototypes["RaceRunResult"] = new RaceRunResultViewProvider();
        }
Пример #2
0
        void fillMandatoryFields(AppDataModel model)
        {
            var raceProps = new AdditionalRaceProperties();

            model.GetRace(0).AdditionalProperties = raceProps;
            raceProps.DateResultList = DateTime.Today;
            model.GetRace(0).AdditionalProperties.RaceNumber  = "1234";
            model.GetRace(0).AdditionalProperties.Organizer   = "WSV Glonn";
            model.GetRace(0).AdditionalProperties.Description = "Test Race";
            model.GetRace(0).AdditionalProperties.Location    = "Test Location";

            model.GetDB().StoreKeyValue("DSV_UsedDSVList", "123");

            model.GetRace(0).AdditionalProperties.RaceManager = new AdditionalRaceProperties.Person {
                Name = "Race Manager", Club = "Club"
            };
            model.GetRace(0).AdditionalProperties.RaceReferee = new AdditionalRaceProperties.Person {
                Name = "Referee, Race", Club = "Club"
            };
            model.GetRace(0).AdditionalProperties.TrainerRepresentative = new AdditionalRaceProperties.Person {
                Name = "T.Rep", Club = "Club"
            };

            raceProps.CoarseName   = "Kurs 1";
            raceProps.StartHeight  = 1000;
            raceProps.FinishHeight = 100;
            raceProps.CoarseLength = 1000;

            raceProps.RaceRun1.Gates        = 10;
            raceProps.RaceRun1.Turns        = 9;
            raceProps.RaceRun1.CoarseSetter = new AdditionalRaceProperties.Person {
                Name = "Sven Flossmann", Club = "WSV Glonn"
            };
            raceProps.RaceRun1.Forerunner1 = new AdditionalRaceProperties.Person {
                Name = "F. Runner", Club = "WSV Glonn"
            };

            if (model.GetRace(0).GetMaxRun() > 1)
            {
                raceProps.RaceRun2.Gates        = 10;
                raceProps.RaceRun2.Turns        = 9;
                raceProps.RaceRun2.CoarseSetter = new AdditionalRaceProperties.Person {
                    Name = "Sven Flossmann", Club = "WSV Glonn"
                };
                raceProps.RaceRun2.Forerunner1 = new AdditionalRaceProperties.Person {
                    Name = "F. Runner", Club = "WSV Glonn"
                };
            }

            model.GetRace(0).RaceConfiguration.ValueF = 720.0;

            var rvp = new DSVSchoolRaceResultViewProvider();

            rvp.Init(model.GetRace(0), model);
            model.GetRace(0).SetResultViewProvider(rvp);
        }
        Race createTestData(IEnumerable <TestData> testData)
        {
            TestDataGenerator tg = new TestDataGenerator();

            Race race = tg.Model.GetRace(0);

            var rvp = new DSVSchoolRaceResultViewProvider();

            rvp.Init(race, tg.Model);
            race.SetResultViewProvider(rvp);

            foreach (var td in testData)
            {
                var rp = tg.createRaceParticipant(cat: tg.findCat('W'));
                rp.Points = td.Points;
                race.GetRun(0).SetRunTime(rp, TimeSpan.FromSeconds(td.RunTime));
            }
            return(race);
        }
Пример #4
0
        protected void writeRaceData(Race race)
        {
            _writer.WriteStartElement("racedata");

            string usedDSVList = race.GetDataModel().GetDB().GetKeyValue("DSV_UsedDSVList");

            if (string.IsNullOrWhiteSpace(usedDSVList))
            {
                throw new DSVExportException("missing useddsvlist");
            }
            _writer.WriteStartElement("useddsvlist");
            _writer.WriteValue(usedDSVList);
            _writer.WriteEndElement();

            if (race.RaceConfiguration.ValueF == 0.0)
            {
                throw new DSVExportException("missing f-value");
            }

            _writer.WriteStartElement("fvalue");
            _writer.WriteValue(race.RaceConfiguration.ValueF);
            _writer.WriteEndElement();

            DSVSchoolRaceResultViewProvider dsvRaceVP = race.GetResultViewProvider() as DSVSchoolRaceResultViewProvider;

            if (dsvRaceVP == null)
            {
                throw new DSVExportException("wrong raceresultview");
            }

            DSVRaceCalculation dsvCalcW = dsvRaceVP.GetDSVRaceCalculationWomen();

            if (dsvCalcW != null)
            {
                _writer.WriteStartElement("racepenalty");
                _writer.WriteAttributeString("gender", "L");

                _writer.WriteStartElement("applied_penalty");
                _writer.WriteValue(dsvCalcW.AppliedPenalty);
                _writer.WriteEndElement();

                _writer.WriteStartElement("calculated_penalty");
                _writer.WriteValue(dsvCalcW.CalculatedPenalty);
                _writer.WriteEndElement();

                _writer.WriteEndElement();
            }

            DSVRaceCalculation dsvCalcM = dsvRaceVP.GetDSVRaceCalculationMen();

            if (dsvCalcM != null)
            {
                _writer.WriteStartElement("racepenalty");
                _writer.WriteAttributeString("gender", "M");

                _writer.WriteStartElement("applied_penalty");
                _writer.WriteValue(dsvCalcM.AppliedPenalty);
                _writer.WriteEndElement();

                _writer.WriteStartElement("calculated_penalty");
                _writer.WriteValue(dsvCalcM.CalculatedPenalty);
                _writer.WriteEndElement();

                _writer.WriteEndElement();
            }

            if (race.AdditionalProperties?.RaceManager == null || ((AdditionalRaceProperties.Person)race.AdditionalProperties?.RaceManager).IsEmpty())
            {
                throw new DSVExportException("missing racejury ChiefRace");
            }
            writeJuryPerson(_writer, "ChiefRace", race.AdditionalProperties?.RaceManager);

            if (race.AdditionalProperties?.RaceReferee == null || ((AdditionalRaceProperties.Person)race.AdditionalProperties?.RaceReferee).IsEmpty())
            {
                throw new DSVExportException("missing racejury Referee");
            }
            writeJuryPerson(_writer, "Referee", race.AdditionalProperties?.RaceReferee);

            if (race.AdditionalProperties?.TrainerRepresentative == null || ((AdditionalRaceProperties.Person)race.AdditionalProperties?.TrainerRepresentative).IsEmpty())
            {
                throw new DSVExportException("missing racejury RepresentativeTrainer");
            }
            writeJuryPerson(_writer, "RepresentativeTrainer", race.AdditionalProperties?.TrainerRepresentative);

            writeRunData(race.GetRun(0), race.AdditionalProperties?.RaceRun1);
            if (race.GetMaxRun() > 1)
            {
                writeRunData(race.GetRun(1), race.AdditionalProperties?.RaceRun2);
            }

            _writer.WriteEndElement();
        }
Пример #5
0
        public void BasicExceptions_MandatoryFields()
        {
            var model = createTestDataModel1Race1Run();

            DSVExport    dsvExport = new DSVExport();
            MemoryStream xmlData   = null;

            var raceProps = new AdditionalRaceProperties();

            model.GetRace(0).AdditionalProperties = raceProps;

            xmlData = new MemoryStream();
            Assert.AreEqual("missing racedate",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.DateResultList = DateTime.Today;

            xmlData = new MemoryStream();
            Assert.AreEqual("missing raceid",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).AdditionalProperties.RaceNumber = "1234";

            xmlData = new MemoryStream();
            Assert.AreEqual("missing raceorganizer",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).AdditionalProperties.Organizer = "WSV Glonn";

            xmlData = new MemoryStream();
            Assert.AreEqual("missing racename",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).AdditionalProperties.Description = "Test Race";

            xmlData = new MemoryStream();
            Assert.AreEqual("missing raceplace",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).AdditionalProperties.Location = "Test Location";



            xmlData = new MemoryStream();
            Assert.AreEqual("missing useddsvlist",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetDB().StoreKeyValue("DSV_UsedDSVList", "123");

            xmlData = new MemoryStream();
            Assert.AreEqual("missing f-value",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).RaceConfiguration.ValueF = 720.0;

            xmlData = new MemoryStream();
            Assert.AreEqual("wrong raceresultview",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);

            var rvp = new DSVSchoolRaceResultViewProvider();

            rvp.Init(model.GetRace(0), model);
            model.GetRace(0).SetResultViewProvider(rvp);



            xmlData = new MemoryStream();
            Assert.AreEqual("missing racejury ChiefRace",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).AdditionalProperties.RaceManager = new AdditionalRaceProperties.Person {
                Name = "Race Manager", Club = "Club"
            };

            xmlData = new MemoryStream();
            Assert.AreEqual("missing racejury Referee",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).AdditionalProperties.RaceReferee = new AdditionalRaceProperties.Person {
                Name = "Race Referee", Club = "Club"
            };

            xmlData = new MemoryStream();
            Assert.AreEqual("missing racejury RepresentativeTrainer",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            model.GetRace(0).AdditionalProperties.TrainerRepresentative = new AdditionalRaceProperties.Person {
                Name = "Trainer Rep", Club = "Club"
            };



            xmlData = new MemoryStream();
            Assert.AreEqual("missing coarsename",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.CoarseName = "Kurs 1";

            xmlData = new MemoryStream();
            Assert.AreEqual("missing number_of_gates",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.RaceRun1.Gates = 10;

            xmlData = new MemoryStream();
            Assert.AreEqual("missing number_of_turninggates",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.RaceRun1.Turns = 9;

            xmlData = new MemoryStream();
            Assert.AreEqual("missing startaltitude",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.StartHeight = 1000;

            xmlData = new MemoryStream();
            Assert.AreEqual("missing finishaltitude",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.FinishHeight = 100;

            xmlData = new MemoryStream();
            Assert.AreEqual("missing courselength",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.CoarseLength = 1000;

            xmlData = new MemoryStream();
            Assert.AreEqual("missing coursesetter",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.RaceRun1.CoarseSetter = new AdditionalRaceProperties.Person {
                Name = "Sven Flossmann", Club = "WSV Glonn"
            };

            xmlData = new MemoryStream();
            Assert.AreEqual("missing forerunner",
                            Assert.ThrowsException <DSVExportException>(() => dsvExport.ExportXML(xmlData, model.GetRace(0))).Message);
            raceProps.RaceRun1.Forerunner1 = new AdditionalRaceProperties.Person {
                Name = "Fore Runner", Club = "WSV Glonn"
            };

            // No exception is allow to occur here
            xmlData = new MemoryStream();
            dsvExport.ExportXML(xmlData, model.GetRace(0));
        }