Exemplo n.º 1
0
        private static bool MiseEnStandBy(EObjetACoordonnee tobjs, List <string> levelsuivants)
        {
            List <CObjetACoordonneesPossible>  lst0bjsPoss    = GetListObjsPoss(tobjs);
            List <CObjetACoordonneesEnStandBy> lstObjsStandBy = GetListObjsEnStandBy(tobjs);

            for (int cpt = lst0bjsPoss.Count; cpt > 0; cpt--)
            {
                CObjetACoordonneesPossible  o   = lst0bjsPoss[cpt - 1];
                CObjetACoordonneesEnStandBy obj = new CObjetACoordonneesEnStandBy(tobjs, o, levelsuivants);
                if (obj.Valide)
                {
                    lstObjsStandBy.Add(obj);
                }
            }
            return(true);
        }
Exemplo n.º 2
0
        public CObjetACoordonneesEnStandBy(EObjetACoordonnee tobj, CObjetACoordonneesPossible o, List <string> levelsSuivants)
        {
            m_objPoss = o;
            m_typeobj = tobj;
            m_valide  = true;

            if (m_objPoss.Coordonnee.Trim().Replace(CSystemeCoordonnees.c_separateurNumerotations.ToString(), "").Length == 0)
            {
                m_valide = false;
            }


            //On split sa coordonnée
            m_levels      = m_objPoss.Coordonnee.Split(CSystemeCoordonnees.c_separateurNumerotations);
            m_nlevels     = m_levels.Length;
            m_levelActuel = 0;


            //On vérifie que la coordonnée correspond
            if (levelsSuivants.Count < m_nlevels)
            {
                m_valide = false;
            }
            else if (m_nlevels > 1)
            {
                int cpt = 1;
                foreach (string lv in levelsSuivants)
                {
                    if (lv != m_levels[cpt])
                    {
                        m_valide = false;
                        break;
                    }
                    cpt++;
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Retourne une liste d'objet correspondant à la coordonnée souhaitée
        /// selon un critère de recherche
        /// </summary>
        /// <param name="coor"></param>
        /// <param name="criteresTypeObjets"></param>
        /// <param name="ctx"></param>
        /// <returns></returns>
        public static List <IObjetACoordonnees> FindObjetsACoordonnees(
            string coor,
            EObjetACoordonnee?criteresTypeObjets,
            IObjetACoordonnees parent,
            CContexteDonnee ctx)
        {
            m_ctx = ctx;

            List <IObjetACoordonnees> lstObjACoor = new List <IObjetACoordonnees>();

            IDsEOsParent            = new List <string>();
            IDsSitesParent          = new List <string>();
            IDsStocksParent         = new List <string>();
            IDsEqtsParent           = new List <string>();
            lstEOsEnStandBy         = new List <CObjetACoordonneesEnStandBy>();
            lstSitesEnStandBy       = new List <CObjetACoordonneesEnStandBy>();
            lstStocksEnStandBy      = new List <CObjetACoordonneesEnStandBy>();
            lstEquipementsEnStandBy = new List <CObjetACoordonneesEnStandBy>();
            lstEOsPoss         = new List <CObjetACoordonneesPossible>();
            lstSitesPoss       = new List <CObjetACoordonneesPossible>();
            lstStocksPoss      = new List <CObjetACoordonneesPossible>();
            lstEquipementsPoss = new List <CObjetACoordonneesPossible>();


            bool EOsExists    = true;
            bool SitesExists  = true;
            bool StocksExists = true;
            bool EqtsExists   = true;

            FirstSearch = true;

            #region 1 - Determination des critères (ou domaine) de recherche
            if (!((criteresTypeObjets & EObjetACoordonnee.EntiteOrganisationnelle) == EObjetACoordonnee.EntiteOrganisationnelle) ||
                criteresTypeObjets == null)
            {
                EOsExists = false;
            }

            if (!((criteresTypeObjets & EObjetACoordonnee.Site) == EObjetACoordonnee.Site) ||
                criteresTypeObjets == null)
            {
                SitesExists = false;
            }

            if (!((criteresTypeObjets & EObjetACoordonnee.Stock) == EObjetACoordonnee.Stock) ||
                criteresTypeObjets == null)
            {
                StocksExists = false;
            }

            if (!((criteresTypeObjets & EObjetACoordonnee.Equipement) == EObjetACoordonnee.Equipement) ||
                criteresTypeObjets == null)
            {
                EqtsExists = false;
            }
            #endregion

            #region  2 - Recherche des IObjetACoordonnees en descendant niveau par niveau
            string[] levels = coor.Split(CSystemeCoordonnees.c_separateurNumerotations);

            if (levels.Length == 0)
            {
                return(lstObjACoor);
            }

            if (parent != null)
            {
                CObjetACoordonneesPossible obj = new CObjetACoordonneesPossible(((IObjetDonneeAIdNumerique)parent).Id.ToString(), parent.Coordonnee);
                if (parent.GetType() == typeof(CEntiteOrganisationnelle))
                {
                    m_lstEOsPoss.Add(obj);
                }
                if (parent.GetType() == typeof(CSite))
                {
                    m_lstSitesPoss.Add(obj);
                }
                if (parent.GetType() == typeof(CStock))
                {
                    m_lstStocksPoss.Add(obj);
                }
                if (parent.GetType() == typeof(CEquipement))
                {
                    m_lstEqtsPoss.Add(obj);
                }
                FirstSearch = false;
            }


            for (int level = 0; level < levels.Length; level++)
            {
                int nbEOs    = 0;
                int nbSites  = 0;
                int nbStocks = 0;
                int nbEqts   = 0;

                lstEOsPoss         = new List <CObjetACoordonneesPossible>();
                lstSitesPoss       = new List <CObjetACoordonneesPossible>();
                lstStocksPoss      = new List <CObjetACoordonneesPossible>();
                lstEquipementsPoss = new List <CObjetACoordonneesPossible>();

                //WakeUp
                WakeUpObjs(levels[level]);

                //EOs
                nbEOs += FindFilsACoor(EObjetACoordonnee.EntiteOrganisationnelle, levels[level]);

                //Sites
                nbSites += FindFilsACoor(EObjetACoordonnee.Site, levels[level]);

                //Stocks
                nbStocks += FindFilsACoor(EObjetACoordonnee.Stock, levels[level]);

                //Equipements
                nbEqts += FindFilsACoor(EObjetACoordonnee.Equipement, levels[level]);


                FirstSearch = false;



                //Mise en Stand By
                int nextLevel = level + 1;
                if (nextLevel < levels.Length)
                {
                    List <string> LevelsSuivants = new List <string>();
                    for (int nl = nextLevel; nl < levels.Length; nl++)
                    {
                        LevelsSuivants.Add(levels[nl]);
                    }

                    MiseEnStandBy(LevelsSuivants);
                }


                //if (nbEOs == 0 && lstEOsEnStandBy.Count == 0)
                //    EOsExists = false;
                //if (nbEqts == 0 && lstEquipementsEnStandBy.Count == 0)
                //    EqtsExists = false;
                //if (nbStocks == 0 && lstStocksEnStandBy.Count == 0)
                //    StocksExists = false;
                //if (nbSites == 0 && lstStocksEnStandBy.Count == 0)
                //    SitesExists = false;

                if (!(EOsExists && SitesExists && StocksExists && EqtsExists))
                {
                    return(lstObjACoor);
                }
            }
            #endregion

            // 3 - On ajoute les objets restant en stand by
            // 3 - Ajout des IObjetACoordonnees trouvés à la liste
            if (EOsExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstEOsEnStandBy)
                {
                    lstEOsPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstEOsPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.EntiteOrganisationnelle);
                }
            }
            if (SitesExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstSitesEnStandBy)
                {
                    lstSitesPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstSitesPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Site);
                }
            }
            if (StocksExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstStocksEnStandBy)
                {
                    lstStocksPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstStocksPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Stock);
                }
            }
            if (EqtsExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstEquipementsEnStandBy)
                {
                    lstEquipementsPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstEquipementsPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Equipement);
                }
            }

            return(lstObjACoor);
        }