예제 #1
0
        //////////////////////////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CCaracteristiqueEntite CaracteristiqueEntite = (CCaracteristiqueEntite)objet;


                if (CaracteristiqueEntite.TypeCaracteristique == null)
                {
                    result.EmpileErreur(I.T("Characteristic should be associated with a type|159"));
                }

                CRelationCaracteristiqueEntite_ChampCustomServeur relServeur = new CRelationCaracteristiqueEntite_ChampCustomServeur(IdSession);
                foreach (CRelationCaracteristiqueEntite_ChampCustom rel in CNettoyeurValeursChamps.RelationsChampsNormales(CaracteristiqueEntite))
                {
                    CResultAErreur resultTmp = relServeur.VerifieDonnees(rel);
                    if (!resultTmp)
                    {
                        result.Erreur.EmpileErreurs(resultTmp.Erreur);
                        result.SetFalse();
                    }
                }

                return(result);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Error in characteristic data|160"));
            }
            return(result);
        }
예제 #2
0
        /// /////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees()
        {
            CResultAErreur result = base.VerifieDonnees();

            if (!result)
            {
                return(result);
            }
            Hashtable tableNoms = new Hashtable();

            foreach (C2iChampExport champ in this.Champs)
            {
                CResultAErreur tempResult = CResultAErreur.True;
                tempResult = champ.VerifieDonnees();
                if (!tempResult)
                {
                    result.Erreur.EmpileErreurs(tempResult.Erreur);
                    result.SetFalse();
                    return(result);
                }

                if (!tableNoms.ContainsKey(champ.NomChamp))
                {
                    tableNoms[champ.NomChamp] = true;
                }
                else if (champ.Origine is C2iOrigineChampExportChamp)
                {
                    if (champ.NomChamp == ((C2iOrigineChampExportChamp)champ.Origine).ChampOrigine.Nom)
                    {
                        champ.NomChamp += " " + NomTable;
                    }
                    else
                    {
                        champ.NomChamp = ((C2iOrigineChampExportChamp)champ.Origine).ChampOrigine.Nom;
                    }

                    if (!tableNoms.ContainsKey(champ.NomChamp))
                    {
                        tableNoms[champ.NomChamp] = true;
                    }
                    else
                    {
                        result.EmpileErreur(I.T("There is several fields having the same name \"@1\" in the table \"@2\"|114", champ.NomChamp, NomTable));
                        return(result);
                    }
                }
                else
                {
                    result.EmpileErreur(I.T("There is several fields having the same name \"@1\" in the table \"@2\"|114", champ.NomChamp, NomTable));
                    return(result);
                }
            }
            return(result);
        }
예제 #3
0
        //////////////////////////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CEntreeAgenda entree = (CEntreeAgenda)objet;
                if (entree.Libelle == "")
                {
                    result.EmpileErreur(I.T("Diary entry label cannot be empty|311"));
                }

                if (entree.DateDebut > entree.DateFin)
                {
                    result.EmpileErreur(I.T("Inconsistent date or time values|312"));
                }

                CRelationEntreeAgenda_ChampCustomServeur relServeur = new CRelationEntreeAgenda_ChampCustomServeur(IdSession);
                foreach (CRelationEntreeAgenda_ChampCustom rel in CNettoyeurValeursChamps.RelationsChampsNormales(entree))
                {
                    CResultAErreur resultTmp = relServeur.VerifieDonnees(rel);
                    if (!resultTmp)
                    {
                        result.Erreur.EmpileErreurs(resultTmp.Erreur);
                        result.SetFalse();
                    }
                }

                Hashtable m_tableRelationsToElements = new Hashtable();
                foreach (CRelationEntreeAgenda_ElementAAgenda relElement in entree.RelationsElementsAgenda)
                {
                    m_tableRelationsToElements[relElement.RelationTypeEntree_TypeElement.Id] = true;
                }
                foreach (CRelationTypeEntreeAgenda_TypeElementAAgenda relType in entree.TypeEntree.RelationsTypeElementsAAgenda)
                {
                    if (relType.Obligatoire && m_tableRelationsToElements[relType.Id] == null)
                    {
                        result.EmpileErreur(I.T("Associated element @1 must be defined|313", relType.Libelle));
                    }
                }

                return(result);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Diary netry data error|310"));
            }
            return(result);
        }
예제 #4
0
        //////////////////////////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CDossierSuivi DossierSuivi = (CDossierSuivi)objet;
                if (DossierSuivi.Libelle == "")
                {
                    result.EmpileErreur(I.T("Workbook label should not be empty|306"));
                }

                if (DossierSuivi.TypeDossier == null)
                {
                    result.EmpileErreur(I.T("The Worbook Type connot be null|307"));
                }
                else
                if (DossierSuivi.ElementSuivi != null && DossierSuivi.TypeDossier.TypeSuivi != null &&
                    !DossierSuivi.ElementSuivi.GetType().Equals(DossierSuivi.TypeDossier.TypeSuivi))
                {
                    result.EmpileErreur(I.T("Workbook linked element is not of the expected type (@1)|308",
                                            DynamicClassAttribute.GetNomConvivial(DossierSuivi.TypeDossier.TypeSuivi)));
                }

                CRelationDossierSuivi_ChampCustomServeur relServeur = new CRelationDossierSuivi_ChampCustomServeur(IdSession);
                foreach (CRelationDossierSuivi_ChampCustom rel in CNettoyeurValeursChamps.RelationsChampsNormales(DossierSuivi))
                {
                    CResultAErreur resultTmp = relServeur.VerifieDonnees(rel);
                    if (!resultTmp)
                    {
                        result.Erreur.EmpileErreurs(resultTmp.Erreur);
                        result.SetFalse();
                    }
                }

                Hashtable m_tableRelationsToElements = new Hashtable();
                foreach (CRelationDossierSuivi_Element relElement in DossierSuivi.RelationsElements)
                {
                    m_tableRelationsToElements[relElement.RelationParametre_TypeElement.Id] = true;
                }

                return(result);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Workbook data error|309"));
            }
            return(result);
        }
예제 #5
0
        /// /////////////////////////////////////////////
        public virtual CResultAErreur VerifieDonnees()
        {
            CResultAErreur result = CResultAErreur.True;

            foreach (ITableExport table in this.TablesFilles)
            {
                CResultAErreur tempResult = CResultAErreur.True;
                tempResult = table.VerifieDonnees();
                if (!tempResult)
                {
                    result.Erreur.EmpileErreurs(tempResult.Erreur);
                    result.SetFalse();
                    return(result);
                }
            }
            return(result);
        }
예제 #6
0
        public static CResultAErreur VerifieDonnees(IElementAChamps elementAChamps)
        {
            IDefinisseurChampCustom[] definisseurs  = elementAChamps.DefinisseursDeChamps;
            C2iExpressionVrai         constanteTrue = new C2iExpressionVrai();
            string         strValTrue = C2iExpressionConstante.GetPseudoCode(constanteTrue);
            CResultAErreur result     = CResultAErreur.True;

            foreach (IDefinisseurChampCustom definisseur in definisseurs)
            {
                foreach (CChampCustom champ in definisseur.TousLesChampsAssocies)
                {
                    if (champ.DataFormuleValidation.CompareTo(strValTrue) != 0)
                    {
                        result &= champ.VerifieValeur(elementAChamps.GetValeurChamp(champ.Id));
                    }
                }
            }
            if (result.Erreur.Erreurs.Length > 0)
            {
                result.SetFalse();
            }
            return(result);
        }
예제 #7
0
        //-------------------------------------------------------------------------
        private CResultAErreur CheckNodesFromListe(TreeNodeCollection nodeCollection, CListeObjetsDonnees liste)
        {
            CResultAErreur result = CResultAErreur.True;

            if (!liste.TypeObjets.IsSubclassOf(typeof(CGroupeStructurant)))
            {
                throw new Exception(I.T("The type of the list objects  must inherit from CGroupeStructurant.|30078"));
            }

            foreach (TreeNode node in nodeCollection)
            {
                if (node.Tag is CGroupeStructurant)
                {
                    CGroupeStructurant groupe = (CGroupeStructurant)node.Tag;
                    if (liste.Contains(groupe))
                    {
                        if (node.Parent != null)
                        {
                            node.Parent.Expand();
                        }
                        node.Checked = true;
                        CResultAErreur tempResult = CheckNodesFromListe(node.Nodes, liste);
                        if (!tempResult)
                        {
                            result.Erreur.EmpileErreurs(tempResult.Erreur);
                            result.SetFalse();
                            return(result);
                        }
                    }
                    else
                    {
                        node.Checked = false;
                    }
                }
            }
            return(result);
        }
예제 #8
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CActeur acteur = (CActeur)objet;

                if (acteur.Nom == "")
                {
                    result.EmpileErreur(I.T("The name of the Member cannot be empty|262"));
                }

                CRelationActeur_ChampCustomServeur relServeur = new CRelationActeur_ChampCustomServeur(IdSession);
                foreach (CRelationActeur_ChampCustom rel in CNettoyeurValeursChamps.RelationsChampsNormales(acteur))
                {
                    CResultAErreur resultTmp = relServeur.VerifieDonnees(rel);
                    if (!resultTmp)
                    {
                        result.Erreur.EmpileErreurs(resultTmp.Erreur);
                        result.SetFalse();
                    }
                }

                if (acteur.ActeurParent != null &&
                    acteur.ActeurParent.IsChildOf(acteur))
                {
                    result.EmpileErreur(I.T("A cyclic member relationship has been detected|134"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
예제 #9
0
        /// /////////////////////////////////////////////
        public CResultAErreur VerifieDonnees()
        {
            CResultAErreur result = CResultAErreur.True;

            Hashtable tableNoms = new Hashtable();

            foreach (C2iChampDeRequete champ in this.ListeChamps)
            {
                CResultAErreur tempResult = CResultAErreur.True;
                tempResult = champ.VerifieDonnees();
                if (!tempResult)
                {
                    result.Erreur.EmpileErreurs(tempResult.Erreur);
                    result.SetFalse();
                    return(result);
                }

                if (!tableNoms.ContainsKey(champ.NomChamp))
                {
                    tableNoms[champ.NomChamp] = true;
                }
                else
                {
                    result.EmpileErreur(I.T("Several fields have the name \"@1\"|105", champ.NomChamp));
                    return(result);
                }
            }

            //Vérifie que l'on arrive a créer l'arbre
            result = CalculeArbre();
            if (!result)
            {
                return(result);
            }
            return(result);
        }
예제 #10
0
        //------------------------------------------------------------------------------------------------
        public static CResultAErreur UpdateTable(CStructureTable structure, IDatabaseConnexion connexion, ArrayList strChampsAutorisesANull)
        {
            ArrayList champsCrees = new ArrayList();

            CResultAErreur result = CResultAErreur.True;

            IDataAdapter adapter = connexion.GetSimpleReadAdapter("SELECT * FROM " + structure.NomTableInDb);
            DataSet      ds      = new DataSet();

            adapter.FillSchema(ds, SchemaType.Mapped);
            DataTable dt = ds.Tables["TABLE"];

            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            #region M.A.J des champs de la table

            foreach (CInfoChampTable info in structure.Champs)
            {
                bool bExists          = true;
                bool bModifiedType    = false;
                bool bModifiedNotNull = false;
                bool bModifiedLength  = false;

                foreach (DataColumn colonne in dt.Columns)
                {
                    if (info.NomChamp == colonne.ColumnName)
                    {
                        if (info.IsLongString)
                        {
                            if (colonne.MaxLength < 10000)
                            {
                                bModifiedLength = true;
                            }
                        }
                        else
                        if (colonne.MaxLength != info.Longueur && info.TypeDonnee == typeof(string))
                        {
                            bModifiedLength = true;
                        }
                        if (colonne.DataType != info.TypeDonnee)
                        {
                            if (info.TypeDonnee != typeof(CDonneeBinaireInRow) && colonne.DataType != typeof(byte[]))
                            {
                                bModifiedType = true;
                            }
                        }
                        if (colonne.AllowDBNull != info.NullAuthorized)
                        {
                            bModifiedNotNull = true;
                        }

                        bExists = true;
                        break;
                    }
                    bExists = false;
                }
                if (!bExists)
                {
                    string strRequeteUpdate = "ALTER TABLE " + structure.NomTableInDb + " ADD " + info.NomChamp + " ";
                    string strType          = (new CSQLServeurTypeMappeur()).GetStringDBTypeFromType(info.TypeDonnee);

                    if (info.TypeDonnee == typeof(string))
                    {
                        if (!info.IsLongString)
                        {
                            strType += "(" + info.Longueur.ToString() + ") ";
                        }
                        else
                        {
                            strType = "NText";
                        }
                    }
                    strRequeteUpdate += strType;
                    if (!info.NullAuthorized && !strChampsAutorisesANull.Contains(info.NomChamp))
                    {
                        strRequeteUpdate += " NOT NULL DEFAULT ''";
                    }

                    result = connexion.RunStatement(strRequeteUpdate);

                    if (!result)
                    {
                        result.EmpileErreur(I.T("Error while fields updating of table @1|131", structure.NomTableInDb));
                        return(result);
                    }

                    champsCrees.Add(info.NomChamp);
                }
                else if (bModifiedType || bModifiedNotNull || bModifiedLength)
                {
                    if (info.IsIndex)
                    {
                        SupprimeIndex(structure.NomTableInDb, connexion, info.NomChamp);
                    }
                    string strRequeteUpdate = "ALTER TABLE " + structure.NomTableInDb + " ALTER COLUMN " + info.NomChamp + " ";
                    string strType          = (new CSQLServeurTypeMappeur()).GetStringDBTypeFromType(info.TypeDonnee);

                    if (info.TypeDonnee == typeof(string))
                    {
                        if (!info.IsLongString)
                        {
                            strType += "(" + info.Longueur.ToString() + ") ";
                        }
                        else
                        {
                            strType = "NText";
                        }
                    }
                    strRequeteUpdate += strType;
                    if (!info.NullAuthorized && !strChampsAutorisesANull.Contains(info.NomChamp))
                    {
                        strRequeteUpdate += " NOT NULL ";
                    }

                    result = connexion.RunStatement(strRequeteUpdate);

                    if (!result)
                    {
                        result.EmpileErreur(I.T("Error while fields updating of table @1|131", structure.NomTableInDb));
                        return(result);
                    }
                }
                if (info.IsIndex)
                {
                    result = CreateOrUpdateIndex(structure.NomTableInDb, connexion, info.NomChamp);
                }
                else
                {
                    result = SupprimeIndex(structure.NomTableInDb, connexion, info.NomChamp);
                }
            }

            // Suppression d'une colonne de la table
            foreach (DataColumn colonne in dt.Columns)
            {
                bool bExists = false;
                foreach (CInfoChampTable info in structure.Champs)
                {
                    if (info.NomChamp == colonne.ColumnName)
                    {
                        bExists = true;
                        break;
                    }
                }
                if (!bExists)
                {
                    CResultAErreur tempResult = CAccessTableCreatorOld.SupprimeDependances(structure.NomTableInDb, colonne.ColumnName, connexion);
                    if (!tempResult)
                    {
                        result.Erreur.EmpileErreurs(tempResult.Erreur);
                        result.SetFalse();
                        return(result);
                    }

                    tempResult = CAccessTableCreatorOld.SupprimeForeignKeys(structure.NomTableInDb, colonne.ColumnName, connexion);
                    if (!tempResult)
                    {
                        result.Erreur.EmpileErreurs(tempResult.Erreur);
                        result.SetFalse();
                        return(result);
                    }

                    string strReq = "ALTER TABLE " + structure.NomTableInDb + " DROP COLUMN " + colonne.ColumnName;
                    result = connexion.RunStatement(strReq);

                    if (!result)
                    {
                        result.EmpileErreur(I.T("Error while deleting column @1 of table @2|132", colonne.ColumnName, structure.NomTableInDb));
                        return(result);
                    }
                }
            }

            #endregion
            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            #region M.A.J des contraintes de la table

            foreach (CInfoRelation rel in structure.RelationsParentes)
            {
                foreach (string strChampCree in champsCrees)
                {
                    foreach (string strChamp in rel.ChampsFille)
                    {
                        if (strChampCree == strChamp)
                        {
                            string strRequeteRelation = GetRequeteRelation(rel);
                            result = connexion.RunStatement(strRequeteRelation);
                            if (!result)
                            {
                                result.EmpileErreur(I.T("Error while creating foreign key of @1 (@2)|127", structure.NomTableInDb, strRequeteRelation));
                                return(result);
                            }
                            break;
                        }
                    }
                }
                if (result)
                {
                    string strNomTableFilleInDb = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille);
                    if (rel.Indexed)
                    {
                        result = CreateOrUpdateIndex(strNomTableFilleInDb, connexion, rel.ChampsFille);
                    }
                    else
                    {
                        result = SupprimeIndex(strNomTableFilleInDb, connexion, rel.ChampsFille);
                    }
                }
                if (!result)
                {
                    return(result);
                }
            }
            #endregion
            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            return(result);
        }