Example #1
0
 public virtual void addNastup(NastupNaSpravi nastup)
 {
     // TODO4: Dodaj ovakve provere u svim kolekcijama. Ako se null objekat doda u kolekciju, dump i loadFromDump
     // metodi nece raditi.
     if (nastup != null)
     {
         Nastupi.Add(nastup);
     }
 }
Example #2
0
        public virtual bool addGimnasticar(GimnasticarUcesnik g)
        {
            if (gimnasticarExists(g))
            {
                return(false);
            }

            NastupNaSpravi nastup = new NastupNaSpravi(g, 0);

            addNastup(nastup);
            return(true);
        }
Example #3
0
 public virtual void removeNastup(GimnasticarUcesnik g)
 {
     for (int i = 0; i < Nastupi.Count; ++i)
     {
         NastupNaSpravi n = Nastupi[i];
         if (n.Gimnasticar.Equals(g))
         {
             Nastupi.Remove(n);
             return;
         }
     }
 }
Example #4
0
        public virtual void loadFromDump(StringReader reader, IdMap map)
        {
            Sprava        = (Sprava)Enum.Parse(typeof(Sprava), reader.ReadLine());
            Grupa         = byte.Parse(reader.ReadLine());
            Rotacija      = byte.Parse(reader.ReadLine());
            NacinRotacije = (NacinRotacije)Enum.Parse(typeof(NacinRotacije), reader.ReadLine());

            int count = int.Parse(reader.ReadLine());

            for (int i = 0; i < count; ++i)
            {
                reader.ReadLine();  // id
                NastupNaSpravi n = new NastupNaSpravi();
                n.loadFromDump(reader, map);
                Nastupi.Add(n);
            }
        }
Example #5
0
        public virtual bool moveNastupDown(NastupNaSpravi nastup)
        {
            int index = Nastupi.IndexOf(nastup);

            if (index < 0 || index == Nastupi.Count - 1)
            {
                return(false);
            }

            Nastupi.Remove(nastup);
            Nastupi.Insert(index + 1, nastup);
            if (Nastupi[index].Ekipa != Nastupi[index + 1].Ekipa)
            {
                ponistiEkipe();
            }
            return(true);
        }
Example #6
0
        public virtual bool moveNastupUp(NastupNaSpravi nastup)
        {
            int index = Nastupi.IndexOf(nastup);

            if (index < 1)
            {
                return(false);
            }

            Nastupi.Remove(nastup);
            Nastupi.Insert(index - 1, nastup);
            if (Nastupi[index].Ekipa != Nastupi[index - 1].Ekipa)
            {
                // Promenili smo redosled gimnasticara koji nisu clanovi iste ekipe.
                ponistiEkipe();
            }
            return(true);
        }
Example #7
0
        public virtual void kreirajRotaciju(int grupa, int rot, List <List <Sprava> > aktivneSprave)
        {
            foreach (Sprava s in Sprave.getSpraveIPauze(PauzeMask, Takmicenje.Gimnastika))
            {
                StartListaNaSpravi startLista = getStartLista(s, grupa, rot);
                startLista.clear();

                if (aktivneSprave[rot - 1].IndexOf(s) == -1)
                {
                    // Sprava nije aktivna u rotaciji.
                    continue;
                }

                StartListaNaSpravi startListaPrethRot = getStartListaPrethRot(startLista, aktivneSprave);
                if (startListaPrethRot.Nastupi.Count == 0)
                {
                    continue;
                }
                if (Sprave.isPraznaSprava(startListaPrethRot.Sprava))
                {
                    // Ako je prethodna sprava pauza, samo prebacujem gimnasticare na novu spravu, bez obzira koji je
                    // nacin rotacije. Rotacija je izvrsena kada sam prebacivao sa sprave na pauzu.
                    foreach (NastupNaSpravi n in startListaPrethRot.Nastupi)
                    {
                        startLista.addNastup(new NastupNaSpravi(n.Gimnasticar, n.Ekipa));
                    }
                    continue;
                }

                // Nadji nacin rotacije (u start listi na prvoj rotaciji).
                StartListaNaSpravi current = startListaPrethRot;
                while (current.Rotacija != 1)
                {
                    current = getStartListaPrethRot(current, aktivneSprave);
                }
                NacinRotacije nacinRotacije = current.NacinRotacije;

                if (nacinRotacije == NacinRotacije.RotirajSve || nacinRotacije == NacinRotacije.NeRotirajNista)
                {
                    foreach (NastupNaSpravi n in startListaPrethRot.Nastupi)
                    {
                        startLista.addNastup(new NastupNaSpravi(n.Gimnasticar, n.Ekipa));
                    }

                    if (nacinRotacije == NacinRotacije.RotirajSve)
                    {
                        NastupNaSpravi n2 = startLista.Nastupi[0];
                        startLista.removeNastup(n2);
                        startLista.addNastup(n2);
                    }
                }
                else if (nacinRotacije == NacinRotacije.RotirajEkipeRotirajGimnasticare ||
                         nacinRotacije == NacinRotacije.NeRotirajEkipeRotirajGimnasticare)
                {
                    // Najpre pronadji ekipe
                    List <List <NastupNaSpravi> > listaEkipa = new List <List <NastupNaSpravi> >();
                    int m = 0;
                    while (m < startListaPrethRot.Nastupi.Count)
                    {
                        NastupNaSpravi n       = startListaPrethRot.Nastupi[m];
                        byte           ekipaId = n.Ekipa;
                        if (ekipaId == 0)
                        {
                            List <NastupNaSpravi> pojedinac = new List <NastupNaSpravi>();
                            pojedinac.Add(new NastupNaSpravi(n.Gimnasticar, 0));
                            listaEkipa.Add(pojedinac);
                            ++m;
                            continue;
                        }

                        List <NastupNaSpravi> novaEkipa = new List <NastupNaSpravi>();
                        while (n.Ekipa == ekipaId)
                        {
                            novaEkipa.Add(new NastupNaSpravi(n.Gimnasticar, ekipaId));
                            if (++m < startListaPrethRot.Nastupi.Count)
                            {
                                n = startListaPrethRot.Nastupi[m];
                            }
                            else
                            {
                                break;
                            }
                        }
                        listaEkipa.Add(novaEkipa);
                    }

                    if (nacinRotacije == NacinRotacije.RotirajEkipeRotirajGimnasticare)
                    {
                        // Rotiraj ekipe
                        List <NastupNaSpravi> prvaEkipa = listaEkipa[0];
                        listaEkipa.RemoveAt(0);
                        listaEkipa.Add(prvaEkipa);
                    }

                    foreach (List <NastupNaSpravi> ekipa in listaEkipa)
                    {
                        // Rotiraj clanove ekipe
                        NastupNaSpravi nastup = ekipa[0];
                        ekipa.RemoveAt(0);
                        ekipa.Add(nastup);

                        foreach (NastupNaSpravi n in ekipa)
                        {
                            startLista.addNastup(new NastupNaSpravi(n.Gimnasticar, n.Ekipa));
                        }
                    }
                }
            }
        }
Example #8
0
 public virtual void addNastup(NastupNaSpravi nastup)
 {
     Nastupi.Add(nastup);
 }
Example #9
0
        public virtual void addGimnasticar(GimnasticarUcesnik g)
        {
            if (gimnasticarExists(g))
                throw new BusinessException(
                    String.Format("Gimnasticar {0} je vec na start listi.", g));

            NastupNaSpravi nastup = new NastupNaSpravi(g, 0);
            addNastup(nastup);
        }
Example #10
0
 public virtual void removeNastup(NastupNaSpravi nastup)
 {
     Nastupi.Remove(nastup);
 }
Example #11
0
        public virtual bool moveNastupUp(NastupNaSpravi nastup)
        {
            int index = Nastupi.IndexOf(nastup);
            if (index < 1)
                return false;

            Nastupi.Remove(nastup);
            Nastupi.Insert(index - 1, nastup);
            return true;
        }
Example #12
0
        public virtual bool moveNastupDown(NastupNaSpravi nastup)
        {
            int index = Nastupi.IndexOf(nastup);
            if (index < 0 || index == Nastupi.Count - 1)
                return false;

            Nastupi.Remove(nastup);
            Nastupi.Insert(index + 1, nastup);
            return true;
        }
Example #13
0
 public virtual bool removeNastup(NastupNaSpravi nastup)
 {
     return(Nastupi.Remove(nastup));
 }
Example #14
0
        private void insertStartListe()
        {
            Takmicenje takmicenje = loadTakmicenje("Milano");
            TakmicarskaKategorija seniori = loadKategorija(takmicenje);

            Query q = new Query();
            q.Criteria.Add(new Criterion("Takmicenje", CriteriaOperator.Equal, takmicenje));
            IList<GimnasticarUcesnik> gim_uces = dataContext.GetByCriteria<GimnasticarUcesnik>(q);
            Dictionary<int, GimnasticarUcesnik> gim_ucesnici = new Dictionary<int, GimnasticarUcesnik>();
            foreach (GimnasticarUcesnik g in gim_uces)
                gim_ucesnici.Add(g.TakmicarskiBroj.Value, g);

            DeoTakmicenjaKod[] deoTakmicenja = {
                DeoTakmicenjaKod.Takmicenje1,
                DeoTakmicenjaKod.Takmicenje2,
                DeoTakmicenjaKod.Takmicenje3
            };
            string[] fileNames;
            if (gimnastika == Gimnastika.MSG)
                fileNames = new string[]
                {
                    @"..\..\test\Data\StartListaKvalifikacijeMuskarci.txt",
                    @"..\..\test\Data\StartListaVisebojMuskarci.txt",
                    @"..\..\test\Data\StartListaSpraveMuskarci.txt"
                };
            else
                fileNames = new string[]
                {
                    @"..\..\test\Data\StartListaKvalifikacijeZene.txt",
                    @"..\..\test\Data\StartListaVisebojZene.txt",
                    @"..\..\test\Data\StartListaSpraveZene.txt"
                };

            for (int i = 0; i < deoTakmicenja.Length; i++)
            {
                List<TakmicarskaKategorija> list = new List<TakmicarskaKategorija>();
                list.Add(seniori);
                RasporedNastupa raspored = new RasporedNastupa(list, deoTakmicenja[i]);

                StartListaParser parser = new StartListaParser();
                parser.parse(fileNames[i]);

                foreach (object[] o in parser.NastupiNaSpravi)
                {
                    Sprava sprava = Sprave.parse((string)o[0]);
                    int grupa = (int)o[1];
                    int rot = (int)o[2];
                    int broj = (int)o[3];
                    bool nastupaDvaPuta = (bool)o[4];

                    GimnasticarUcesnik gimnasticar = gim_ucesnici[broj];
                    if (gimnasticar == null)
                        throw new Exception("Greska prilikom dodavanja rasporeda nastupa.");
                    NastupNaSpravi nastup = new NastupNaSpravi(gimnasticar, 0);

                    while (raspored.getStartLista(sprava, grupa, rot) == null)
                        raspored.addNewGrupa();
                    raspored.getStartLista(sprava, grupa, rot).addNastup(nastup);
                }

                /*     dataContext.Evict(takmicenje);
                     foreach (GimnasticarUcesnik g in gim_uces)
                         dataContext.Evict(g);
                     dataContext.Evict(seniori);
                     */

                dataContext.Add(raspored);
            }
        }