예제 #1
0
파일: CSpvLiai.cs 프로젝트: ykebaili/Timos
        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());
        }
예제 #2
0
        //-----------------------------------------
        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);
        }