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); } }
public virtual bool addGimnasticar(GimnasticarUcesnik g) { if (gimnasticarExists(g)) { return(false); } NastupNaSpravi nastup = new NastupNaSpravi(g, 0); addNastup(nastup); return(true); }
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; } } }
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); } }
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); }
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); }
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)); } } } } }
public virtual void addNastup(NastupNaSpravi nastup) { Nastupi.Add(nastup); }
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); }
public virtual void removeNastup(NastupNaSpravi nastup) { Nastupi.Remove(nastup); }
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; }
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; }
public virtual bool removeNastup(NastupNaSpravi nastup) { return(Nastupi.Remove(nastup)); }
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); } }