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); } }
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 System.Collections.ArrayList(table.Rows); foreach (DataRow row in lstRows) { if (row.RowState == DataRowState.Added) { CSpvLiai spvLiai = new CSpvLiai(row); CSpvLiai_Rep spvLiaiRep = new CSpvLiai_Rep(contexte); if (!spvLiaiRep.ReadIfExists(new CFiltreData(CSpvLiai_Rep.c_champLIAI_ID + "=@1", spvLiai.Id))) { spvLiaiRep.CreateNewInCurrentContexte(new object[] { spvLiai.Id }); spvLiaiRep.SpvLiai = spvLiai; spvLiaiRep.CodeEtatOperationnel = (Int32?)EEtatOperationnel.OK; } } } return(result); }
private static void MajSpvLiaiLiaiC(CElementDeSchemaReseau element) { if (element == null) { return; } if (element.LienReseau != null && element.SchemaReseau != null && element.SchemaReseau.LienReseau != null) { //C'est une dépendance de lien à lien //Cherche si la dépendance existe déjà CSpvLiai_Liaic dep = new CSpvLiai_Liaic(element.ContexteDonnee); CSpvLiai liaiSupportée = null; if (CSpvLiai.CanSupervise(element.SchemaReseau.LienReseau)) { liaiSupportée = CSpvLiai.GetObjetSpvFromObjetTimosAvecCreation(element.SchemaReseau.LienReseau); } CSpvLiai liaiSupportant = null; if (CSpvLiai.CanSupervise(element.LienReseau)) { liaiSupportant = CSpvLiai.GetObjetSpvFromObjetTimosAvecCreation(element.LienReseau); } if (liaiSupportée != null && liaiSupportant != null) { if (!dep.ReadIfExists(new CFiltreData(CSpvLiai_Liaic.c_champIdLiaisonSupportée + "=@1 and " + CSpvLiai_Liaic.c_champIdLiaisonSupportant + "=@2", liaiSupportée.Id, liaiSupportant.Id))) { dep.CreateNewInCurrentContexte(new object[] { liaiSupportée.Id, liaiSupportant.Id }); } } } }
public void CreateGraphe(CSchemaReseau schema) { m_liens.Clear(); m_noeuds.Clear(); //Création des noeuds foreach (CSite site in schema.GetElementsLies <CSite>()) { CSpvSite spvSite = CSpvSite.GetObjetSpvFromObjetTimos(site); if (spvSite != null) { if (GetNoeud(spvSite) == null) { m_noeuds.Add(new CNoeud(spvSite)); } } } foreach (CLienReseau lien in schema.GetElementsLies <CLienReseau>()) { CSpvLiai spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(lien) as CSpvLiai; if (spvLiai != null) { CNoeud noeud1 = GetNoeud(spvLiai.SiteOrigine); CNoeud noeud2 = GetNoeud(spvLiai.SiteDestination); if (noeud1 != null && noeud2 != null) { m_liens.Add(new CLien(spvLiai, noeud1, noeud2)); } } } }
public static void OnModificationSchemaReseau(CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result) { DataTable table = contexte.Tables[CElementDeSchemaReseau.c_nomTable]; if (table == null) { return; } //Id de schéma->true si modifié Dictionary <int, bool> dicSchemasModifies = new Dictionary <int, bool>(); foreach (DataRow row in table.Rows) { switch (row.RowState) { case DataRowState.Added: case DataRowState.Modified: if (row[CElementDeSchemaReseau.c_champIdSchemaReseauAuquelJappartiens] != DBNull.Value) { dicSchemasModifies[(int)row[CElementDeSchemaReseau.c_champIdSchemaReseauAuquelJappartiens]] = true; } break; case DataRowState.Deleted: if (row[CElementDeSchemaReseau.c_champIdSchemaReseauAuquelJappartiens, DataRowVersion.Original] != DBNull.Value) { dicSchemasModifies[(int)row[CElementDeSchemaReseau.c_champIdSchemaReseauAuquelJappartiens, DataRowVersion.Original]] = true; } break; } } foreach (int nIdSchema in dicSchemasModifies.Keys) { CSchemaReseau schema = new CSchemaReseau(contexte); if (schema.ReadIfExists(nIdSchema)) { if (schema.LienReseau != null) { if (CSpvLiai.CanSupervise(schema.LienReseau)) { CSpvLiai spvLien = CSpvLiai.GetSpvLiaiFromLienReseauAvecCreation(schema.LienReseau); if (spvLien != null) { result = spvLien.UpdateCablages(); if (result) { spvLien.UpdateSupportants(); } if (!result) { return; } } } } } } return; }
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 CSpvLiai GetSpvLiai(CContexteDonnee contexteDonnee) { CSpvLiai liai = new CSpvLiai(contexteDonnee); if (liai.ReadIfExists(m_nId)) { return(liai); } return(null); }
public override sc2i.common.CResultAErreur MyInitChamps() { if (ObjetEdite is CLienReseau) { m_spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(ObjetEdite as CLienReseau) as CSpvLiai; } CResultAErreur result = base.MyInitChamps(); if (!result) { return(result); } if (result && m_spvLiai != null) { m_PanelTypeAccessAlarm.InitFromListeObjets( m_spvLiai.SpvTypeAccessAlarm, typeof(CSpvTypeAccesAlarme), typeof(CFormEditionTypeAccesAlarmeBoucle), m_spvLiai, "SpvLiai"); m_CablageAccesAlarm.InitFromListeObjets( m_spvLiai.AlarmesCables, typeof(CSpvLienAccesAlarme), typeof(CFormEditionCablageAccesAlarmeBoucle), m_spvLiai, "SpvLiai"); } if (m_spvLiai == null) { CFiltreDataImpossible filtreImpossible = new CFiltreDataImpossible(); CListeObjetsDonnees listeVideAlarme = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvTypeAccesAlarme)); CListeObjetsDonnees listeVideAccesc = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvLienAccesAlarme)); listeVideAlarme.Filtre = filtreImpossible; listeVideAccesc.Filtre = filtreImpossible; m_PanelTypeAccessAlarm.InitFromListeObjets( listeVideAlarme, typeof(CSpvTypeAccesAlarme), typeof(CFormEditionTypeAccesAlarmeBoucle), null, "SpvLiai"); m_CablageAccesAlarm.InitFromListeObjets( listeVideAccesc, typeof(CSpvLienAccesAlarme), typeof(CFormEditionCablageAccesAlarmeBoucle), null, "SpvLiai"); } return(result); }//MyInitChamps()
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); }
}//MyInitChamps() public override sc2i.common.CResultAErreur MyMajChamps() { CResultAErreur result = base.MyMajChamps(); if (!result) { return(result); } if (LeLienReseau != null && m_spvLiai == null && m_extModeEdition.ModeEdition) { m_spvLiai = CSpvLiai.GetSpvLiaiFromLienReseauAvecCreation(LeLienReseau); } return(result); }
/// <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 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; } } } } } }
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; } } } }
public CLien(CSpvLiai liaison, CNoeud noeudDepart, CNoeud noeudArrivee) { m_liaison = liaison; m_noeudArrivee = noeudArrivee; m_noeudDepart = noeudDepart; }
public CPassageChemin(CSpvSite siteSource, CSpvLiai liaiUtilisee) { m_siteSource = siteSource; m_liaiUtilisee = liaiUtilisee; }