Esempio n. 1
0
        private void FillDicsForNode(CElementDeArbreOperationnel node,
                                     CDictionnaireElementToNoeudArbre dicEquipementToNoeudArbreOp,
                                     CDictionnaireElementToNoeudArbre dicSiteToNoeudArbreOp,
                                     CDictionnaireElementToNoeudArbre dicLiaisonToNoeudArbreOp,
                                     CDictionnaireElementToNoeudArbre dicServiceToNoeudArbreOp)
        {
            CElementDeArbreOperationnelEntite noeudEntite = node as CElementDeArbreOperationnelEntite;

            if (noeudEntite != null)
            {
                try
                {
                    IElementDeSchemaReseau eltAssocie = noeudEntite.Composant.GetElementAssocie(m_base.ContexteDonnee);

                    if (eltAssocie is CEquipementLogique)
                    {
                        CSpvEquip equipement = CSpvEquip.GetObjetSpvFromObjetTimos((CEquipementLogique)eltAssocie);
                        if (equipement != null)
                        {
                            dicEquipementToNoeudArbreOp.Add(equipement.Id, noeudEntite);
                        }
                    }
                    else if (eltAssocie is CSite)
                    {
                        CSpvSite site = CSpvSite.GetObjetSpvFromObjetTimos((CSite)eltAssocie);
                        if (site != null)
                        {
                            dicSiteToNoeudArbreOp.Add(site.Id, noeudEntite);
                        }
                    }
                    else if (eltAssocie is CLienReseau)
                    {
                        CSpvLiai liaison = CSpvLiai.GetObjetSpvFromObjetTimos((CLienReseau)eltAssocie);
                        if (liaison != null)
                        {
                            dicLiaisonToNoeudArbreOp.Add(liaison.Id, noeudEntite);
                        }
                    }
                    else if (eltAssocie is CSchemaReseau)
                    {
                        CSpvSchemaReseau schema = CSpvSchemaReseau.GetObjetSpvFromObjetTimos((CSchemaReseau)eltAssocie);
                        if (schema != null)
                        {
                            dicServiceToNoeudArbreOp.Add(schema.Id, noeudEntite);
                        }
                    }
                }
                catch { }
            }

            // Fonction récursive sur les noeuds fils
            foreach (CElementDeArbreOperationnel nodeFils in node.Fils)
            {
                FillDicsForNode(nodeFils,
                                dicEquipementToNoeudArbreOp,
                                dicSiteToNoeudArbreOp,
                                dicLiaisonToNoeudArbreOp,
                                dicServiceToNoeudArbreOp);
            }
        }
        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;
                    }
                }
            }
        }