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)); }
/// <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); }
/// <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)); }
//------------------------------------------------------------------- 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); }
//------------------------------------------------------------------- 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); }