Example #1
0
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            ArrayList lstRows = new ArrayList(table.Rows);

            foreach (DataRow row in lstRows)
            {
                if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified)
                {
                    CLienReseau lien = new CLienReseau(row);
                    //S'assure que le schéma existe (pour SPV);
                    if (lien.SchemaReseau == null)
                    {
                        lien.GetSchemaReseauADessiner(true);
                    }
                }
            }

            return(result);
        }
Example #2
0
        public void Init(C2iObjetDeSchema objetEdite, CSchemaReseau schemaReseau)
        {
#if DEBUG
            m_btnGraphe.Visible = true;
#endif
            m_panelSchema.ObjetEdite  = objetEdite;
            m_panelSchema.Editeur     = this;
            m_panelSchema.NoClipboard = true;
            m_schemaReseau            = schemaReseau;
            m_objetDeSchema           = objetEdite;
            if (!LockEdition && m_objetDeSchema is C2iSchemaReseau)
            {
                ((C2iSchemaReseau)m_objetDeSchema).ArrangerLiaisons();
            }

            m_panelSchema.ObjetSchemaReseau = schemaReseau;
            m_panelSchema.ModeEdition       = EModeEditeurSchema.Selection;

            if (schemaReseau != null)
            {
                m_lienEdite = schemaReseau.LienReseau;
                m_panelSchema.LienReseauEdite = m_lienEdite;
            }

            m_panelElements.AddAllLoadedAssemblies();
            if (!LockEdition)
            {
                ReactualiserArbre();
            }
            m_tabDeGauche.Visible = !LockEdition;

            m_cmbVueDynamique.Init(typeof(CParametreVueSchemaDynamique), "Libelle", true);
        }
Example #3
0
        public override IElementDeSchemaReseau GetElementAssocie(CContexteDonnee contexte)
        {
            CLienReseau lien = new CLienReseau(contexte);

            if (lien.ReadIfExists(Math.Abs(IdObjet)))
            {
                return(lien);
            }
            return(null);
        }
Example #4
0
        public static void PropagerDependanceLien(CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result)
        {
            DataTable dt = contexte.Tables[CElementDeSchemaReseau.c_nomTable];

            if (dt != null)
            {
                ArrayList rows = new ArrayList(dt.Rows);
                foreach (DataRow row in rows)
                {
                    if (row.RowState != DataRowState.Unchanged)
                    {
                        CElementDeSchemaReseau element = new CElementDeSchemaReseau(row);

                        switch (row.RowState)
                        {
                        case DataRowState.Added:
                        case DataRowState.Modified:
                            if (element != null && element.LienReseau != null &&
                                element.SchemaReseau != null && element.SchemaReseau.LienReseau != null)
                            {
                                //Il s'agit bien d'une liaison dans une liaisons
                                MajSpvLiaiLiaiC(element);
                            }
                            break;

                        case DataRowState.Deleted:
                            element.VersionToReturn = DataRowVersion.Original;
                            CLienReseau lienSupportant = element.LienReseau;
                            if (lienSupportant != null && lienSupportant.IsValide())
                            {
                                CSchemaReseau schema = element.SchemaReseau;
                                if (schema.Row.RowState == DataRowState.Deleted)
                                {
                                    schema.VersionToReturn = DataRowVersion.Original;
                                }
                                CLienReseau lienSupporte = schema.LienReseau;
                                if (lienSupporte != null && lienSupporte.IsValide())    //Il s'agit bien d'un élément support/supportant
                                {
                                    CSpvLiai liaiSupportant = CSpvLiai.GetSpvLiaiFromLienReseau(lienSupportant) as CSpvLiai;
                                    if (liaiSupportant != null)
                                    {
                                        liaiSupportant.UpdateSupportés();
                                    }
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }
        public CFormSelectionNouveauLien(
            IElementALiensReseau source,
            IElementALiensReseau destination,
            CLienReseau lienSupporte)
        {
            InitializeComponent();
            sc2i.win32.common.CWin32Traducteur.Translate(this);
            m_filtreLiens = GetFiltreListeLiens(source, destination, lienSupporte);

            Init();
        }
Example #6
0
        private static CSpvLiai GetSpvLiai(DataRow row)
        {
            CSpvLiai    spvLiai;
            CLienReseau lienReseau = new CLienReseau(row);

            spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(lienReseau) as CSpvLiai;
            if (spvLiai == null)
            {
                spvLiai = CSpvLiai.GetSpvLiaiFromLienReseauAvecCreation(lienReseau);
            }
            // spvLiai.CopyFromLienReseau(lienReseau);
            spvLiai.CopyFromObjetTimos(lienReseau);
            return(spvLiai);
        }
Example #7
0
        private void InitControles()
        {
            if (m_bIsInit)
            {
                return;
            }
            m_panelChamps.ElementEdite = m_entiteEditee;
            m_lastSite       = m_entiteEditee.SiteSupervise;
            m_lastEquipement = m_entiteEditee.EquipementLogiqueSupervise;
            m_lastLien       = m_entiteEditee.LienReseauSupervise;
            InitZoneSelectionEntite();

            m_bIsInit = true;
        }
        /// <summary>
        /// Indique s'il faut intégrer un lien dans un graphe ou non
        /// </summary>
        /// <param name="lien"></param>
        /// <returns></returns>
        private bool IntegreLienInGraphe(CLienDeGrapheReseau lienDeGraphe)
        {
            CLienReseau lien = new CLienReseau(m_base.ContexteDonnee);

            if (lien.ReadIfExists(lienDeGraphe.IdLienReseau, false))
            {
                IElementALiensReseau elt1 = lien.Element1;
                IElementALiensReseau elt2 = lien.Element2;
                if ((!(elt1 is CSite) && !(elt1 is CEquipementLogique)) || (!(elt2 is CSite) && !(elt2 is CEquipementLogique)))
                {
                    return(false);
                }
                return(true);
            }
            return(false);
        }
        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);
        }
Example #10
0
        public void Init(C2iObjetDeSchema objetEdite, CSchemaReseau schemaReseau)
        {
            m_panelSchema.ObjetEdite  = objetEdite;
            m_panelSchema.Editeur     = null;
            m_panelSchema.NoClipboard = true;
            m_schemaReseau            = schemaReseau;
            m_objetDeSchema           = objetEdite;

            m_panelSchema.ObjetSchemaReseau = schemaReseau;
            m_panelSchema.ModeEdition       = EModeEditeurSchema.Selection;

            if (schemaReseau != null)
            {
                m_lienEdite = schemaReseau.LienReseau;
                m_panelSchema.LienReseauEdite = m_lienEdite;
            }
        }
Example #11
0
        //-----------------------------
        public bool DrillDown(IElementDeSchemaReseau eltDeSchema)
        {
            CSchemaReseau schema = eltDeSchema as CSchemaReseau;

            if (schema == null)
            {
                CLienReseau lien = eltDeSchema as CLienReseau;
                if (lien != null)
                {
                    schema = lien.SchemaReseau;
                }
            }
            if (schema == null)
            {
                CSite site = eltDeSchema as CSite;
                if (site != null)
                {
                    //S'il y a un cablage, affiche le cablage
                    foreach (CSchemaReseau sousSchema in SchemaAffiche.SchemaFils)
                    {
                        if (site.Equals(sousSchema.SiteApparenance))
                        {
                            schema = sousSchema;
                            break;
                        }
                    }
                }
            }

            if (schema != null)
            {
                m_stackCheminsReseau.Push(schema);
                m_dessinDeSchema = schema.GetSchema(false);
                SetSelection(null);
                RedrawSchema();
                UpdateTraitementSNMP();
                if (OnChangeSchemaAffiche != null)
                {
                    OnChangeSchemaAffiche(this, new EventArgs());
                }
                SnmpUpdate();
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// Indique s'il faut intégrer un lien dans un graphe ou non
        /// </summary>
        /// <param name="lien"></param>
        /// <returns></returns>
        private bool IntegreLienInGraphe(CLienDeGrapheReseau lienDeGraphe)
        {
            CLienReseau lien = new CLienReseau(m_base.ContexteDonnee);

            if (lien.ReadIfExists(lienDeGraphe.IdLienReseau, false))
            {
                if (!(lien.Complement1 is CExtremiteLienSurSite) || !(lien.Complement2 is CExtremiteLienSurSite))
                {
                    return(false);
                }
                CSpvLiai spvLiai = new CSpvLiai(m_base.ContexteDonnee);
                if (!spvLiai.ReadIfExists(new CFiltreData(CSpvLiai.c_champSmtLienReseau_Id + "=@1",
                                                          lien.Id), false))
                {
                    return(false);
                }
                return(true);
            }
            return(false);
        }
        public static CLienReseau SelectExistant(
            IElementALiensReseau source,
            IElementALiensReseau destination,
            IEtapeLienReseau[] etapesCheminSrc,
            IEtapeLienReseau[] etapesCheminDest,
            CLienReseau lienSupporté,
            ref bool bCreate)
        {
            CLienReseau lien = null;


            bool bCreation = false;

            CFormSelectionNouveauLien frm = new CFormSelectionNouveauLien(source, destination, lienSupporté);

            if (!frm.ListeVide)
            {
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    if (frm.m_bExistant)
                    {
                        lien = (CLienReseau)frm.m_panelListeLiensExistants.ElementSelectionne;
                    }
                    else
                    {
                        bCreation = true;
                    }
                }
            }
            else
            {
                bCreation = true;
            }
            frm.Dispose();



            bCreate = bCreation;
            return(lien);
        }
Example #14
0
        /// <summary>
        /// Indique s'il faut intégrer un lien dans un graphe ou non
        /// </summary>
        /// <param name="lien"></param>
        /// <returns></returns>
        private bool IntegreLienInGraphe(CLienDeGrapheReseau lienDeGraphe)
        {
            CLienReseau lien = new CLienReseau(m_base.ContexteDonnee);

            if (lien.ReadIfExists(lienDeGraphe.IdLienReseau, false))
            {
                IElementALiensReseau elt1 = lien.Element1;
                IElementALiensReseau elt2 = lien.Element2;
                if ((!(elt1 is CSite) && !(elt1 is CEquipementLogique)) || (!(elt2 is CSite) && !(elt2 is CEquipementLogique)))
                {
                    return(false);
                }
                return(true);

                /*if (!(lien.Complement1 is CExtremiteLienSurSite) || !(lien.Complement2 is CExtremiteLienSurSite))
                 *  return false;
                 * CSpvLiai spvLiai = new CSpvLiai(m_base.ContexteDonnee);
                 * if (!spvLiai.ReadIfExists(new CFiltreData(CSpvLiai.c_champSmtLienReseau_Id + "=@1",
                 *  lien.Id), false))
                 *  return false;
                 * return true;*/
            }
            return(false);
        }
Example #15
0
        ////////////////////////////////////////////////////////////////////
        public static void PropagerCLienReseau(CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result)
        {
            ///Pour éviter de traiter plusieurs fois une liaisons lors d'une sauvegarde
            Dictionary <DataRow, bool> rowsDejaTraitees = (Dictionary <DataRow, bool>)tableData[typeof(CSpvLiaiServeur)];

            if (rowsDejaTraitees == null)
            {
                rowsDejaTraitees = new Dictionary <DataRow, bool>();
                tableData[typeof(CSpvLiaiServeur)] = rowsDejaTraitees;
            }

            DataTable dt = contexte.Tables[CLienReseau.c_nomTable];

            if (dt != null)
            {
                ArrayList rows = new ArrayList(dt.Rows);

                foreach (DataRow row in rows)
                {
                    if (row.RowState != DataRowState.Unchanged)
                    {
                        if (!rowsDejaTraitees.ContainsKey(row))
                        {
                            rowsDejaTraitees[row] = true;
                            switch (row.RowState)
                            {
                            case DataRowState.Added:
                            case DataRowState.Modified:
                                CLienReseau lienTimos = new CLienReseau(row);
                                //force la création du schéma pour qu'il se synchronise
                                lienTimos.GetSchemaReseauADessiner(true);
                                CSpvLiai lienSpv = CSpvLiai.GetSpvLiaiFromLienReseau(lienTimos) as CSpvLiai;

                                result = CSpvLiai.CanSupervise(lienTimos);
                                if (lienSpv != null)
                                {
                                    if (row.HasVersion(DataRowVersion.Original))
                                    {
                                        if (!row[CTypeLienReseau.c_champId].Equals(row[CTypeLienReseau.c_champId, DataRowVersion.Original]))
                                        {
                                            //CSpvTypliai typeLiai = CSpvTypliai.GetSpvTypliaiFromTypeLienReseau(lienTimos.TypeLienReseau) as CSpvTypliai;
                                            CSpvTypliai typeLiai = CSpvTypliai.GetObjetSpvFromObjetTimos(lienTimos.TypeLienReseau) as CSpvTypliai;
                                            if (typeLiai == null)
                                            {
                                                result = lienSpv.Delete(true);
                                                if (!result)
                                                {
                                                    result.EmpileErreur("Can not cancel supervision of link @1|20005", lienTimos.Libelle);
                                                    return;
                                                }
                                            }
                                            else
                                            {
                                                lienSpv.NomTypeLiaison = typeLiai.Libelle;
                                            }
                                        }
                                    }
                                    if (!result)
                                    {
                                        result.EmpileErreur(I.T("Invalide properties for supervised link @1|20004", lienTimos.Libelle));
                                        return;
                                    }
                                    if (lienSpv != null && lienSpv.IsValide())
                                    {
                                        //   lienSpv.CopyFromLienReseau(lienTimos);
                                        lienSpv.CopyFromObjetTimos(lienTimos);
                                    }
                                }
                                else
                                {
                                    if (result)
                                    {
                                        //Création de la liaison SPV
                                        CSpvLiai liai = GetSpvLiai(row);
                                    }
                                    else
                                    {
                                        //CSpvTypliai typeLiai = CSpvTypliai.GetSpvTypliaiFromTypeLienReseau(lienTimos.TypeLienReseau) as CSpvTypliai;

                                        /*CSpvTypliai typeLiai = CSpvTypliai.GetObjetSpvFromObjetTimos(lienTimos.TypeLienReseau) as CSpvTypliai;
                                         * if (typeLiai == null)*/
                                        result = CResultAErreur.True;
                                    }
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
        }
Example #16
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);
        }
        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;
                    }
                }
            }
        }
        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;
        }
Example #19
0
        /// <summary>
        /// Calcule un graphe pour un schéma donné
        /// </summary>
        /// <param name="schema"></param>
        /// <param name="sens"></param>
        /// <returns></returns>
        public CResultAErreur CalculeGraphe(
            CSchemaReseau schema,
            ESensAllerRetourLienReseau?sens)
        {
            CResultAErreur result = CResultAErreur.True;

            m_baseDeGraphes.AddGrapheReseau(schema.Id, sens, this);
            m_sensGraphe            = sens;
            m_nIdSchemaReseauRacine = schema.Id;
            m_baseLiens.Clear();
            m_baseNoeuds.Clear();
            m_dicSuccesseurs.Clear();
            m_dicPredecesseurs.Clear();
            Dictionary <int, CNoeudDeGrapheReseauSite>       dicIdSiteToNoeud       = new Dictionary <int, CNoeudDeGrapheReseauSite>();
            Dictionary <int, CNoeudDeGrapheReseauEquipement> dicIdEquipementToNoeud = new Dictionary <int, CNoeudDeGrapheReseauEquipement>();

            foreach (CElementDeSchemaReseau elt in schema.ElementsDeSchema)//Ne prend que les éléments de premier niveau
            {
                CSite site = elt.ElementAssocie as CSite;
                if (site != null)
                {
                    CNoeudDeGrapheReseauSite noeud = new CNoeudDeGrapheReseauSite(site.Id, schema.Id, elt.IsCableALinterieur);
                    if (!m_baseNoeuds.Contains(noeud))
                    {
                        if (IntegreNoeud == null || IntegreNoeud(noeud))
                        {
                            m_baseNoeuds.Add(noeud);
                            dicIdSiteToNoeud[site.Id] = noeud;
                        }
                    }
                }
                else
                {
                    CEquipementLogique eqpt = elt.ElementAssocie as CEquipementLogique;
                    if (eqpt != null)
                    {
                        CNoeudDeGrapheReseauEquipement noeud = new CNoeudDeGrapheReseauEquipement(eqpt.Id, schema.Id);
                        if (!m_baseNoeuds.Contains(noeud))
                        {
                            if (IntegreNoeud == null || IntegreNoeud(noeud))
                            {
                                m_baseNoeuds.Add(noeud);
                                dicIdEquipementToNoeud[eqpt.Id] = noeud;
                            }
                        }
                    }
                }
            }

            Dictionary <int, CGrapheReseau> dicGraphesCalcules = new Dictionary <int, CGrapheReseau>();

            foreach (CElementDeSchemaReseau elt in schema.GetElementsForType <CLienReseau>())
            {
                if (elt.SchemaReseau.Id == schema.Id) //Ne prend pas les sous schémas
                {
                    CLienReseau lien = elt.ElementAssocie as CLienReseau;
                    if (lien != null)
                    {
                        if (m_sensGraphe != null)
                        {
                            CDonneeDessinLienDeSchemaReseau donneeDessin = elt.DonneeDessin as CDonneeDessinLienDeSchemaReseau;
                            if (donneeDessin == null)
                            {
                                continue;
                            }
                            if (m_sensGraphe.Value != donneeDessin.Forward_Backward)
                            {
                                continue;
                            }
                        }
                        EDirectionLienReseau[] directions = new EDirectionLienReseau[]
                        {
                            EDirectionLienReseau.UnVersDeux,
                            EDirectionLienReseau.DeuxVersUn
                        };
                        foreach (EDirectionLienReseau direction in directions)
                        {
                            if (direction == lien.Direction.Code || lien.Direction == EDirectionLienReseau.Bidirectionnel)
                            {
                                int nSigne = direction == EDirectionLienReseau.UnVersDeux ? 1 : -1;
                                IElementALiensReseau elt1    = null;
                                IElementALiensReseau elt2    = null;
                                CCheminLienReseau    chemin1 = null;
                                CCheminLienReseau    chemin2 = null;
                                if (direction == EDirectionLienReseau.UnVersDeux)
                                {
                                    elt1    = lien.Element1;
                                    chemin1 = elt.RacineChemin1;
                                    elt2    = lien.Element2;
                                    chemin2 = elt.RacineChemin2;
                                }
                                else if (direction == EDirectionLienReseau.DeuxVersUn)
                                {
                                    elt1    = lien.Element2;
                                    chemin1 = elt.RacineChemin2;
                                    elt2    = lien.Element1;
                                    chemin2 = elt.RacineChemin2;
                                }
                                if (!(elt1 is CSite) && !(elt1 is CEquipementLogique))
                                {
                                    elt1 = null;
                                }
                                if (!(elt2 is CSite) && !(elt2 is CEquipementLogique))
                                {
                                    elt2 = null;
                                }
                                if (elt1 != null && elt2 != null)
                                {
                                    CNoeudDeGrapheReseau noeud1 = null;
                                    if (chemin1 != null)
                                    {
                                        result = GetNoeudDansSousSchema(elt1, chemin1);//Result testé ensuite avec noeud1 = null;
                                        noeud1 = result.Data as CNoeudDeGrapheReseau;
                                    }
                                    else
                                    {
                                        if (elt1 is CSite)
                                        {
                                            CNoeudDeGrapheReseauSite noeudSite = null;
                                            dicIdSiteToNoeud.TryGetValue(elt1.Id, out noeudSite);
                                            noeud1 = noeudSite;
                                        }
                                        else if (elt1 is CEquipementLogique)
                                        {
                                            CNoeudDeGrapheReseauEquipement noeudEqpt = null;
                                            dicIdEquipementToNoeud.TryGetValue(elt1.Id, out noeudEqpt);
                                            noeud1 = noeudEqpt;
                                        }
                                    }
                                    if (noeud1 == null)
                                    {
                                        result.EmpileErreur(I.T("Can not find link @1 extremity|20043", lien.Libelle));
                                        return(result);
                                    }

                                    CNoeudDeGrapheReseau noeud2 = null;
                                    if (chemin2 != null)
                                    {
                                        result = GetNoeudDansSousSchema(elt2, chemin2);//Result testé ensuite avec noeud2= null;
                                        noeud2 = result.Data as CNoeudDeGrapheReseau;
                                    }
                                    else
                                    {
                                        if (elt2 is CSite)
                                        {
                                            CNoeudDeGrapheReseauSite noeudSite = null;
                                            dicIdSiteToNoeud.TryGetValue(elt2.Id, out noeudSite);
                                            noeud2 = noeudSite;
                                        }
                                        else if (elt2 is CEquipementLogique)
                                        {
                                            CNoeudDeGrapheReseauEquipement noeudEquip = null;
                                            dicIdEquipementToNoeud.TryGetValue(elt2.Id, out noeudEquip);
                                            noeud2 = noeudEquip;
                                        }
                                    }
                                    if (noeud2 == null)
                                    {
                                        result.EmpileErreur(I.T("Can not find link @1 extremity|20043", lien.Libelle));
                                        return(result);
                                    }

                                    CLienDeGrapheReseau lienDeGraphe = m_baseLiens.GetObjet(typeof(CLienDeGrapheReseau), nSigne * lien.Id, schema.Id);
                                    if (lienDeGraphe == null)
                                    {
                                        CEtapesExtremiteLienDeGraphe etapes1 = null;
                                        if (chemin1 != null)
                                        {
                                            etapes1 = new CEtapesExtremiteLienDeGraphe(chemin1);
                                        }
                                        CEtapesExtremiteLienDeGraphe etapes2 = null;
                                        if (chemin2 != null)
                                        {
                                            etapes2 = new CEtapesExtremiteLienDeGraphe(chemin2);
                                        }

                                        lienDeGraphe = new CLienDeGrapheReseau(
                                            nSigne * lien.Id,
                                            schema.Id,
                                            noeud1,
                                            noeud2,
                                            etapes1,
                                            etapes2);
                                        if (IntegreLiaison == null || IntegreLiaison(lienDeGraphe))
                                        {
                                            m_baseLiens.Add(lienDeGraphe);
                                            m_dicSuccesseurs.AddSuccesseur(noeud1, lienDeGraphe);
                                            m_dicPredecesseurs.AddPredecesseur(noeud2, lienDeGraphe);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }
Example #20
0
        //---------------------------------------------------------------------
        private DragDropEffects m_arbreConsultation_OnDragNode(object sender, CNodeConsultationHierarchique node)
        {
            //if (m_gestionnaireModeEdition.ModeEdition)
            {
                IElementDeSchemaReseau element = node.ObjetLie as IElementDeSchemaReseau;



                if (element != null && m_schemaReseau != null)
                {
                    if (m_lienEdite != null)
                    {
                        if (element.GetType() == typeof(CLienReseau))
                        {
                            CLienReseau lien = (CLienReseau)element;

                            if (!m_lienEdite.PeutEtreSupporte(lien))
                            {
                                CFormAlerte.Afficher(I.T("Cannot add the link because it is already supported by the current link|30385"), EFormAlerteType.Erreur);
                                return(DragDropEffects.None);
                            }


                            if (!m_lienEdite.TypeSupportantPossible(lien))
                            {
                                CFormAlerte.Afficher(I.T("Cannot add the link because its type is not a possible supporting type for this link type|30400"), EFormAlerteType.Erreur);
                                return(DragDropEffects.None);
                            }
                        }
                    }

                    if (element.GetType() == typeof(CSchemaReseau))
                    {
                        //CSchemaReseau schema = (CSchemaReseau)element;

                        //if (schema.SchemaParent != null)
                        //{
                        //    CFormAlerte.Afficher(I.T("Cannot add the diagram beacuse it is included in another diagram|30391"),EFormAlerteType.Erreur);
                        //    return DragDropEffects.None;
                        //}
                    }


                    /*CElementDeSchemaReseau elementDeSchema = new CElementDeSchemaReseau(m_schemaReseau.ContexteDonnee);
                     * elementDeSchema.CreateNewInCurrentContexte();
                     * elementDeSchema.ElementAssocie = element;
                     * elementDeSchema.SchemaReseau = m_schemaReseau;*/

                    C2iObjetDeSchemaTemporairePourDragDropSansElementDeSchema objet = new C2iObjetDeSchemaTemporairePourDragDropSansElementDeSchema();
                    objet.InitFrom(element);

                    CDonneeDragDropObjetGraphique data = new CDonneeDragDropObjetGraphique(m_arbreConsultation.GetType().ToString(), objet);
                    DataObject dataObj = new DataObject();
                    dataObj.SetData(data);
                    dataObj.SetData(typeof(CReferenceObjetDonnee), new CReferenceObjetDonnee((CObjetDonnee)element));
                    DragDropEffects eff = DoDragDrop(dataObj, DragDropEffects.All | DragDropEffects.Link);

                    /* if (eff == DragDropEffects.None)
                     *   elementDeSchema.CancelCreate();*/
                }
            }
            return(DragDropEffects.None);
        }
        protected void PrepareSupervisionEtatOperationnel(CSchemaReseau schema)
        {
            m_listeGraphes.Clear();
            m_baseChemins.Clear();
            List <ESensAllerRetourLienReseau?> lstToCalcul = new List <ESensAllerRetourLienReseau?>();

            if (schema.LienReseau != null)
            {
                lstToCalcul.Add(null);
            }
            else
            {
                lstToCalcul.Add(ESensAllerRetourLienReseau.Forward);
                lstToCalcul.Add(ESensAllerRetourLienReseau.Backward);
            }
            foreach (ESensAllerRetourLienReseau?sens in lstToCalcul)
            {
                CGrapheReseau graphe = m_base.BaseGraphes.GetGrapheExistant(schema, sens);
                if (graphe == null)
                {
                    graphe = new CGrapheReseau(m_base.BaseGraphes);
                    graphe.IntegreLiaison = IntegreLienInGraphe;
                    if (graphe.CalculeGraphe(schema, sens))
                    {
                        m_listeGraphes.Add(graphe);
                    }
                }
                else
                {
                    m_listeGraphes.Add(graphe);
                }
            }
            if (m_listeGraphes.Count == 2)
            {
                //Si l'un des graphes a des liens et pas l'autre, supprime ce graphe
                int nNbLiens1 = m_listeGraphes[0].GetLiensNiveau0().Length;
                int nNbLiens2 = m_listeGraphes[1].GetLiensNiveau0().Length;
                if (nNbLiens1 == 0 && nNbLiens2 != 0)
                {
                    m_listeGraphes.RemoveAt(0);
                }
                else if (nNbLiens2 == 0)
                {
                    m_listeGraphes.RemoveAt(1);
                }
            }


            //Calcule tous les chemins de point d'entrée à point de sortie.
            m_baseChemins.Clear();
            m_dicNoeudsIsoles = new Dictionary <CNoeudDeGrapheReseau, bool>();
            if (m_listeGraphes.Count > 0)
            {
                foreach (CNoeudDeGrapheReseau noeud in m_listeGraphes[0].GetNoeudsIsoles())
                {
                    m_dicNoeudsIsoles[noeud] = true;
                }
            }
            int nIndex = 0;

            foreach (CGrapheReseau graphe in m_listeGraphes)
            {
                List <CNoeudDeGrapheReseau> noeudsDepart;
                List <CNoeudDeGrapheReseau> noeudsArrive;
                if (schema.LienReseau != null)
                {
                    noeudsDepart = new List <CNoeudDeGrapheReseau>();
                    noeudsArrive = new List <CNoeudDeGrapheReseau>();
                    CLienReseau                 lien = schema.LienReseau;
                    CNoeudDeGrapheReseau        noeud;
                    List <EDirectionLienReseau> lstCodes = new List <EDirectionLienReseau>();
                    if (lien.Direction.Code == EDirectionLienReseau.Bidirectionnel)
                    {
                        lstCodes.Add(EDirectionLienReseau.UnVersDeux);
                        lstCodes.Add(EDirectionLienReseau.DeuxVersUn);
                    }
                    else
                    {
                        lstCodes.Add(lien.Direction.Code);
                    }
                    foreach (EDirectionLienReseau direction in lstCodes)
                    {
                        switch (direction)
                        {
                        case EDirectionLienReseau.UnVersDeux:
                            noeud = graphe.GetNoeudForElement(lien.Element1, schema);
                            if (noeud != null)
                            {
                                noeudsDepart.Add(noeud);
                            }
                            noeud = graphe.GetNoeudForElement(lien.Element2, schema);
                            if (noeud != null)
                            {
                                noeudsArrive.Add(noeud);
                            }
                            break;

                        case EDirectionLienReseau.DeuxVersUn:
                            noeud = graphe.GetNoeudForElement(lien.Element2, schema);
                            if (noeud != null)
                            {
                                noeudsDepart.Add(noeud);
                            }
                            noeud = graphe.GetNoeudForElement(lien.Element1, schema);
                            if (noeud != null)
                            {
                                noeudsArrive.Add(noeud);
                            }
                            break;
                        }
                    }
                }
                else
                {
                    noeudsDepart = new List <CNoeudDeGrapheReseau>(graphe.GetNoeudsEntreeNiveau0());
                    noeudsArrive = new List <CNoeudDeGrapheReseau>(graphe.GetNoeudsSortieNiveau0());
                }

                foreach (CNoeudDeGrapheReseau noeudDepart in noeudsDepart)
                {
                    foreach (CNoeudDeGrapheReseau noeudArrivee in noeudsArrive)
                    {
                        CPointAPointDeGraphe         pap     = new CPointAPointDeGraphe(noeudDepart, noeudArrivee);
                        List <CCheminDeGrapheReseau> chemins = graphe.GetChemins(noeudDepart, noeudArrivee);
                        m_baseChemins.AddChemins(pap, chemins);
                        if (chemins.Count != 0)
                        {
                            if (m_dicNoeudsIsoles.ContainsKey(noeudDepart))
                            {
                                m_dicNoeudsIsoles.Remove(noeudDepart);
                            }
                            if (m_dicNoeudsIsoles.ContainsKey(noeudArrivee))
                            {
                                m_dicNoeudsIsoles.Remove(noeudArrivee);
                            }
                        }
                    }
                }
            }
        }
Example #22
0
        //----------------------------------------------------
        /// <summary>
        /// Remplit ou met à jour l'alarme à partir de données
        /// issues d'un service de médiation
        /// </summary>
        /// <param name="alarme"></param>
        public void FillFromLocalAlarmeFromMediation(CLocalAlarme alarme)
        {
            Libelle   = alarme.Libelle;
            Cle       = alarme.GetKey();
            AlarmId   = alarme.Id;
            EtatCode  = (int)alarme.EtatCode;
            DateDebut = alarme.DateDebut;
            DateFin   = alarme.DateFin;
            CTypeAlarme ta = new CTypeAlarme(ContexteDonnee);

            if (ta.ReadIfExists(Int32.Parse(alarme.TypeAlarme.Id)))
            {
                TypeAlarme = ta;
            }
            else
            {
                throw new Exception(I.T("Alarm type @1 doesn't exists|20104", alarme.TypeAlarme.Libelle));
            }

            Site = null;
            EquipementLogique = null;
            LienReseau        = null;
            EntiteSnmp        = null;
            //Site
            if (alarme.SiteId != null)
            {
                /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CSite), alarme.SiteId);
                 * if (nId != null)
                 *  Row[CSite.c_champId] = nId.Value;*/
                CSite site = new CSite(ContexteDonnee);
                if (site.ReadIfExists(alarme.SiteId))
                {
                    Site = site;
                }
            }
            if (alarme.EquipementId != null)
            {
                /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CEquipementLogique), alarme.EquipementId);
                 * if (nId != null)
                 *  Row[CEquipementLogique.c_champId] = nId.Value;*/
                CEquipementLogique eqt = new CEquipementLogique(ContexteDonnee);
                if (eqt.ReadIfExists(alarme.EquipementId))
                {
                    EquipementLogique = eqt;
                }
            }
            if (alarme.LienId != null)
            {
                /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CLienReseau), alarme.LienId);
                 * if (nId != null)
                 *  Row[CLienReseau.c_champId] = nId.Value;*/
                CLienReseau lien = new CLienReseau(ContexteDonnee);
                if (lien.ReadIfExists(alarme.LienId))
                {
                    LienReseau = lien;
                }
            }
            if (alarme.EntiteSnmpId != null)
            {
                /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CEntiteSnmp), alarme.EntiteSnmpId);
                 * if (nId != null)
                 *  Row[CEntiteSnmp.c_champId] = nId.Value;*/
                CEntiteSnmp entite = new CEntiteSnmp(ContexteDonnee);
                if (entite.ReadIfExists(alarme.EntiteSnmpId))
                {
                    EntiteSnmp = entite;
                }
            }
            IsHS = alarme.IsHS;
            if (alarme.IdSeverite != null)
            {
                CSeveriteAlarme severite = new CSeveriteAlarme(ContexteDonnee);
                if (severite.ReadIfExists(Int32.Parse(alarme.IdSeverite)))
                {
                    Severite = severite;
                }
            }
            if (alarme.MasquagePropre != null)
            {
                CParametrageFiltrageAlarmes parametreFiltre = new CParametrageFiltrageAlarmes(ContexteDonnee);
                if (parametreFiltre.ReadIfExists(Int32.Parse(alarme.MasquagePropre.Id)))
                {
                    MasquagePropre = parametreFiltre;
                }
            }
            else
            {
                MasquagePropre = null;
            }
            foreach (CChampCustom champ in ta.TousLesChampsAssocies)
            {
                object val = alarme.GetValeurChamp(champ.Id.ToString());
                if (val != null)
                {
                    SetValeurChamp(champ.Id, val);
                }
            }
        }