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); }
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); }
public override IElementDeSchemaReseau GetElementAssocie(CContexteDonnee contexte) { CLienReseau lien = new CLienReseau(contexte); if (lien.ReadIfExists(Math.Abs(IdObjet))) { return(lien); } return(null); }
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(); }
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); }
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); }
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; } }
//----------------------------- 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); }
/// <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); }
//////////////////////////////////////////////////////////////////// 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; } } } } } }
//------------------------------------------------------------------- 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; }
/// <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); }
//--------------------------------------------------------------------- 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); } } } } } }
//---------------------------------------------------- /// <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); } } }