private Takmicenje insertTakmicenje() { Takmicenje takmicenje = new Takmicenje(); takmicenje.Naziv = "3rd European Artistic Gymnastics Individual Championships"; takmicenje.Datum = DateTime.Parse("02.04.2009"); takmicenje.Mesto = "Milano"; takmicenje.Gimnastika = gimnastika; takmicenje.BrojDecimalaD = 3; takmicenje.BrojDecimalaE1 = 2; takmicenje.BrojDecimalaE = 3; takmicenje.BrojDecimalaPen = 1; takmicenje.BrojDecimalaTotal = 3; takmicenje.ZavrsenoTak1 = true; string naziv = (gimnastika == Gimnastika.MSG) ? "Seniori" : "Seniorke"; TakmicarskaKategorija takKategorija = new TakmicarskaKategorija(naziv); RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = "European Championships"; desc.Propozicije = createPropozicije(); takmicenje.addKategorija(takKategorija); takmicenje.addTakmicenjeDescription(desc); DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Add(takmicenje); RezultatskoTakmicenje rezTak = new RezultatskoTakmicenje(takmicenje, takKategorija, desc, createPropozicije()); DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().Add(rezTak); return(takmicenje); }
private void initTab(int i, TabPage tabPage, TakmicarskaKategorija takmicarskaKategorija) { TakmicariKategorijeUserControl takmicariKategorijeUserControl = new TakmicariKategorijeUserControl(); takmicariKategorijeUserControl.Anchor = this.takmicariKategorijeUserControl1.Anchor; takmicariKategorijeUserControl.Location = this.takmicariKategorijeUserControl1.Location; takmicariKategorijeUserControl.Size = this.takmicariKategorijeUserControl1.Size; takmicariKategorijeUserControl.TabIndex = this.takmicariKategorijeUserControl1.TabIndex; takmicariKategorijeUserControl.DataGridViewUserControl .GridColumnHeaderMouseClick += new EventHandler <GridColumnHeaderMouseClickEventArgs>(dataGridViewUserControl_GridColumnHeaderMouseClick); tabPage.SuspendLayout(); // NOTE: ovo je obavezno, jer bez toga naredba // tabPage.Controls.Add(takmicariKategorijeUserControl) pozicionira // user controlu unutar taba pre nego sto je zavrsena inicijalizacija // taba, i kao rezultat se dobija pogresna pozicija tabPage.Controls.Add(takmicariKategorijeUserControl); tabPage.Location = this.tabPage1.Location; tabPage.Padding = this.tabPage1.Padding; tabPage.Size = this.tabPage1.Size; tabPage.TabIndex = i; tabPage.Text = takmicarskaKategorija.ToString(); tabPage.UseVisualStyleBackColor = this.tabPage1.UseVisualStyleBackColor; tabPage.ResumeLayout(false); }
public IList <Ocena> FindByKatSpravaDeoTak(TakmicarskaKategorija kategorija, Sprava sprava, DeoTakmicenjaKod deoTakKod) { try { IQuery q = Session.CreateQuery(@" select o from Ocena o left join fetch o.Ocena2 join fetch o.Gimnasticar g join fetch g.TakmicarskaKategorija kat left join fetch g.DrzavaUcesnik dr left join fetch g.KlubUcesnik kl where kat = :kategorija and o.Sprava = :sprava and o.DeoTakmicenjaKod = :deoTakKod"); q.SetEntity("kategorija", kategorija); q.SetByte("sprava", (byte)sprava); q.SetByte("deoTakKod", (byte)deoTakKod); return(q.List <Ocena>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
private void initUI(IList <TakmicarskaKategorija> kategorije, IList <KlubUcesnik> klubovi, IList <DrzavaUcesnik> drzave, TakmicarskaKategorija startKategorija) { cmbKategorija.DropDownStyle = ComboBoxStyle.DropDown; cmbKategorija.Items.Add(SVE_KATEGORIJE); cmbKategorija.Items.AddRange(new List <TakmicarskaKategorija>(kategorije).ToArray()); cmbKategorija.AutoCompleteMode = AutoCompleteMode.Suggest; cmbKategorija.AutoCompleteSource = AutoCompleteSource.ListItems; cmbKlub.DropDownStyle = ComboBoxStyle.DropDown; cmbKlub.Items.Add(SVI_KLUBOVI); cmbKlub.Items.AddRange(new List <KlubUcesnik>(klubovi).ToArray()); cmbKlub.AutoCompleteMode = AutoCompleteMode.Suggest; cmbKlub.AutoCompleteSource = AutoCompleteSource.ListItems; cmbDrzava.DropDownStyle = ComboBoxStyle.DropDown; cmbDrzava.Items.Add(SVE_DRZAVE); cmbDrzava.Items.AddRange(new List <DrzavaUcesnik>(drzave).ToArray()); cmbDrzava.AutoCompleteMode = AutoCompleteMode.Suggest; cmbDrzava.AutoCompleteSource = AutoCompleteSource.ListItems; generateFilterEvent = false; resetFilter(startKategorija); generateFilterEvent = true; }
private void deleteKategorija(TakmicarskaKategorija k) { TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO(); takKatDAO.Attach(k, false); IList <RezultatskoTakmicenje> rezTakmicenja = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO() .FindByKategorija(k); if (rezTakmicenja.Count > 0) { throw new BusinessException("Morate najpre da izbrisete kategoriju iz svih takmicenja."); } IList <GimnasticarUcesnik> gimnasticari = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO() .FindByKategorija(k); if (gimnasticari.Count > 0) { throw new BusinessException("Morate najpre da izbrisete sve gimnasticare za datu kategoriju."); } TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje t = takmicenjeDAO.FindById(takmicenjeId); t.removeKategorija(SelectedKategorija); takKatDAO.Delete(k); takmicenjeDAO.Update(t); }
public IList <GimnasticarUcesnik> FindByTakmicenjeKat(int takmicenjeId, TakmicarskaKategorija kategorija) { try { string query = @"from GimnasticarUcesnik g left join fetch g.TakmicarskaKategorija k left join fetch g.KlubUcesnik left join fetch g.DrzavaUcesnik where k.Takmicenje.Id = :takmicenjeId"; if (kategorija != null) { query += " and g.TakmicarskaKategorija = :kategorija"; } query += " order by g.Prezime asc, g.Ime asc"; IQuery q = Session.CreateQuery(query); q.SetInt32("takmicenjeId", takmicenjeId); if (kategorija != null) { q.SetEntity("kategorija", kategorija); } return(q.List <GimnasticarUcesnik>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public SelectGimnasticarUcesnikForm(int takmicenjeId, Gimnastika gimnastika, TakmicarskaKategorija kategorija) { InitializeComponent(); Text = "Izaberi gimnasticara"; this.takmicenjeId = takmicenjeId; this.gimnastika = gimnastika; filterGimnasticarUcesnikUserControl1 = new FilterGimnasticarUcesnikUserControl(); filterGimnasticarUcesnikUserControl1.initialize(takmicenjeId, gimnastika, kategorija); this.pnlFilter.SuspendLayout(); this.pnlFilter.Controls.Add(filterGimnasticarUcesnikUserControl1); this.pnlFilter.Width = filterGimnasticarUcesnikUserControl1.Width; this.pnlFilter.ResumeLayout(false); filterGimnasticarUcesnikUserControl1.Filter += filterGimnasticarUcesnikUserControl1_Filter; int x = filterGimnasticarUcesnikUserControl1.Location.X + filterGimnasticarUcesnikUserControl1.Width + 30; int y = filterGimnasticarUcesnikUserControl1.Location.Y + filterGimnasticarUcesnikUserControl1.btnPonistiLocation.Y; btnOk.Location = new Point(x, y); btnCancel.Location = new Point(btnOk.Location.X + 85, btnOk.Location.Y); this.ClientSize = new Size(btnCancel.Location.X + btnCancel.Size.Width + 20, 540); initializeGridColumns(); DataGridViewUserControl.GridColumnHeaderMouseClick += new EventHandler <GridColumnHeaderMouseClickEventArgs>( DataGridViewUserControl_GridColumnHeaderMouseClick); showAll(kategorija); }
private void showAll(TakmicarskaKategorija kategorija) { filterGimnasticarUcesnikUserControl1.Filter -= filterGimnasticarUcesnikUserControl1_Filter; filterGimnasticarUcesnikUserControl1.resetFilter(kategorija); filterGimnasticarUcesnikUserControl1.Filter += filterGimnasticarUcesnikUserControl1_Filter; ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); IList <GimnasticarUcesnik> gimnasticari = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO() .FindByTakmicenjeKat(takmicenjeId, kategorija); setEntities(gimnasticari); } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw new InfrastructureException(ex.Message, ex); } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
public IList <GimnasticarUcesnik> FindGimnasticariUcesnici(string ime, string prezime, DrzavaUcesnik drzava, TakmicarskaKategorija kategorija, KlubUcesnik klub, int takmicenjeId) { string query = @"from GimnasticarUcesnik g left join fetch g.TakmicarskaKategorija k left join fetch g.KlubUcesnik left join fetch g.DrzavaUcesnik where k.Takmicenje.Id = :takmicenjeId"; if (!String.IsNullOrEmpty(ime)) { query += " and lower(g.Ime) like :ime"; } if (!String.IsNullOrEmpty(prezime)) { query += " and lower(g.Prezime) like :prezime"; } if (kategorija != null) { query += " and g.TakmicarskaKategorija = :kategorija"; } if (drzava != null) { query += " and g.DrzavaUcesnik = :drzava"; } if (klub != null) { query += " and g.KlubUcesnik = :klub"; } query += " order by g.Prezime asc, g.Ime asc"; IQuery q = Session.CreateQuery(query); q.SetInt32("takmicenjeId", takmicenjeId); if (!String.IsNullOrEmpty(ime)) { q.SetString("ime", ime.ToLower() + '%'); } if (!String.IsNullOrEmpty(prezime)) { q.SetString("prezime", prezime.ToLower() + '%'); } if (kategorija != null) { q.SetEntity("kategorija", kategorija); } if (drzava != null) { q.SetEntity("drzava", drzava); } if (klub != null) { q.SetEntity("klub", klub); } return(q.List <GimnasticarUcesnik>()); }
private void insertRezultatiSprava(DeoTakmicenjaKod deoTakKod, Takmicenje takmicenje) { TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO() .FindByTakmicenje(takmicenje.Id)[0]; RezultatskoTakmicenje rezTak = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO() .FindByKategorija(seniori)[0]; IList <Ocena> ocene = DAOFactoryFactory.DAOFactory.GetOcenaDAO() .FindByDeoTakmicenja(takmicenje.Id, deoTakKod); if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { foreach (PoredakSprava p in rezTak.Takmicenje1.PoredakSprava) { p.create(rezTak, ocene); } rezTak.Takmicenje1.PoredakPreskok.create(rezTak, ocene); rezTak.Takmicenje3.createUcesnici(rezTak.Takmicenje1, rezTak.Propozicije.Tak1PreskokNaOsnovuObaPreskoka); GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); if (gimnastika == Gimnastika.MSG) { /*GimnasticarUcesnik KHOROKHORDINSergei = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 628); * GimnasticarUcesnik WAMMESJeffrey = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 600); * * UcesnikTakmicenja3 ucesnikKHOROKHORDINSergei = * rezTak.Takmicenje3.getUcesnikKvalifikant(KHOROKHORDINSergei, Sprava.Vratilo); * * rezTak.Takmicenje3.removeUcesnik(ucesnikKHOROKHORDINSergei); * rezTak.Takmicenje3.addUcesnik( * new UcesnikTakmicenja3(WAMMESJeffrey, Sprava.Vratilo, 8, 14.600f, 8, * KvalifikacioniStatus.Q)); * * DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja3DAO().Delete(ucesnikKHOROKHORDINSergei);*/ } } else { foreach (PoredakSprava p in rezTak.Takmicenje3.Poredak) { p.create(rezTak, ocene); } rezTak.Takmicenje3.PoredakPreskok.create(rezTak, ocene); } if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1); DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO().Update(rezTak.Takmicenje3); } else { DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO().Update(rezTak.Takmicenje3); } }
private void insertRezultatiUkupno(DeoTakmicenjaKod deoTakKod, Takmicenje takmicenje) { TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO() .FindByTakmicenje(takmicenje.Id)[0]; RezultatskoTakmicenje rezTak = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO() .FindByKategorija(seniori)[0]; IList <Ocena> ocene = DAOFactoryFactory.DAOFactory.GetOcenaDAO().FindByDeoTakmicenja(takmicenje.Id, deoTakKod); GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { rezTak.Takmicenje1.PoredakUkupno.create(rezTak, ocene); rezTak.Takmicenje2.createUcesnici(rezTak.Takmicenje1); if (gimnastika == Gimnastika.ZSG) { /*GimnasticarUcesnik GORYUNOVAKristina = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 172); * GimnasticarUcesnik AFANASEVAKsenia = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 170); * * UcesnikTakmicenja2 ucesnikGORYUNOVAKristina = * rezTak.Takmicenje2.getUcesnikKvalifikant(GORYUNOVAKristina); * * rezTak.Takmicenje2.removeUcesnik(ucesnikGORYUNOVAKristina); * rezTak.Takmicenje2.addUcesnik( * new UcesnikTakmicenja2(AFANASEVAKsenia, 19, 54.575f, 20, * KvalifikacioniStatus.Q)); * * // NOTE: Primetiti da moram eksplicitno da obrisem izbacenog * // ucesnika, bez obzira sto je cascade="all-delete-orphan" * // za asocijaciju UcesnikTakmicenja2. Za razliku od ovoga, u * // klasi MainForm u metodu zavisiTakmicenje1 (koji pri kreiranju * // novih ucesnika najpre obrise stare ucesnike) nije neophodno da * // se brisu stari ucesnici, tj. bice automatski izbrisani. * // Ispitati zasto se desava razlicito ponasanje * * DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja2DAO().Delete(ucesnikGORYUNOVAKristina);*/ } } else { rezTak.Takmicenje2.Poredak.create(rezTak, ocene); } if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1); DAOFactoryFactory.DAOFactory.GetTakmicenje2DAO().Update(rezTak.Takmicenje2); } else { DAOFactoryFactory.DAOFactory.GetTakmicenje2DAO().Update(rezTak.Takmicenje2); } }
private void btnMoveDownKategorija_Click(object sender, EventArgs e) { TakmicarskaKategorija k = SelectedKategorija; if (k == null) { return; } if (treeViewTakmicenja.Nodes.Count > 0) { MessageDialogs.showMessage("Kategorije je moguce pomerati pre nego sto se dodaju takmicenja.", this.Text); return; } ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().Attach(k, false); TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje takmicenje = takmicenjeDAO.FindById(takmicenjeId); if (takmicenje.moveKategorijaDown(k)) { takmicenjeDAO.Update(takmicenje); takmicenje.LastModified = DateTime.Now; session.Transaction.Commit(); // reload kategorije setKategorije(DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenjeId)); SelectedKategorija = k; } } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageDialogs.showMessage(ex.Message, this.Text); return; } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
private void setGimnasticari(List <GimnasticarUcesnik> gimnasticari, TakmicarskaKategorija kat) { List <GimnasticarUcesnik> selGimnasticari = new List <GimnasticarUcesnik>(); foreach (GimnasticarUcesnik g in gimnasticari) { if (g.TakmicarskaKategorija.Equals(kat)) { selGimnasticari.Add(g); } } dataGridViewUserControl2.setItems <GimnasticarUcesnik>(selGimnasticari); }
protected override void checkBusinessRulesOnUpdate(DomainObject entity) { TakmicarskaKategorija kat = (TakmicarskaKategorija)entity; Notification notification = new Notification(); bool nazivChanged = (kat.Naziv.ToUpper() != oldNaziv.ToUpper()) ? true : false; if (nazivChanged && DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().existsKategorijaNaziv(kat.Naziv, takmicenjeId)) { notification.RegisterMessage("Naziv", "Kategorija sa datim nazivom vec postoji."); throw new BusinessException(notification); } }
private bool canAddGimnasticar(GimnasticarUcesnik g, TakmicarskaKategorija kategorija) { foreach (IList <GimnasticarUcesnik> gimList in gimnasticari) { foreach (GimnasticarUcesnik g2 in gimList) { if (g2.Equals(g)) { return(false); } } } return(true); }
public void resetFilter(TakmicarskaKategorija startKategorija) { txtIme.Text = String.Empty; txtPrezime.Text = String.Empty; if (startKategorija == null) { cmbKategorija.SelectedIndex = cmbKategorija.Items.IndexOf(SVE_KATEGORIJE); } else { cmbKategorija.SelectedItem = startKategorija; } cmbKlub.SelectedIndex = cmbKlub.Items.IndexOf(SVI_KLUBOVI); cmbDrzava.SelectedIndex = cmbDrzava.Items.IndexOf(SVE_DRZAVE); }
public IList <RezultatskoTakmicenje> FindByKategorija(TakmicarskaKategorija kat) { try { IQuery q = Session.CreateQuery(@" from RezultatskoTakmicenje r where r.Kategorija = :kat order by r.RedBroj"); q.SetEntity("kat", kat); return(q.List <RezultatskoTakmicenje>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public IList <GimnasticarUcesnik> FindByKategorija(TakmicarskaKategorija kategorija) { try { string query = @"from GimnasticarUcesnik g left join fetch g.KlubUcesnik left join fetch g.DrzavaUcesnik where g.TakmicarskaKategorija = :kategorija order by g.Prezime asc, g.Ime asc"; IQuery q = Session.CreateQuery(query); q.SetEntity("kategorija", kategorija); return(q.List <GimnasticarUcesnik>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
// TODO: Dodaj mogucnost promene kategorije (samo bi se promenila kategorija dok bi sve drugo ostalo // isto - gimnasticar bi i dalje bio u istim takmicenjima, ekipama, imao bi iste ocene. Prvo proveri da // li je ovo uopste moguce, tj. da li nece da dovede do greske u nekom drugom delu programa). public GimnasticarUcesnikForm(Nullable <int> gimnasticarUcesnikId, TakmicarskaKategorija kategorija, Gimnastika gimnastika) { if (gimnasticarUcesnikId == null) { throw new ArgumentException("GimnasticarUcesnikForm only works in edit mode."); } InitializeComponent(); this.updateLastModified = true; this.gimnastika = gimnastika; emptyKlub = new KlubUcesnik(); emptyKlub.Naziv = PRAZNO; emptyDrzava = new DrzavaUcesnik(); emptyDrzava.Naziv = PRAZNO; this.kategorija = kategorija; initialize(gimnasticarUcesnikId, true); }
public static GimnasticarUcesnik createGimnasticarUcesnik(Gimnasticar g, TakmicarskaKategorija kategorija) { string nazivDrzave = null; string kodDrzave = null; if (g.Drzava != null) { nazivDrzave = g.Drzava.Naziv; kodDrzave = g.Drzava.Kod; } string nazivKluba = null; string kodKluba = null; if (g.Klub != null) { nazivKluba = g.Klub.Naziv; kodKluba = g.Klub.Kod; } return(createGimnasticarUcesnik(g.Ime, g.SrednjeIme, g.Prezime, g.DatumRodjenja, kategorija, nazivDrzave, kodDrzave, nazivKluba, kodKluba)); }
public static void addTakmicarskaKategorija(TakmicarskaKategorija kat, int takmicenjeId) { Notification notification = new Notification(); kat.validate(notification); if (!notification.IsValid()) { throw new BusinessException(notification); } if (DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().existsKategorijaNaziv(kat.Naziv, takmicenjeId)) { notification.RegisterMessage("Naziv", "Kategorija sa datim nazivom vec postoji."); throw new BusinessException(notification); } TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje t = takmicenjeDAO.FindById(takmicenjeId); t.addKategorija(kat); takmicenjeDAO.Update(t); }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { TreeNode node = e.Node; while (node.Parent != null) { node = node.Parent; } takmicenje = node.Tag as Takmicenje; if (e.Node.Parent == null) { return; } TakmicarskaKategorija kat = e.Node.Tag as TakmicarskaKategorija; if (kat != null) { setGimnasticari(gimMap[kat.Takmicenje.Id], kat); } }
public RezultatskoTakmicenje FindByKatDesc(TakmicarskaKategorija kat, RezultatskoTakmicenjeDescription desc) { try { IQuery q = Session.CreateQuery(@" from RezultatskoTakmicenje r where r.Kategorija = :kat and r.TakmicenjeDescription = :desc"); q.SetEntity("kat", kat); q.SetEntity("desc", desc); IList <RezultatskoTakmicenje> result = q.List <RezultatskoTakmicenje>(); if (result.Count > 0) { return(result[0]); } return(null); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public void initialize(int takmicenjeId, Gimnastika gimnastika, TakmicarskaKategorija startKategorija) { this.takmicenjeId = takmicenjeId; this.gimnastika = gimnastika; ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); IList <TakmicarskaKategorija> kategorije = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenjeId); IList <KlubUcesnik> klubovi = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO().FindByTakmicenje(takmicenjeId); IList <DrzavaUcesnik> drzave = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO().FindByTakmicenje(takmicenjeId); initUI(kategorije, klubovi, drzave, startKategorija); } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw new InfrastructureException(ex.Message, ex); } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
// Proveri za sva finala kupa i zbir vise kola, da li postoje gimnasticari koji su nastupali u razlicitim // kategorijama u prethodnim kolima. public void proveriViseKola() { IList <int> takmicenjaId = getTakmicenjaId(); string takmicenjeHeader = String.Empty; for (int j = 0; j < takmicenjaId.Count; ++j) { ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje t = takmicenjeDAO.FindById(takmicenjaId[j]); if (!t.FinaleKupa && !t.ZbirViseKola) { continue; } takmicenjeHeader = j.ToString() + ". " + t.ToString(); if (t.FinaleKupa) { takmicenjeHeader += " - FINALE KUPA"; } else { takmicenjeHeader += " - ZBIR VISE KOLA"; } takmicenjeHeader += " (" + t.Id + ")"; List <Takmicenje> prethodnaKola = new List <Takmicenje>(); prethodnaKola.Add(t.PrvoKolo); prethodnaKola.Add(t.DrugoKolo); if (t.TreceKolo != null) { prethodnaKola.Add(t.TreceKolo); } if (t.CetvrtoKolo != null) { prethodnaKola.Add(t.CetvrtoKolo); } RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >(); foreach (Takmicenje prethKolo in prethodnaKola) { rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id)); } IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(t.Id); // Za svakog gimnasticara, zapamti u kojim kategorijama je ucestvovao u prethodnim kolima IDictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > mapaUcestvovanja = new Dictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > >(); foreach (RezultatskoTakmicenje rt in rezTakmicenja) { for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i) { IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i]; RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); if (rtFrom == null) { // Ovo se pojavljuje kod takmicenja ciji je id 226. continue; } Pair <int, TakmicarskaKategorija> koloKatPair = new Pair <int, TakmicarskaKategorija>(i, rt.Kategorija); foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari) { if (!mapaUcestvovanja.ContainsKey(g)) { IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >(); pairList.Add(koloKatPair); mapaUcestvovanja.Add(g, pairList); } else { mapaUcestvovanja[g].Add(koloKatPair); } } } } foreach (KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > entry in mapaUcestvovanja) { GimnasticarUcesnik g = entry.Key; TakmicarskaKategorija prevKat = null; bool ok = true; foreach (Pair <int, TakmicarskaKategorija> koloKatPair in entry.Value) { TakmicarskaKategorija kat = koloKatPair.Second; if (prevKat == null) { prevKat = kat; } else if (!kat.Equals(prevKat)) { ok = false; } } if (!ok) { MessageBox.Show(takmicenjeHeader + "\n\n" + g.ImeSrednjeImePrezimeDatumRodjenja); } } } } catch (Exception) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageBox.Show(takmicenjeHeader); } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } } }
public static void kreirajNaOsnovuViseKola(Takmicenje takmicenje, IList <KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > > razlicitaKola) { TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); takmicenjeDAO.Attach(takmicenje, false); List <Takmicenje> prethodnaKola = new List <Takmicenje>(); prethodnaKola.Add(takmicenje.PrvoKolo); prethodnaKola.Add(takmicenje.DrugoKolo); if (takmicenje.TreceKolo != null) { prethodnaKola.Add(takmicenje.TreceKolo); } if (takmicenje.CetvrtoKolo != null) { prethodnaKola.Add(takmicenje.CetvrtoKolo); } RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >(); foreach (Takmicenje prethKolo in prethodnaKola) { rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id)); } takmicenje.Kategorije.Clear(); foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethodnaKola[0]) { // Implementiran je najjednostavniji slucaj, gde se u svakom od prethodnih kola gleda samo prvo // takmicenje, i uzimaju se samo one kategorije gde postoji poklapanje. U principu, mogla bi se // implementirati i slozenija varijanta gde bi se, u slucaju da ne postoji poklapanje medju kategorijama, // otvorio prozor gde bi mogle da se uparuju kategorije, ali onda bi morao da nekako pamtim // koja su uparivanja izabrana (da bi ih primenio kod apdejtovanja kada se npr. ocena iz nekog od // prethodnih kola promeni). if (rt.TakmicenjeDescription.RedBroj != 0) { continue; } bool ok = true; foreach (List <RezultatskoTakmicenje> rezTakList in rezTakmicenjaPrethodnaKola) { if (Takmicenje.getRezTakmicenje(rezTakList, 0, rt.Kategorija) == null) { ok = false; break; } } if (ok) { takmicenje.addKategorija(new TakmicarskaKategorija(rt.Kategorija.Naziv)); } } if (takmicenje.Kategorije.Count == 0) { throw new BusinessException("Kategorije iz prethodnih kola se ne poklapaju"); } // prvi description je uvek kao naziv takmicenja. takmicenje.TakmicenjeDescriptions.Clear(); RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = takmicenje.Naziv; desc.Propozicije = new Propozicije(true, takmicenje.FinaleKupa, true); takmicenje.addTakmicenjeDescription(desc); // Takmicenje dodajem ovako rano zato sto se takmicenje.Id koristi dole u createGimnasticarUcesnik takmicenjeDAO.Add(takmicenje); IList <RezultatskoTakmicenje> rezTakmicenja = new List <RezultatskoTakmicenje>(); foreach (TakmicarskaKategorija k in takmicenje.Kategorije) { Propozicije p = new Propozicije(true, takmicenje.FinaleKupa, true); RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje, k, desc, p); rt.ImaEkipnoTakmicenje = true; rt.KombinovanoEkipnoTak = false; rezTakmicenja.Add(rt); } GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO(); // Za svakog gimnasticara, zapamti u kojim kategorijama je ucestvovao u prethodnim kolima IDictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > mapaUcestvovanja = new Dictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > >(); IDictionary <TakmicarskaKategorija, RezultatskoTakmicenje> katToRezTakMap = new Dictionary <TakmicarskaKategorija, RezultatskoTakmicenje>(); foreach (RezultatskoTakmicenje rt in rezTakmicenja) { katToRezTakMap.Add(rt.Kategorija, rt); for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i) { IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i]; RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); Pair <int, TakmicarskaKategorija> koloKatPair = new Pair <int, TakmicarskaKategorija>(i, rt.Kategorija); foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari) { if (!mapaUcestvovanja.ContainsKey(g)) { // Koriscenje IDictionary obezbedjuje da je svaki gimnasticar dodat u samo jednu kategoriju. GimnasticarUcesnik g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, rt.Kategorija); IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >(); pairList.Add(koloKatPair); mapaUcestvovanja.Add(g2, pairList); gimUcesnikDAO.Add(g2); } else { mapaUcestvovanja[g].Add(koloKatPair); } } } } foreach (KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > entry in mapaUcestvovanja) { GimnasticarUcesnik g = entry.Key; TakmicarskaKategorija prevKat = null; bool ok = true; foreach (Pair <int, TakmicarskaKategorija> koloKatPair in entry.Value) { TakmicarskaKategorija kat = koloKatPair.Second; if (prevKat == null) { prevKat = kat; } else if (!kat.Equals(prevKat)) { ok = false; } RezultatskoTakmicenje rt = katToRezTakMap[kat]; rt.Takmicenje1.addGimnasticar(g); } if (!ok) { razlicitaKola.Add(entry); } } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola) { RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe) { if (rt.Takmicenje1.Ekipe.Contains(e)) { continue; } Ekipa ekipa = new Ekipa(); ekipa.Naziv = e.Naziv; ekipa.Kod = e.Kod; rt.Takmicenje1.addEkipa(ekipa, false); ekipaDAO.Add(ekipa); } } } // TODO: Prebaci u domenske klase sto vise koda iz ove funkcije (isto i u funkciji updateViseKola). takmicenje.kreirajRezultateViseKola(rezTakmicenja, rezTakmicenjaPrethodnaKola); foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola) { foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethKolo) { rezTakDAO.Evict(rt); } } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { rezTakDAO.Add(rt); } }
public static void createFromPrevTakmicenje(Takmicenje takmicenje, Takmicenje from, IList <RezultatskoTakmicenje> rezTakmicenjaFrom, IDictionary <int, List <GimnasticarUcesnik> > rezTakToGimnasticarUcesnikMap) { const int MAX = 1024; TakmicarskaKategorija[] kategorije = new TakmicarskaKategorija[MAX]; for (int i = 0; i < MAX; ++i) { kategorije[i] = null; } foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { if (kategorije[rtFrom.Kategorija.RedBroj] == null) { kategorije[rtFrom.Kategorija.RedBroj] = new TakmicarskaKategorija(rtFrom.Kategorija.Naziv); } } PropozicijeDAO propozicijeDAO = DAOFactoryFactory.DAOFactory.GetPropozicijeDAO(); foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { propozicijeDAO.Attach(rtFrom.TakmicenjeDescription.Propozicije, false); propozicijeDAO.Attach(rtFrom.Propozicije, false); } RezultatskoTakmicenjeDescription[] descriptions = new RezultatskoTakmicenjeDescription[MAX]; for (int i = 0; i < MAX; ++i) { descriptions[i] = null; } foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { if (descriptions[rtFrom.TakmicenjeDescription.RedBroj] == null) { RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = rtFrom.TakmicenjeDescription.Naziv; desc.Propozicije = new Propozicije(); // Apdejtujem jedino propozicije za takmicenje 4 zbog kombinovanog ekipnog takmicenja. // Ostale propozicije su na inicijalnim vrednostima. rtFrom.TakmicenjeDescription.Propozicije.copyTakmicenje4To(desc.Propozicije); descriptions[rtFrom.TakmicenjeDescription.RedBroj] = desc; } } takmicenje.Kategorije.Clear(); for (int i = 0; i < MAX; ++i) { if (kategorije[i] != null) { takmicenje.addKategorija(kategorije[i]); } } takmicenje.TakmicenjeDescriptions.Clear(); bool first = true; for (int i = 0; i < MAX; ++i) { if (descriptions[i] != null) { if (first) { // prvi description je uvek kao naziv takmicenja. RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = takmicenje.Naziv; desc.Propozicije = descriptions[i].Propozicije; // klonirane propozicije descriptions[i] = desc; first = false; } takmicenje.addTakmicenjeDescription(descriptions[i]); } } IList <RezultatskoTakmicenje> rezTakmicenja = new List <RezultatskoTakmicenje>(); foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje, kategorije[rtFrom.Kategorija.RedBroj], descriptions[rtFrom.TakmicenjeDescription.RedBroj], new Propozicije()); rtFrom.Propozicije.copyTakmicenje4To(rt.Propozicije); rezTakmicenja.Add(rt); } foreach (RezultatskoTakmicenjeDescription d in takmicenje.TakmicenjeDescriptions) { RezultatskoTakmicenje.updateImaEkipnoTakmicenje(rezTakmicenja, d); } TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); takmicenjeDAO.Add(takmicenje); IDictionary <int, GimnasticarUcesnik> gimnasticariMap = new Dictionary <int, GimnasticarUcesnik>(); for (int i = 0; i < rezTakmicenja.Count; ++i) { RezultatskoTakmicenje rt = rezTakmicenja[i]; RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i]; foreach (GimnasticarUcesnik g in rezTakToGimnasticarUcesnikMap[rtFrom.Id]) { GimnasticarUcesnik g2; if (!gimnasticariMap.ContainsKey(g.Id)) { g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, kategorije[g.TakmicarskaKategorija.RedBroj]); gimnasticariMap[g.Id] = g2; } else { g2 = gimnasticariMap[g.Id]; } rt.Takmicenje1.addGimnasticar(g2); rt.Takmicenje1.updateRezultatiOnGimnasticarAdded(g2, new List <Ocena>(), rt); } } Takmicenje1DAO takmicenje1DAO = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO(); for (int i = 0; i < rezTakmicenja.Count; ++i) { RezultatskoTakmicenje rt = rezTakmicenja[i]; RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i]; takmicenje1DAO.Attach(rtFrom.Takmicenje1, false); foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe) { Ekipa ekipa = new Ekipa(); ekipa.Naziv = e.Naziv; ekipa.Kod = e.Kod; // Ne kopiram clanove ekipe zato sto dodavati clanove ekipe ima smisla jedino ako se znaju // rezultati, a ovaj metod samo pravi pripremu takmicenja i nema nikakvih rezultata. rt.Takmicenje1.addEkipa(ekipa, true); } } RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO(); foreach (RezultatskoTakmicenje rt in rezTakmicenja) { rezultatskoTakmicenjeDAO.Add(rt); foreach (Ekipa e in rt.Takmicenje1.Ekipe) { ekipaDAO.Add(e); } } GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); foreach (GimnasticarUcesnik g in gimnasticariMap.Values) { gimnasticarUcesnikDAO.Add(g); } }
private bool gridOpened(TakmicarskaKategorija kategorija, Sprava sprava) { return(ocene.ContainsKey(calculateOceneKey(kategorija, sprava))); }
// TODO: Dodati naziv grada u KlubUcesnik private int calculateOceneKey(TakmicarskaKategorija kat, Sprava sprava) { return(kategorije.IndexOf(kat) * ((int)Sprava.Max + 1) + (int)sprava); }
private void showGridOcene(TakmicarskaKategorija kategorija, Sprava sprava) { ActiveKategorija = kategorija; ActiveSprava = sprava; }