コード例 #1
0
ファイル: CInventoryConvertor.cs プロジェクト: ykebaili/Timos
    //------------------------------------------------------------------------
    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;
                    }
                }
            }
        }
    }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: CInventoryConvertor.cs プロジェクト: ykebaili/Timos
    //-----------------------------------------------------------------
    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);
    }
コード例 #4
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
            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);
        }
コード例 #5
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
            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));
        }