protected CResultAErreur UpdateMasquagesEquipements() { CResultAErreur result = CResultAErreur.True; if (EquipementOrigine == null || EquipementDestination == null) { //Pas de masquage CObjetDonneeAIdNumerique.Delete(EquipMaskSources, true); return(result); } //Trouve le masquage entre ces deux equipements CSpvEquip_Msk msk = new CSpvEquip_Msk(ContexteDonnee); CFiltreData filtre = new CFiltreData(CSpvEquip_Msk.c_champEQUIP_MASQUANT_ID + "=@1 and " + CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2", EquipementOrigine.Id, EquipementDestination.Id); if (!msk.ReadIfExists(filtre)) { msk.CreateNewInCurrentContexte(); msk.EquipementMasquant = EquipementOrigine; msk.EquipementMasque = EquipementDestination; } //S'assure que je suis bien source de ce masquage CListeObjetsDonnees lstSources = msk.Sources; lstSources.Filtre = new CFiltreData(CSpvLiai.c_champLIAI_ID + "=@1", Id); if (lstSources.Count == 0) { CSpvEquip_Msk_Source src = new CSpvEquip_Msk_Source(ContexteDonnee); src.CreateNewInCurrentContexte(); src.Equip_Msk = msk; src.LiaiSource = this; } return(msk.PropageMasquage()); }
//----------------------------------------- public CResultAErreur PropageMasquage() { CResultAErreur result = CResultAErreur.True; //STEF 20/10/2010, le masquage est à revoir, il crée des boucles infinies. //c'est notamment à cause des boucles, qui ne peuvent pas être gerées par le masquage. //Il faut travailler sur un masquage au niveau service ! return(result); CSpvEquip masquant = EquipementMasquant; CSpvEquip masqué = EquipementMasque; //Recherche tout ce que masque le masqué CListeObjetsDonnees listeMasqués = new CListeObjetsDonnees(ContexteDonnee, typeof(CSpvEquip_Msk)); listeMasqués.Filtre = new CFiltreData(c_champEQUIP_MASQUANT_ID + "=@1", masqué.Id); foreach (CSpvEquip_Msk mskExistant in listeMasqués) { //Trouve le masquage entre le masquant et le masqué du masqué CSpvEquip_Msk msk = new CSpvEquip_Msk(ContexteDonnee); if (!msk.ReadIfExists(new CFiltreData( c_champEQUIP_MASQUANT_ID + "=@1 and " + CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2", masquant.Id, mskExistant.EquipementMasque.Id))) { //Stef 11/10/2010 : Evite le masquage de boucle : si le masquant est masqué par le //masqué, on ne crée pas CSpvEquip_Msk mskTmp = new CSpvEquip_Msk(ContexteDonnee); if (!mskTmp.ReadIfExists(new CFiltreData( c_champEQUIP_MASQUANT_ID + "=@1 and " + CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2", mskExistant.EquipementMasquant.Id, masquant.Id))) { msk.CreateNewInCurrentContexte(); msk.EquipementMasquant = masquant; msk.EquipementMasque = mskExistant.EquipementMasque; msk.PropageMasquage(); } else { msk = null; } } if (msk != null) { //S'assure que je suis bien source du masquage CListeObjetsDonnees sources = msk.Sources; sources.Filtre = new CFiltreData( CSpvEquip_Msk_Source.c_champMasquageParent1 + "=@1 and " + CSpvEquip_Msk_Source.c_champMasquageParent2 + "=@2", Id, mskExistant.Id); if (sources.Count == 0) { CSpvEquip_Msk_Source source = new CSpvEquip_Msk_Source(ContexteDonnee); source.CreateNewInCurrentContexte(); source.Equip_Msk = msk; source.Equip_MskSource1 = this; source.Equip_MskSource2 = mskExistant; } } } //Recherche tout ce qui masque le masquant CListeObjetsDonnees listeMasquants = new CListeObjetsDonnees(ContexteDonnee, typeof(CSpvEquip_Msk)); listeMasquants.Filtre = new CFiltreData( c_champEQUIP_MASQUE_ID + "=@1", masquant.Id); foreach (CSpvEquip_Msk mskExistant in listeMasquants) { //Trouve le masquage entre le masquant du masquant et le masqué CSpvEquip_Msk msk = new CSpvEquip_Msk(ContexteDonnee); if (!msk.ReadIfExists(new CFiltreData( c_champEQUIP_MASQUANT_ID + "=@1 and " + c_champEQUIP_MASQUE_ID + "=@2", mskExistant.EquipementMasquant.Id, masqué.Id))) { //Stef 11/10/2010 : Evite le masquage de boucle : si le masquant est masqué par le //masqué, on ne crée pas CSpvEquip_Msk mskTmp = new CSpvEquip_Msk(ContexteDonnee); if (!mskTmp.ReadIfExists(new CFiltreData( c_champEQUIP_MASQUANT_ID + "=@1 and " + CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2", masquant.Id, mskExistant.EquipementMasquant.Id))) { //Crée le masquage msk.CreateNewInCurrentContexte(); msk.EquipementMasquant = mskExistant.EquipementMasquant; msk.EquipementMasque = masqué; msk.PropageMasquage(); } else { msk = null; } } if (msk != null) { //S'assure que je suis bien source du masquage CListeObjetsDonnees sources = msk.Sources; sources.Filtre = new CFiltreData( CSpvEquip_Msk_Source.c_champMasquageParent1 + "=@1 and " + CSpvEquip_Msk_Source.c_champMasquageParent2 + "=@2", mskExistant.Id, Id); if (sources.Count == 0) { //Crée la source CSpvEquip_Msk_Source source = new CSpvEquip_Msk_Source(ContexteDonnee); source.CreateNewInCurrentContexte(); source.Equip_Msk = msk; source.Equip_MskSource1 = mskExistant; source.Equip_MskSource2 = this; } } } return(result); }