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 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 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); }
//////////////////////////////////////////////////////////////////// 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; } } } } } }