Esempio n. 1
0
        private int CompareAdresse(string strAdresse1, string strAdresse2, int nNiveau, bool bEgalSiVide)
        {
            CListeObjetsDonnees lstFormats = RelationFormatsNumerotation;

            if (nNiveau >= lstFormats.Count)
            {
                return(0);
            }

            CRelationSystemeCoordonnees_FormatNumerotation relFormat = (CRelationSystemeCoordonnees_FormatNumerotation)lstFormats[nNiveau];

            if (strAdresse2 == "" || strAdresse1 == "")
            {
                if (bEgalSiVide)
                {
                    return(0);
                }
                else
                {
                    return(strAdresse1.CompareTo(strAdresse2));
                }
            }

            int    nPos1 = strAdresse1.IndexOf(c_separateurNumerotations);
            int    nPos2 = strAdresse2.IndexOf(c_separateurNumerotations);
            string strDebut1, strFin1;
            string strDebut2, strFin2;

            if (nPos1 > 0)
            {
                strDebut1 = strAdresse1.Substring(0, nPos1);
                strFin1   = strAdresse1.Substring(nPos1 + 1);
            }
            else
            {
                strDebut1 = strAdresse1;
                strFin1   = "";
            }
            if (nPos2 > 0)
            {
                strDebut2 = strAdresse2.Substring(0, nPos2);
                strFin2   = strAdresse2.Substring(nPos2 + 1);
            }
            else
            {
                strDebut2 = strAdresse2;
                strFin2   = "";
            }
            int nResult = relFormat.Compare(strDebut1, strDebut2);

            if (nResult != 0)
            {
                return(nResult);
            }

            return(CompareAdresse(strFin1, strFin2, nNiveau + 1, bEgalSiVide));
        }
Esempio n. 2
0
        /// <summary>
        /// Ajoute à la coordonnée nNbToAdd et retourne la nouvelle
        /// coordonnée (string dans le data), ou une erreur si ce n'est pas possible
        /// </summary>
        /// <param name="strCoordonnee"></param>
        /// <param name="nNbToAdd"></param>
        /// <returns></returns>
        public CResultAErreur AjouteDansNiveau(string strCoordonnee, int nNbToAdd)
        {
            CResultAErreur result = CResultAErreur.True;

            string[] strNiveaux = strCoordonnee.Split(c_separateurNumerotations);

            int nNiveauFinal = strNiveaux.Length - 1;

            //récupère le la système de numérotation de ce niveau
            CListeObjetsDonnees listeNiveaux = RelationFormatsNumerotation;

            listeNiveaux.Tri = CRelationSystemeCoordonnees_FormatNumerotation.c_champPosition;
            if (nNiveauFinal > listeNiveaux.Count)
            {
                //plus de paramétrage pour ce niveau
                result.EmpileErreur(I.T("The coordinate has too many levels for the defined system|253"));
                return(result);
            }

            //Ajoute le nombre au dernier niveau
            CRelationSystemeCoordonnees_FormatNumerotation rel = (CRelationSystemeCoordonnees_FormatNumerotation)listeNiveaux[nNiveauFinal];

            result = rel.Ajoute(strNiveaux[strNiveaux.Length - 1], nNbToAdd);

            if (!result)
            {
                return(result);
            }

            //Reconstruit la coordonnée
            string strCoord = "";

            for (int nNiveau = 0; nNiveau < nNiveauFinal; nNiveau++)
            {
                strCoord += strNiveaux[nNiveau] + c_separateurNumerotations;
            }
            strCoord   += (string)result.Data;
            result.Data = strCoord;

            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Analyse une coordonnée donnée avec une unité pour voir si le dernier niveau<br/>
        /// de la coordonnée correspond bien avec fournie
        /// </summary>
        /// <param name="strCoordonnee">coordonnée à vérifier</param>
        /// <param name="unite">Unite</param>
        /// <returns>Retourne vrai ou faux avec des erreurs en cas de problème syntaxique ou autre sur la coordonnée</returns>
        public CResultAErreur VerifieUnite(string strCoordonnee, CUniteCoordonnee unite)
        {
            CResultAErreur result = CResultAErreur.True;

            string[] strNiveaux = strCoordonnee.Split(c_separateurNumerotations);

            int nNiveauFinal = strNiveaux.Length - 1;

            //récupère le la système de numérotation de ce niveau
            CListeObjetsDonnees listeNiveaux = RelationFormatsNumerotation;

            listeNiveaux.Tri = CRelationSystemeCoordonnees_FormatNumerotation.c_champPosition;
            if (nNiveauFinal > listeNiveaux.Count)
            {
                //plus de paramétrage pour ce niveau
                result.EmpileErreur(I.T("The coordinate has too many levels for the defined system|253"));
                return(result);
            }
            CRelationSystemeCoordonnees_FormatNumerotation rel = (CRelationSystemeCoordonnees_FormatNumerotation)listeNiveaux[nNiveauFinal];

            return(rel.VerifieUnite(unite));
        }
Esempio n. 4
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CRelationSystemeCoordonnees_FormatNumerotation relationSCFN = (CRelationSystemeCoordonnees_FormatNumerotation)objet;
                if (relationSCFN.Libelle == "" || relationSCFN.Libelle == null)
                {
                    result.EmpileErreur(I.T("The Label cannot be empty|181"));
                }
                if (relationSCFN.Unite == null)
                {
                    result.EmpileErreur(I.T("The unit is necessary|199", relationSCFN.Libelle));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }


            return(result);
        }
Esempio n. 5
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CSystemeCoordonnees systemeCoordonnees = (CSystemeCoordonnees)objet;

                //Verif label
                if (systemeCoordonnees.Libelle == "")
                {
                    result.EmpileErreur(I.T("The label of the Coordinate system cannot be empty|177"));
                }
                if (!CObjetDonneeAIdNumerique.IsUnique(systemeCoordonnees, CSystemeCoordonnees.c_champLibelle, systemeCoordonnees.Libelle))
                {
                    result.EmpileErreur(I.T("The Coordinate system '@1' already exists|178", systemeCoordonnees.Libelle));
                }

                //Verification de la coohérence des positions des Formats de numérotation
                CListeObjetsDonnees lstcrscfn = systemeCoordonnees.RelationFormatsNumerotation;
                lstcrscfn.Tri = CRelationSystemeCoordonnees_FormatNumerotation.c_champPosition;
                for (int i = 0; i < lstcrscfn.Count; i++)
                {
                    CRelationSystemeCoordonnees_FormatNumerotation crscfn = (CRelationSystemeCoordonnees_FormatNumerotation)lstcrscfn[i];
                    if (crscfn.Position != i)
                    {
                        result.EmpileErreur(I.T("The numbering format @1 is at the position @2 instead of the position @3|180", crscfn.FormatNumerotation.Libelle, crscfn.Position.ToString(), i.ToString()));
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }