예제 #1
0
 /// <summary>
 /// Retourne l'extremité opposée à l'extremité demandée.
 /// </summary>
 /// <param name="elt">Si cet élément correspond à l'élément1, retourne l'élement2,
 /// si il correspond à l'élement 2, retourne l'élément 1</param>
 /// <returns></returns>
 public IElementALiensReseau GetAutreExtremite(IElementALiensReseau elt)
 {
     if (elt == null)
     {
         return(null);
     }
     if (elt.Equals(Element1))
     {
         return(Element2);
     }
     if (elt.Equals(Element2))
     {
         return(Element1);
     }
     return(null);
 }
예제 #2
0
        /// <summary>
        /// Retourne le chemin correspondant à l'extremité demandée
        /// </summary>
        /// <param name="elt"></param>
        /// <returns></returns>
        public CCheminLienReseau GetCheminToElement(IElementALiensReseau elt)
        {
            CLienReseau lien = LienReseau;

            if (lien == null)
            {
                return(null);
            }
            if (elt == null)
            {
                return(null);
            }
            if (elt.Equals(lien.Element1))
            {
                return(RacineChemin1);
            }
            if (elt.Equals(lien.Element2))
            {
                return(RacineChemin2);
            }
            return(null);
        }
예제 #3
0
        public CFiltreData GetFiltreListeLiens(
            IElementALiensReseau element1,
            IElementALiensReseau element2,
            CLienReseau lienSupporte)
        {
            CFiltreData filtre = null;

            if (lienSupporte != null)
            {
                CTypeLienReseau typeLien = lienSupporte.TypeLienReseau;
                StringBuilder   bl       = new StringBuilder();
                if (typeLien != null)
                {
                    foreach (CTypeLienReseauSupport supportant in typeLien.TypesPouvantSupporterCeType)
                    {
                        bl.Append(supportant.TypeSupportant.Id);
                        bl.Append(',');
                    }
                }
                if (bl.Length > 0)
                {
                    bl.Remove(bl.Length - 1, 1);
                    filtre = new CFiltreData(CTypeLienReseau.c_champId + " in (" + bl.ToString() + ")");
                }
            }

            StringBuilder blIdsLiens = new StringBuilder();

            foreach (CLienReseau lien in element1.LiensSortants)
            {
                IElementALiensReseau elt = lien.GetAutreExtremite(element1);
                if (elt != null && elt.Equals(element2))
                {
                    blIdsLiens.Append(lien.Id);
                    blIdsLiens.Append(',');
                }
            }

            if (blIdsLiens.Length > 0)
            {
                blIdsLiens.Remove(blIdsLiens.Length - 1, 1);
                filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreData(
                                                      CLienReseau.c_champId + " in (" + blIdsLiens.ToString() + ")"));
                return(filtre);
            }
            return(null);
        }
예제 #4
0
        internal override void InitFromElementDeSchema(CElementDeSchemaReseau elementDeSchema)
        {
            base.InitFromElementDeSchema(elementDeSchema);
            CLienReseau lien = elementDeSchema.LienReseau;

            if (lien == null)
            {
                throw new Exception("Bad element for supervision data ");
            }
            m_nIdLienSmt = lien.Id;
            CSpvLiai liaisonSpv = CSpvLiai.GetObjetSpvFromObjetTimos(lien);

            if (liaisonSpv != null)
            {
                m_dicLiaisonsSpvConcernant[liaisonSpv.Id] = true;
                m_nIdLienSpv = liaisonSpv.Id;
            }
            /* */
            CSchemaReseau schemaDeLiaison = lien.SchemaReseau;

            if (schemaDeLiaison != null)
            {
                CInfoSchemaDeSchemaSupervise info = new CInfoSchemaDeSchemaSupervise(this, null, m_base, NiveauProfondeur + 1);
                m_listeFils.Add(info);
                info.InitFromSchema(schemaDeLiaison);
            }

            //Si pas de schéma ou que le schéma ne contient pas les sites
            bool bHasElement1         = false;
            bool bHasElement2         = false;
            IElementALiensReseau elt1 = lien.Element1;
            IElementALiensReseau elt2 = lien.Element2;

            if (schemaDeLiaison != null)
            {
                foreach (CElementDeSchemaReseau elt in schemaDeLiaison.ElementsDeSchema)
                {
                    IElementALiensReseau eltAssocie = elt.ElementAssocie as IElementALiensReseau;
                    if (eltAssocie != null && eltAssocie.Equals(elt1))
                    {
                        bHasElement1 = true;
                    }
                    if (eltAssocie != null && eltAssocie.Equals(elt2))
                    {
                        bHasElement2 = true;
                    }
                    if (bHasElement1 && bHasElement2)
                    {
                        break;
                    }
                }
            }
            CSpvSite  site  = new CSpvSite(m_base.ContexteDonnee);
            CSpvEquip equip = new CSpvEquip(m_base.ContexteDonnee);

            if (!bHasElement1)
            {
                if (elt1 is CSite)
                {
                    if (site.ReadIfExists(new CFiltreData(CSpvSite.c_champSmtSite_Id + "=@1", elt1.Id), false))
                    {
                        m_dicSitesSpvConcernant[site.Id] = true;
                    }
                }
                else if (elt1 is CEquipementLogique)
                {
                    if (equip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", elt1.Id), false))
                    {
                        m_dicEquipementsSpvConcernant[equip.Id] = true;
                    }
                }
            }
            if (!bHasElement2)
            {
                if (elt2 is CSite)
                {
                    if (site.ReadIfExists(new CFiltreData(CSpvSite.c_champSmtSite_Id + "=@1", elt2.Id), false))
                    {
                        m_dicSitesSpvConcernant[site.Id] = true;
                    }
                }
                else if (elt2 is CEquipementLogique)
                {
                    if (equip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", elt2.Id), false))
                    {
                        m_dicEquipementsSpvConcernant[equip.Id] = true;
                    }
                }
            }
        }
예제 #5
0
        internal override void InitFromElementDeSchema(CElementDeSchemaReseau elementDeSchema)
        {
            base.InitFromElementDeSchema(elementDeSchema);
            CLienReseau lien = elementDeSchema.LienReseau;

            if (lien == null)
            {
                throw new Exception("Bad element for supervision data ");
            }
            m_dbKeyLien = lien.DbKey;

            CSchemaReseau schemaDeLiaison = lien.SchemaReseau;

            if (schemaDeLiaison != null)
            {
                CInfoSchemaDeSchemaSupervise info = new CInfoSchemaDeSchemaSupervise(this, null, m_base, NiveauProfondeur + 1);
                m_listeFils.Add(info);
                info.InitFromSchema(schemaDeLiaison);
            }

            //Si pas de schéma ou que le schéma ne contient pas les sites
            bool bHasElement1         = false;
            bool bHasElement2         = false;
            IElementALiensReseau elt1 = lien.Element1;
            IElementALiensReseau elt2 = lien.Element2;

            if (schemaDeLiaison != null)
            {
                foreach (CElementDeSchemaReseau elt in schemaDeLiaison.ElementsDeSchema)
                {
                    IElementALiensReseau eltAssocie = elt.ElementAssocie as IElementALiensReseau;
                    if (eltAssocie != null && eltAssocie.Equals(elt1))
                    {
                        bHasElement1 = true;
                    }
                    if (eltAssocie != null && eltAssocie.Equals(elt2))
                    {
                        bHasElement2 = true;
                    }
                    if (bHasElement1 && bHasElement2)
                    {
                        break;
                    }
                }
            }
            IElementALiensReseau extremite = lien.Element1;

            if (extremite is CSite)
            {
                m_dicSitesConcernant[extremite.DbKey] = true;
            }
            if (extremite is CEquipementLogique)
            {
                m_dicEquipementsConcernant[extremite.DbKey] = true;
            }
            extremite = lien.Element2;
            if (extremite is CSite)
            {
                m_dicSitesConcernant[extremite.DbKey] = true;
            }
            if (extremite is CEquipement)
            {
                m_dicEquipementsConcernant[extremite.DbKey] = true;
            }
            m_dicLiaisonsConcernant[lien.DbKey] = true;
        }
예제 #6
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CLienReseau lien = (CLienReseau)objet;

                // Verifie le champ "Libelle
                if (lien.Libelle == "")
                {
                    result.EmpileErreur(I.T("Network link label cannot be empty|30004"));
                }



                bool bTrouve = false;


                if (lien.Element1 == null)
                {
                    result.EmpileErreur(I.T("The linked element 1 cannot be null|30019"));
                }
                else
                {
                    if (lien.Element1.GetType() != lien.TypeLienReseau.TypeElement1)
                    {
                        result.EmpileErreur(I.T("The linked element 1 is not of the right type|30016"));
                    }

                    if (lien.Complement1 != null)
                    {
                        foreach (CObjetDonnee obj in lien.Element1.ComplementsPossibles)
                        {
                            if (obj == (CObjetDonnee)lien.Complement1)
                            {
                                bTrouve = true;
                                break;
                            }
                        }
                        if (!bTrouve)
                        {
                            result.EmpileErreur(I.T("Complementary element 1 does not belong to the possible complements of the element 1|30014"));
                        }
                    }
                }
                bTrouve = false;

                if (lien.Element2 == null)
                {
                    result.EmpileErreur(I.T("The linked element 2 cannot be null|30020"));
                }
                else
                {
                    if (lien.Element2.GetType() != lien.TypeLienReseau.TypeElement2)
                    {
                        result.EmpileErreur(I.T("The linked element 2 is not of the right type|30017"));
                    }

                    if (lien.Complement2 != null)
                    {
                        foreach (CObjetDonnee obj in lien.Element2.ComplementsPossibles)
                        {
                            if (obj == (CObjetDonnee)lien.Complement2)
                            {
                                bTrouve = true;
                                break;
                            }
                        }
                        if (!bTrouve)
                        {
                            result.EmpileErreur(I.T("Complementary element 2 does not belong to the possible complements of the element 2|30014"));
                        }
                    }
                }

                if (lien.Row.HasVersion(DataRowVersion.Original))
                {
                    //Si changement de l'élément 1
                    lien.VersionToReturn = DataRowVersion.Original;
                    IElementALiensReseau eltOriginal = lien.Element1;
                    lien.VersionToReturn = DataRowVersion.Current;
                    IElementALiensReseau eltNew = lien.Element1;
                    if (eltNew != null && eltOriginal != null && eltNew.Equals(eltOriginal))
                    {
                        //Vérifie qu'il n'y a pas de chemin sur l'élément 1
                        CListeObjetsDonnees lst = new CListeObjetsDonnees(objet.ContexteDonnee, typeof(CElementDeSchemaReseau));
                        lst.Filtre = new CFiltreData(CLienReseau.c_champId + "=@1", lien.Id);
                        bool bOk = true;
                        foreach (CElementDeSchemaReseau elt in lst)
                        {
                            if (elt.RacineChemin1 != null)
                            {
                                bOk = false;
                                break;
                            }
                        }
                        if (!bOk)
                        {
                            result.EmpileErreur(I.T("The linked element 1 cannot be changed because the link is associted with a path|30022"));
                        }
                    }

                    //Si changement de l'élément 2
                    lien.VersionToReturn = DataRowVersion.Original;
                    eltOriginal          = lien.Element2;
                    lien.VersionToReturn = DataRowVersion.Current;
                    eltNew = lien.Element2;
                    if (eltNew != null && eltOriginal != null && eltNew.Equals(eltOriginal))
                    {
                        //Vérifie qu'il n'y a pas de chemin sur l'élément 2
                        CListeObjetsDonnees lst = new CListeObjetsDonnees(objet.ContexteDonnee, typeof(CElementDeSchemaReseau));
                        lst.Filtre = new CFiltreData(CLienReseau.c_champId + "=@1", lien.Id);
                        bool bOk = true;
                        foreach (CElementDeSchemaReseau elt in lst)
                        {
                            if (elt.RacineChemin2 != null)
                            {
                                bOk = false;
                                break;
                            }
                        }
                        if (!bOk)
                        {
                            result.EmpileErreur(I.T("The linked element 2 cannot be changed because the link is associted with a path|30023"));
                        }
                    }
                }
            }


            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }

            return(result);
        }