private void addCmd()
        {
            NacinIzboraGimnasticaraForm form2 = new NacinIzboraGimnasticaraForm();

            if (form2.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            List <GimnasticarUcesnik> selGimnasticari = new List <GimnasticarUcesnik>();

            DialogResult dlgResult = DialogResult.None;
            SelectGimnasticariPrethTakmForm form3 = null;
            SelectGimnasticarForm           form  = null;

            if (form2.IzPrethodnogTakmicenja)
            {
                try
                {
                    form3     = new SelectGimnasticariPrethTakmForm(takmicenje.Gimnastika, false);
                    dlgResult = form3.ShowDialog();
                }
                catch (InfrastructureException ex)
                {
                    MessageDialogs.showError(ex.Message, this.Text);
                }
                if (dlgResult != DialogResult.OK || form3.SelectedGimnasticari.Count == 0)
                {
                    return;
                }
            }
            else
            {
                try
                {
                    form      = new SelectGimnasticarForm(takmicenje.Gimnastika);
                    dlgResult = form.ShowDialog();
                }
                catch (InfrastructureException ex)
                {
                    MessageDialogs.showError(ex.Message, this.Text);
                }

                if (dlgResult != DialogResult.OK || form.SelectedEntities.Count == 0)
                {
                    return;
                }
            }

            bool added = false;
            List <GimnasticarUcesnik> okGimnasticari      = new List <GimnasticarUcesnik>();
            List <GimnasticarUcesnik> illegalGimnasticari = new List <GimnasticarUcesnik>();

            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        if (form2.IzPrethodnogTakmicenja)
                        {
                            foreach (GimnasticarUcesnik g in form3.SelectedGimnasticari)
                            {
                                selGimnasticari.Add(GimnasticarUcesnikService.createGimnasticarUcesnik(g, ActiveKategorija));
                            }
                        }
                        else
                        {
                            foreach (Gimnasticar g in form.SelectedEntities)
                            {
                                selGimnasticari.Add(GimnasticarUcesnikService.createGimnasticarUcesnik(g, ActiveKategorija));
                            }
                        }

                        foreach (GimnasticarUcesnik g in selGimnasticari)
                        {
                            if (canAddGimnasticar(g, ActiveKategorija))
                            {
                                okGimnasticari.Add(g);
                            }
                            else
                            {
                                illegalGimnasticari.Add(g);
                            }
                        }

                        GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
                        foreach (GimnasticarUcesnik g in okGimnasticari)
                        {
                            gimUcesnikDAO.Add(g);
                        }

                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                        added = true;
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showMessage(ex.Message, this.Text);
            }
            finally
            {
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }

            if (!added)
            {
                Close();
                return;
            }

            if (okGimnasticari.Count > 0)
            {
                List <GimnasticarUcesnik> activeGimnasticari = gimnasticari[tabControl1.SelectedIndex];
                foreach (GimnasticarUcesnik g in okGimnasticari)
                {
                    activeGimnasticari.Add(g);
                }

                setGimnasticari(activeGimnasticari);

                // NOTE: Ako je DataGridViewUserControl sortiran, tada metod setItems
                // (koga poziva metod setGimnasticari) osvezava prikaz (poziva
                // refreshItems). Ako nije sortiran, potrebno je eksplicitno osveziti
                // prikaz
                // Dodatni razlog zasto je potrebno osveziti prikaz je cinjenica da
                // se metod setItems poziva sa parametrom tipa List, a u tom slucaju
                // DataGridViewUserControl ne kreira novu listu za DataSource i nece
                // automatski osveziti prikaz.

                if (!getActiveDataGridViewUserControl().isSorted())
                {
                    getActiveDataGridViewUserControl().refreshItems();
                }

                getActiveDataGridViewUserControl().setSelectedItem <GimnasticarUcesnik>
                    (okGimnasticari[okGimnasticari.Count - 1]);
                updateGimnasticariCount();
            }

            if (illegalGimnasticari.Count > 0)
            {
                string msg = "Sledeci gimnasticari vec postoje medju " +
                             "prijavljenim gimansticarima: \n\n";
                msg += StringUtil.getListString(illegalGimnasticari.ToArray());
                MessageDialogs.showMessage(msg, this.Text);
            }
        }
        private void addCmd()
        {
            NacinIzboraGimnasticaraForm form2 = new NacinIzboraGimnasticaraForm();
            if (form2.ShowDialog() != DialogResult.OK)
                return;

            List<GimnasticarUcesnik> selGimnasticari = new List<GimnasticarUcesnik>();

            DialogResult dlgResult = DialogResult.None;
            SelectGimnasticariPrethTakmForm form3 = null;
            SelectGimnasticarForm form = null;
            if (form2.IzPrethodnogTakmicenja)
            {
                try
                {
                    form3 = new SelectGimnasticariPrethTakmForm(ActiveKategorija.Gimnastika, false);
                    dlgResult = form3.ShowDialog();
                }
                catch (InfrastructureException ex)
                {
                    MessageDialogs.showError(ex.Message, this.Text);
                }
                if (dlgResult != DialogResult.OK || form3.SelectedGimnasticari.Count == 0)
                    return;
            }
            else
            {
                try
                {
                    form = new SelectGimnasticarForm(ActiveKategorija.Gimnastika);
                    dlgResult = form.ShowDialog();
                }
                catch (InfrastructureException ex)
                {
                    MessageDialogs.showError(ex.Message, this.Text);
                }

                if (dlgResult != DialogResult.OK || form.SelectedEntities.Count == 0)
                    return;
            }

            bool added = false;
            List<GimnasticarUcesnik> okGimnasticari = new List<GimnasticarUcesnik>();
            List<GimnasticarUcesnik> illegalGimnasticari = new List<GimnasticarUcesnik>();
            try
            {
                DataAccessProviderFactory factory = new DataAccessProviderFactory();
                dataContext = factory.GetDataContext();
                dataContext.BeginTransaction();

                if (form2.IzPrethodnogTakmicenja)
                {
                    foreach (GimnasticarUcesnik g in form3.SelectedGimnasticari)
                    {
                        selGimnasticari.Add(createGimnasticarUcesnik(
                            g, ActiveKategorija));
                    }
                }
                else
                {
                    foreach (Gimnasticar g in form.SelectedEntities)
                    {
                        selGimnasticari.Add(createGimnasticarUcesnik(
                            g, ActiveKategorija));
                    }
                }

                foreach (GimnasticarUcesnik g in selGimnasticari)
                {
                    //GimnasticarUcesnik gimnasticar = createGimnasticarUcesnik(
                    //    g, ActiveKategorija);
                    if (canAddGimnasticar(g/*imnasticar*/, ActiveKategorija))
                        okGimnasticari.Add(g/*imnasticar*/);
                    else
                        illegalGimnasticari.Add(g);
                }

                foreach (GimnasticarUcesnik g in okGimnasticari)
                    dataContext.Add(g);
                dataContext.Commit();
                added = true;
            }
            catch (Exception ex)
            {
                if (dataContext != null && dataContext.IsInTransaction)
                    dataContext.Rollback();
                MessageDialogs.showMessage(
                    Strings.getFullDatabaseAccessExceptionMessage(ex), this.Text);
            }
            finally
            {
                if (dataContext != null)
                    dataContext.Dispose();
                dataContext = null;
            }

            if (!added)
            {
                Close();
                return;
            }

            if (okGimnasticari.Count > 0)
            {
                List<GimnasticarUcesnik> activeGimnasticari = gimnasticari[tabControl1.SelectedIndex];
                foreach (GimnasticarUcesnik g in okGimnasticari)
                {
                    activeGimnasticari.Add(g);
                }

                setGimnasticari(activeGimnasticari);

                // NOTE: Ako je DataGridViewUserControl sortiran, tada metod setItems
                // (koga poziva metod setGimnasticari) osvezava prikaz (poziva
                // refreshItems). Ako nije sortiran, potrebno je eksplicitno osveziti
                // prikaz
                // Dodatni razlog zasto je potrebno osveziti prikaz je cinjenica da
                // se metod setItems poziva sa parametrom tipa List, a u tom slucaju
                // DataGridViewUserControl ne kreira novu listu za DataSource i nece
                // automatski osveziti prikaz.

                if (!getActiveDataGridViewUserControl().isSorted())
                    getActiveDataGridViewUserControl().refreshItems();

                getActiveDataGridViewUserControl().setSelectedItem<GimnasticarUcesnik>
                    (okGimnasticari[okGimnasticari.Count - 1]);
                updateGimnasticariCount();
            }

            if (illegalGimnasticari.Count > 0)
            {
                string msg = "Sledeci gimnasticari vec postoje medju " +
                    "prijavljenim gimansticarima: \n\n";
                msg += StringUtil.getListString(illegalGimnasticari.ToArray());
                MessageDialogs.showMessage(msg, this.Text);
            }
        }