//------------------------------------------------------------------------ private static void AddSystemesCoordonnees(CContexteDonnee ctx, CMemoryDb db) { CListeObjetDonneeGenerique <CSystemeCoordonnees> lst = new CListeObjetDonneeGenerique <CSystemeCoordonnees>(ctx); lst.ReadDependances("RelationFormatsNumerotation"); foreach (CSystemeCoordonnees systemeTimos in lst) { TID.CSystemeCoordonnees systeme = new TID.CSystemeCoordonnees(db); systeme.CreateNew(systemeTimos.Id); systeme.Libelle = systemeTimos.Libelle; foreach (CRelationSystemeCoordonnees_FormatNumerotation relTimos in systemeTimos.RelationFormatsNumerotation) { TID.CRelationSystemeCoordonnees_FormatNumerotation rel = new TID.CRelationSystemeCoordonnees_FormatNumerotation(db); TID.CFormatNumerotation format = new TID.CFormatNumerotation(db); int?nId = (int?)relTimos.Row[CFormatNumerotation.c_champId, true]; if (nId == null || format.ReadIfExistsIdTimos(nId.Value)) { TID.CUniteCoordonnee unite = new TID.CUniteCoordonnee(db); nId = (int?)relTimos.Row[CUniteCoordonnee.c_champId, true]; if (nId == null || unite.ReadIfExistsIdTimos(nId.Value)) { rel.CreateNew(relTimos.Id); rel.FormatNumerotation = format; rel.Libelle = relTimos.Libelle; rel.Position = relTimos.Position; rel.Prefixes = relTimos.Prefixes; rel.SystemeDeCoordonnees = systeme; rel.Unite = unite; } } } } }
private int CompareAdresse(string strAdresse1, string strAdresse2, int nNiveau, bool bEgalSiVide) { CListeEntitesDeMemoryDb <CRelationSystemeCoordonnees_FormatNumerotation> lstFormats = RelationFormatsNumerotation; if (nNiveau >= lstFormats.Count()) { return(0); } CRelationSystemeCoordonnees_FormatNumerotation relFormat = (CRelationSystemeCoordonnees_FormatNumerotation)lstFormats.ElementAt(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)); }
//----------------------------------------------------------------- private static TID.CParametrageSystemeCoordonnees ImporteParametrageSC( CParametrageSystemeCoordonnees paramTimos, CMemoryDb db, TID.CIndexIdTimos <TID.CSystemeCoordonnees> dicSC, TID.CIndexIdTimos <TID.CRelationSystemeCoordonnees_FormatNumerotation> dicRFN) { if (paramTimos == null) { return(null); } TID.CParametrageSystemeCoordonnees parametrage = null; TID.CSystemeCoordonnees sc = null; if (dicSC != null) { sc = dicSC.GetSafe((int?)paramTimos.Row[CSystemeCoordonnees.c_champId, true]); } parametrage = new TimosInventory.data.CParametrageSystemeCoordonnees(db); parametrage.CreateNew(); if (sc != null) { parametrage.SystemeCoordonnees = sc; } else { parametrage.Row[TID.CSystemeCoordonnees.c_champId] = paramTimos.Row[TID.CSystemeCoordonnees.c_champId]; } foreach (CParametrageNiveau paramNTimos in paramTimos.ParametragesNiveauxOrdonnees) { TID.CRelationSystemeCoordonnees_FormatNumerotation relFN = null; if (dicRFN != null) { relFN = dicRFN.GetSafe((int?)paramNTimos.Row[CRelationSystemeCoordonnees_FormatNumerotation.c_champId, true]); } TID.CParametrageNiveau paramN = new TimosInventory.data.CParametrageNiveau(db); paramN.CreateNew(); paramN.ParametrageSystemeCoordonnees = parametrage; paramN.PremierIndice = paramNTimos.PremierIndice; paramN.Taille = paramNTimos.Taille; if (relFN != null) { paramN.RelationSysCoor_FormatNum = relFN; } else { paramN.Row[TID.CRelationSystemeCoordonnees_FormatNumerotation.c_champId] = paramNTimos.Row[CRelationSystemeCoordonnees_FormatNumerotation.c_champId]; } } return(parametrage); }
/// <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 CListeEntitesDeMemoryDb <CRelationSystemeCoordonnees_FormatNumerotation> listeNiveaux = RelationFormatsNumerotation; listeNiveaux.Sort = 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.ElementAt(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 CListeEntitesDeMemoryDb <CRelationSystemeCoordonnees_FormatNumerotation> listeNiveaux = RelationFormatsNumerotation; listeNiveaux.Sort = 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.ElementAt(nNiveauFinal); return(rel.VerifieUnite(unite)); }