예제 #1
0
        /// <summary>
        /// Funkcija koja daje određeni model kamere
        /// </summary>
        /// <param name="category">Kategorija kamere</param>
        /// <returns>Objekt IFotoaparat-a</returns>
        private IFotoaparat GetCamera(string category)
        {
            string directoryLocation = DirectoryLocator.GetDirectory("Cameras", Directory.GetCurrentDirectory(), 0, 3);

            if (string.Equals(directoryLocation, "ERROR"))
            {
                Console.WriteLine("Ne može se pronaći direktorij s kamerama!");
            }

            string[]           files      = Directory.GetFiles(directoryLocation);
            List <IFotoaparat> cameraList = new List <IFotoaparat>();

            foreach (string file in files)
            {
                XmlTextReader reader = new XmlTextReader(file);
                while (reader.Read())
                {
                    if (XmlNodeType.Element == reader.NodeType)
                    {
                        reader.MoveToAttribute("type");
                        string elementType = reader.Value;
                        if (string.Equals(elementType, category))
                        {
                            CameraFactory cameraFactory;
                            if (string.Equals(category, "DSLR"))
                            {
                                cameraFactory = new CreatorDSLR();
                            }
                            else if (string.Equals(category, "MILC"))
                            {
                                cameraFactory = new CreatorMILC();
                            }
                            else
                            {
                                cameraFactory = new CreatorCompact();
                            }

                            IFotoaparat newCamera = cameraFactory.Create();
                            for (int attInd = 0; attInd < reader.AttributeCount; attInd++)
                            {
                                reader.MoveToAttribute(attInd);
                                newCamera.SetValue(reader.Name, reader.Value);
                            }
                            cameraList.Add(newCamera);
                        }
                    }
                }
            }

            Randomizer rnd         = Randomizer.GetInstance();
            int        cameraIndex = rnd.GetNumber(0, cameraList.Count);

            return(cameraList[cameraIndex]);
        }
예제 #2
0
        /// <summary>
        /// Funkcija koja generira prijave
        /// </summary>
        /// <param name="listOfCompetitors">Lista natjecatelja</param>
        /// <param name="maxThemeNumberPerCompetitor">Maksimalni broj tema po natjecatelju</param>
        /// <param name="maxCategoryNumberPerCompetitor">Maksimalni broj kategorija po natjecatelju</param>
        /// <param name="numberOfThemes">Broj tema</param>
        /// <param name="listOfThemes">Lista tema</param>
        /// <param name="numberOfCategories">Broj kategorija</param>
        /// <param name="listOfCategories">Lista odabranih kategorija</param>
        /// <returns>Lista generiranih prijava</returns>
        private List <Registration> GenerateRegistrations(List <Competitor> listOfCompetitors, int maxThemeNumberPerCompetitor, int maxCategoryNumberPerCompetitor, int numberOfThemes, List <Theme> listOfThemes, int numberOfCategories, List <string> listOfCategories)
        {
            Randomizer          rnd = Randomizer.GetInstance();
            List <Registration> listOfRegistrations = new List <Registration>();

            Console.WriteLine("\nPrijave natjecatelja:");
            foreach (Competitor competitor in listOfCompetitors)
            {
                Console.WriteLine("\nNatjecatelj: " + competitor.Name);
                int numberOfRegistratedThemes;
                if (maxThemeNumberPerCompetitor < numberOfThemes)
                {
                    numberOfRegistratedThemes = rnd.GetNumber(1, maxThemeNumberPerCompetitor);
                }
                else
                {
                    numberOfRegistratedThemes = rnd.GetNumber(1, numberOfThemes);
                }
                List <Theme> listOfRegistratedThemes = new List <Theme>();
                Console.WriteLine("Registrirane teme:");
                while (listOfRegistratedThemes.Count < numberOfRegistratedThemes)
                {
                    int   themeIndex       = rnd.GetNumber(0, numberOfThemes);
                    Theme registratedTheme = listOfThemes[themeIndex];
                    if (listOfRegistratedThemes.Contains(registratedTheme))
                    {
                        continue;
                    }
                    listOfRegistratedThemes.Add(registratedTheme);
                    Console.WriteLine(registratedTheme.Name);

                    int numberOfRegistratedCategories;

                    if (maxThemeNumberPerCompetitor < numberOfCategories)
                    {
                        numberOfRegistratedCategories = rnd.GetNumber(1, maxCategoryNumberPerCompetitor);
                    }
                    else
                    {
                        numberOfRegistratedCategories = rnd.GetNumber(1, numberOfCategories);
                    }

                    List <string> listOfregistratedCategories = new List <string>();
                    while (listOfregistratedCategories.Count < numberOfRegistratedCategories)
                    {
                        int    categoryIndex       = rnd.GetNumber(0, numberOfCategories);
                        string registratedCategory = listOfCategories[categoryIndex];
                        if (listOfregistratedCategories.Contains(registratedCategory))
                        {
                            continue;
                        }
                        listOfregistratedCategories.Add(registratedCategory);
                        Console.WriteLine("Kategorija: " + registratedCategory);

                        IFotoaparat camera = GetCamera(registratedCategory);
                        Console.WriteLine("Koristi fotoaparat: " + camera.GetModelName());

                        Registration registration = new Registration(competitor, registratedTheme, registratedCategory, camera, new Photo());
                        listOfRegistrations.Add(registration);
                    }
                }
            }

            return(listOfRegistrations);
        }