Пример #1
0
        //------------------------------------------------------------------------------------------------
        protected static string GetRequeteRelation(CInfoRelation rel)
        {
            string strNomTableFille   = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille);
            string strNomTableParente = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableParente);
            string strRequeteRelation = "";

            strRequeteRelation += "ALTER TABLE " + strNomTableFille + " ";
            strRequeteRelation += "ADD CONSTRAINT " + rel.RelationKey;

            strRequeteRelation += " FOREIGN KEY (";
            foreach (string strChamp in rel.ChampsFille)
            {
                strRequeteRelation += strChamp + ",";
            }
            strRequeteRelation  = strRequeteRelation.Substring(0, strRequeteRelation.Length - 1);
            strRequeteRelation += ") ";
            strRequeteRelation += "REFERENCES " + strNomTableParente + "(";
            foreach (string strChamp in rel.ChampsParent)
            {
                strRequeteRelation += strChamp + ",";
            }
            strRequeteRelation  = strRequeteRelation.Substring(0, strRequeteRelation.Length - 1);
            strRequeteRelation += ")";
            return(strRequeteRelation);
        }
Пример #2
0
        protected virtual string GetRequeteCreateCleEtrangere(CInfoRelation rel)
        {
            string strTableFilleInDb   = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille);
            string strTableParenteInDb = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableParente);
            string strRequeteRelation  = "";

            strRequeteRelation += "ALTER TABLE " + strTableFilleInDb + " ";
            strRequeteRelation += "ADD CONSTRAINT " + GetNewNomClefEtrangere(rel);

            strRequeteRelation += " FOREIGN KEY (";
            foreach (string strChamp in rel.ChampsFille)
            {
                strRequeteRelation += strChamp + ",";
            }
            strRequeteRelation  = strRequeteRelation.Substring(0, strRequeteRelation.Length - 1);
            strRequeteRelation += ") ";
            strRequeteRelation += "REFERENCES " + strTableParenteInDb + "(";
            foreach (string strChamp in rel.ChampsParent)
            {
                strRequeteRelation += strChamp + ",";
            }
            strRequeteRelation  = strRequeteRelation.Substring(0, strRequeteRelation.Length - 1);
            strRequeteRelation += ")";
            return(strRequeteRelation);
        }
 private void SoitConcernePar(CListeObjetsDonnees lstEquips)
 {
     if (m_relationToEquipSpv == null)
     {
         foreach (CInfoRelation info in CContexteDonnee.GetListeRelationsTable(CEquipementLogique.c_nomTable))
         {
             if (info.TableParente == CEquipementLogique.c_nomTable && info.TableFille == CSpvEquip.c_nomTable)
             {
                 m_relationToEquipSpv = info;
                 break;
             }
         }
     }
     lstEquips.GetDependances(m_relationToEquipSpv).AssureLectureFaite();
     foreach (CEquipementLogique eqpt in lstEquips)
     {
         CSpvEquip spvEquip = new CSpvEquip(eqpt.ContexteDonnee);
         if (spvEquip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1",
                                                   eqpt.Id), false))
         {
             m_dicEquipementsSpvConcernant[spvEquip.Id] = true;
         }
     }
     lstEquips = lstEquips.GetDependances("EquipementsLogiquesContenus");
     if (lstEquips.Count > 0)
     {
         SoitConcernePar(lstEquips);
     }
 }
Пример #4
0
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 protected virtual bool ShouldDeleteIndexRelation(string strNomTable, CInfoRelation infoRelation)
 {
     if (!infoRelation.Indexed && IndexExists(strNomTable, infoRelation.ChampsFille))
     {
         return(true);
     }
     return(false);
 }
Пример #5
0
 public CDefinitionProprieteDynamiqueRelation(
     string strNomConvivial,
     string strPropriete,
     CInfoRelation relation,
     CTypeResultatExpression typeDonnee
     )
     : base(strNomConvivial, strPropriete, typeDonnee, true, true)
 {
     m_relation = relation;
 }
Пример #6
0
 ////////////////////////////////////////////////////////////////////////
 public CFiltreSynchronisation GetFilsForRelation(CInfoRelation relation)
 {
     foreach (CFiltreSynchronisation filtre in m_listeFils)
     {
         if (filtre.RelationToParent.RelationKey == relation.RelationKey)
         {
             return(filtre);
         }
     }
     return(null);
 }
Пример #7
0
        protected virtual string GetRequeteDeleteClefEtrangere(CInfoRelation relationToDelete)
        {
            string nomcleetr            = GetNomClefEtrangere(relationToDelete);
            string strNomTableFilleInDb = CContexteDonnee.GetNomTableInDbForNomTable(relationToDelete.TableFille);

            if (nomcleetr == "")
            {
                return("");
            }
            return("ALTER TABLE " + strNomTableFilleInDb + " DROP CONSTRAINT " + nomcleetr);
        }
Пример #8
0
        ////////////////////////////////////////////////////////////////////////
        public CResultAErreur Serialize(C2iSerializer serializer)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

            if (!result)
            {
                return(result);
            }

            serializer.TraiteString(ref m_strNomTable);

            I2iSerializable objet = m_filtreDynamique;

            result = serializer.TraiteObject(ref objet);
            if (!result)
            {
                return(result);
            }
            m_filtreDynamique = (CFiltreDynamique)objet;

            objet  = m_relationToParent;
            result = serializer.TraiteObject(ref objet);
            if (!result)
            {
                return(result);
            }
            m_relationToParent = (CInfoRelation)objet;

            serializer.TraiteBool(ref m_bTouteLaTable);

            result = serializer.TraiteArrayListOf2iSerializable(m_listeFils);
            if (!result)
            {
                return(result);
            }
            if (serializer.Mode == ModeSerialisation.Lecture)
            {
                NettoieFiltresFils();
                foreach (CFiltreSynchronisation filtre in m_listeFils)
                {
                    filtre.DefinitParent(this, filtre.RelationToParent);
                }
            }

            if (nVersion >= 1)
            {
                serializer.TraiteBool(ref m_bIsAutoAdd);
            }
            return(result);
        }
Пример #9
0
 /////////////////////////////////////////////////////////////////
 //S'assure que les CInfoRelation vers les objets SPV sont bien connues
 private void AssureRelationsToSpv()
 {
     if (m_relationFromEquipementSpvToEquipement == null)
     {
         foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(CEquipementLogique.c_nomTable))
         {
             if (relation.TableParente == CEquipementLogique.c_nomTable && relation.TableFille == CSpvEquip.c_nomTable)
             {
                 m_relationFromEquipementSpvToEquipement = relation;
                 break;
             }
         }
     }
     if (m_relationFromLiaisonSpvToLiaison == null)
     {
         foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(CLienReseau.c_nomTable))
         {
             if (relation.TableParente == CLienReseau.c_nomTable && relation.TableFille == CSpvLiai.c_nomTable)
             {
                 m_relationFromLiaisonSpvToLiaison = relation;
                 break;
             }
         }
     }
     if (m_relationFromSiteSpvToSite == null)
     {
         foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(CSite.c_nomTable))
         {
             if (relation.TableParente == CSite.c_nomTable && relation.TableFille == CSpvSite.c_nomTable)
             {
                 m_relationFromSiteSpvToSite = relation;
                 break;
             }
         }
     }
     if (m_relationFromEquipementSpvToEquipement == null)
     {
         throw new Exception("Error in finding relation from site to Supervised site");
     }
     if (m_relationFromLiaisonSpvToLiaison == null)
     {
         throw new Exception("Error in finding relation form link to Supervised link");
     }
     if (m_relationFromSiteSpvToSite == null)
     {
         throw new Exception("Error in finding relation from site to supervised site");
     }
 }
        ////////////////////////////////////////////////////////////////////////
        private void PrivateAddFiltre(CFiltreSynchronisation filtre)
        {
            ArrayList lst = (ArrayList)m_tableTableToFiltreSynchronisation[filtre.NomTable];

            if (lst == null)
            {
                lst = new ArrayList();
                m_tableTableToFiltreSynchronisation[filtre.NomTable] = lst;
            }
            CInfoRelation relation = filtre.RelationToParent;

            if (relation != null)
            {
                //Regarde s'il y a un filtre sur la table complète avant d'aller plus loin !
                foreach (CFiltreSynchronisation filtreExistant in lst)
                {
                    if (filtreExistant.IsLienToFullTableParente &&
                        filtreExistant.RelationToParent.Equals(relation))
                    {
                        //Il y a un filtre sur toute la table liée, on n'ajoute pas celui-ci
                        return;
                    }
                }
                if (filtre.IsLienToFullTableParente)
                {
                    //Supprime tous les autres filtres pour la même relation
                    //puisqu'on ajoute un filtre sur toute la table liée
                    for (int nFiltre = lst.Count - 1; nFiltre >= 0; nFiltre--)
                    {
                        CFiltreSynchronisation filtreExistant = (CFiltreSynchronisation)lst[nFiltre];
                        if (relation.Equals(filtreExistant.RelationToParent))
                        {
                            lst.RemoveAt(nFiltre);
                        }
                    }
                }
            }
            lst.Add(filtre);
            foreach (CFiltreSynchronisation filtreFils in filtre.FiltresFils)
            {
                PrivateAddFiltre(filtreFils);
            }
        }
Пример #11
0
            public CFiltreDynamiqueParentTablePleine(string strTableConcernee, CInfoRelation relationToTableFille)
            {
                m_strNomTable          = strTableConcernee;
                m_relationToTableFille = relationToTableFille;

                //Crée un filtre sur le parent pour qu'il ait un id > 0,
                CComposantFiltreDynamiqueValeurChamp composant = new CComposantFiltreDynamiqueValeurChamp();

                composant.IdOperateur = CComposantFiltreOperateur.c_IdOperateurSuperieurOuEgal;
                composant.Champ       = new CDefinitionProprieteDynamique(
                    relationToTableFille.ChampsParent[0],
                    relationToTableFille.ChampsParent[0],
                    new CTypeResultatExpression(typeof(int), false),
                    false,
                    true);
                composant.ConditionApplication = new C2iExpressionVrai();
                composant.ExpressionValeur     = new C2iExpressionConstante(0);
                ComposantPrincipal             = composant;
                TypeElements = CContexteDonnee.GetTypeForTable(strTableConcernee);
            }
Пример #12
0
        /// ////////////////////////////////////////
        public override CResultAErreur Serialize(C2iSerializer serializer)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

            if (!result)
            {
                return(result);
            }
            result = base.Serialize(serializer);
            if (!result)
            {
                return(result);
            }
            I2iSerializable obj = m_relation;

            result = serializer.TraiteObject(ref obj);
            if (!result)
            {
                return(result);
            }
            m_relation = (CInfoRelation)obj;
            return(result);
        }
Пример #13
0
 ////////////////////////////////////////////////////////////////////////
 public void AddFils(CFiltreSynchronisation filtreFils, CInfoRelation relationToParent)
 {
     m_listeFils.Add(filtreFils);
     filtreFils.DefinitParent(this, relationToParent);
 }
Пример #14
0
        protected override string GetNewNomClefEtrangere(CInfoRelation rel)
        {
            string strNomTable = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille);

            return(GetNewNom(EntiteTable.ClefEtrangere, strNomTable));
        }
        /// <summary>
        /// Enregistre dans la table m_tableCodesVisibles
        /// les ids des éléments qui peuvent être affichés
        /// </summary>
        private void PrepareFiltre()
        {
            if (m_filtre == null || !m_filtre.HasFiltre)
            {
                m_tableCodesVisibles       = null;
                m_tableIdsElementsVisibles = null;
                return;
            }
            m_tableCodesVisibles = new Hashtable(2000, 0.5f);
            CListeObjetsDonnees liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, m_typeObjets);

            liste.Filtre = m_filtre;
            Hashtable tableTmp = new Hashtable();

            if (typeof(IObjetHierarchiqueACodeHierarchique).IsAssignableFrom(m_typeObjets))
            {
                foreach (IObjetHierarchiqueACodeHierarchique objet in liste)
                {
                    string strCode    = objet.CodeSystemeComplet;
                    bool   bForceTrue = true;
                    while (strCode.Length > 0)
                    {
                        if (bForceTrue)
                        {
                            m_tableCodesVisibles[strCode] = true;
                        }
                        else
                        if (!m_tableCodesVisibles.Contains(strCode))
                        {
                            m_tableCodesVisibles[strCode] = false;
                        }
                        bForceTrue = false;
                        strCode    = strCode.Substring(0, strCode.Length - objet.NbCarsParNiveau);
                    }
                }
            }
            else
            {
                m_tableIdsElementsSelectionnables.Clear();
                string strChampParent = null;
                foreach (IObjetDonneeAutoReference objet in liste)
                {
                    m_tableIdsElementsVisibles.Add(objet.Id);
                    m_tableIdsElementsSelectionnables.Add(objet.Id);
                    strChampParent = objet.ChampParent;
                }
                //lecture des parents
                if (strChampParent != null)
                {
                    int             nCount      = liste.Count;
                    CStructureTable structure   = CStructureTable.GetStructure(m_typeObjets);
                    CInfoRelation   relToParent = null;
                    foreach (CInfoRelation rel in structure.RelationsParentes)
                    {
                        if (rel.ChampsFille[0] == strChampParent && rel.TableParente == rel.TableFille)
                        {
                            relToParent = rel;
                        }
                    }

                    CListeObjetsDonnees lst = liste.GetDependances(relToParent);
                    while (lst.Count != 0)
                    {
                        foreach (IObjetDonneeAutoReference objet in lst)
                        {
                            m_tableIdsElementsVisibles.Add(objet.Id);
                        }
                        lst = lst.GetDependances(relToParent);
                    }
                }
            }
        }
Пример #16
0
 //--------------------------------------------------------------------------------------
 protected override bool ShouldDeleteIndexRelation(string strNomTable, CInfoRelation infoRelation)
 {
     return(false);//Toutes les relations sont indexées dans ACCESS
 }
Пример #17
0
 ////////////////////////////////////////////////////////////////////////
 protected void DefinitParent(CFiltreSynchronisation filtre, CInfoRelation relationToParent)
 {
     m_filtreParent     = filtre;
     m_relationToParent = relationToParent;
 }
Пример #18
0
 protected virtual string GetNewNomClefEtrangere(CInfoRelation rel)
 {
     return(rel.RelationKey);
 }
Пример #19
0
        //----------------------------------
        public CResultAErreur FillFromVersion(CVersionDonneesObjet vo, CContexteDonnee contexteEnVersion, Dictionary <CObjetDonneeAIdNumerique, CMacroObjet> dicObjetToMacro)
        {
            CStructureTable structure = CStructureTable.GetStructure(vo.TypeElement);

            List <CDefinitionProprieteDynamique> lstChampsDotNet = new List <CDefinitionProprieteDynamique>();

            lstChampsDotNet.AddRange(new CFournisseurProprietesDynamiqueDynamicField().GetDefinitionsChamps(vo.TypeElement, null));
            List <CDefinitionProprieteDynamique> lstChampsCustom = new List <CDefinitionProprieteDynamique>();

            lstChampsCustom.AddRange(new CFournisseurProprietesDynamiqueChampCustom().GetDefinitionsChamps(vo.TypeElement, null));
            CResultAErreur           result = CResultAErreur.True;
            CObjetDonneeAIdNumerique objet  = Activator.CreateInstance(vo.TypeElement, new object[] { contexteEnVersion }) as CObjetDonneeAIdNumerique;

            if (!objet.ReadIfExists(vo.IdElement))
            {
                objet = null;
            }
            else
            {
                DesignationObjet = objet.DescriptionElement;
            }
            switch (vo.TypeOperation.Code)
            {
            case CTypeOperationSurObjet.TypeOperation.Ajout:
                if (objet != null && objet.IsValide())
                {
                    foreach (CDefinitionProprieteDynamique def in lstChampsDotNet)
                    {
                        string strNom = def.NomProprieteSansCleTypeChamp;
                        if (strNom != "IsDeleted" && strNom != "Id" &&
                            strNom != "ContexteDeModification" && strNom != "IdVersionDatabase")
                        {
                            bool bAdd = !def.IsReadOnly;
                            if (def.IsReadOnly)
                            {
                                //Si readonly mais a l'attribut ForceSetOnMacro, on l'ajoute quand même
                                PropertyInfo info = vo.TypeElement.GetProperty(strNom);
                                if (info != null && info.GetCustomAttributes(typeof(TiagRelationAttribute), true).Length != 0)
                                {
                                    bAdd = true;
                                }
                            }
                            if (bAdd)
                            {
                                CResultAErreur resultVal = CInterpreteurProprieteDynamique.GetValue(objet, def);
                                if (resultVal)
                                {
                                    object            data = resultVal.Data;
                                    CMacroObjetValeur mv   = new CMacroObjetValeur(this);
                                    mv.Champ = def;
                                    if (FillMacroValeurWithValue(mv, data, dicObjetToMacro))
                                    {
                                        AddValeur(mv);
                                    }
                                    else
                                    {
                                        result.EmpileErreur(new CErreurValidation(I.T("#Can not use field @1 of type @2 in macro", def.Nom,
                                                                                      DynamicClassAttribute.GetNomConvivial(vo.TypeElement)), true));
                                    }
                                }
                            }
                        }
                    }
                    if (objet is IObjetDonneeAChamps)
                    {
                        foreach (CRelationElementAChamp_ChampCustom rel in ((IObjetDonneeAChamps)objet).RelationsChampsCustom)
                        {
                            object data = rel.Valeur;
                            if (data != null)
                            {
                                CDefinitionProprieteDynamique defCust = lstChampsCustom.FirstOrDefault(c => ((CDefinitionProprieteDynamiqueChampCustom)c).DbKeyChamp == rel.ChampCustom.DbKey);
                                if (defCust != null)
                                {
                                    CMacroObjetValeur mv = new CMacroObjetValeur(this);
                                    mv.Champ = defCust;
                                    mv.Champ = defCust;
                                    if (FillMacroValeurWithValue(mv, data, dicObjetToMacro))
                                    {
                                        this.AddValeur(mv);
                                    }
                                    else
                                    {
                                        result.EmpileErreur(new CErreurValidation(I.T("#Can not use field @1 of type @2 in macro", rel.ChampCustom.Nom,
                                                                                      DynamicClassAttribute.GetNomConvivial(vo.TypeElement)), true));
                                    }
                                }
                            }
                        }
                    }
                }

                break;

            case CTypeOperationSurObjet.TypeOperation.Suppression:
                break;

            case CTypeOperationSurObjet.TypeOperation.Modification:
                CStructureTable structureObjet = CStructureTable.GetStructure(vo.TypeElement);
                foreach (CVersionDonneesObjetOperation valeur in vo.ToutesLesOperations)
                {
                    CDefinitionProprieteDynamique def   = null;
                    IChampPourVersion             champ = valeur.Champ;
                    if (champ is CChampPourVersionInDb)
                    {
                        string          strNomChamp = ((CChampPourVersionInDb)champ).NomPropriete;
                        CInfoChampTable infoChamp   = structureObjet.Champs.FirstOrDefault(c => c.NomChamp == strNomChamp);
                        if (infoChamp != null && infoChamp.NomChamp != CSc2iDataConst.c_champIdVersion &&
                            infoChamp.NomChamp != CSc2iDataConst.c_champIsDeleted &&
                            infoChamp.NomChamp != CObjetDonnee.c_champContexteModification)
                        {
                            string strNomPropriete = infoChamp.Propriete;
                            def = lstChampsDotNet.FirstOrDefault(c => c.NomProprieteSansCleTypeChamp == strNomPropriete);
                        }
                        if (def == null)
                        {
                            CInfoRelation relation = structureObjet.RelationsParentes.FirstOrDefault(i => i.ChampsFille.Length == 1 && i.ChampsFille[0] == strNomChamp);
                            if (relation != null)
                            {
                                def = lstChampsDotNet.FirstOrDefault(c => c.NomProprieteSansCleTypeChamp == relation.Propriete);
                            }
                        }
                    }
                    else if (champ is CChampCustomPourVersion)
                    {
                        CChampCustom champCustom = ((CChampCustomPourVersion)champ).ChampCustom;
                        if (champCustom != null)
                        {
                            def = lstChampsCustom.FirstOrDefault(c => c is CDefinitionProprieteDynamiqueChampCustom &&
                                                                 ((CDefinitionProprieteDynamiqueChampCustom)c).DbKeyChamp == champCustom.DbKey);
                        }
                    }
                    if (def != null)
                    {
                        bool bAdd = !def.IsReadOnly;
                        if (def.IsReadOnly)
                        {
                            //Si readonly mais a l'attribut TiagRelation, on l'ajoute quand même
                            PropertyInfo info = vo.TypeElement.GetProperty(def.NomProprieteSansCleTypeChamp);
                            if (info != null && info.GetCustomAttributes(typeof(TiagRelationAttribute), true).Length > 0)
                            {
                                bAdd = true;
                            }
                        }
                        if (bAdd)
                        {
                            CMacroObjetValeur mv = new CMacroObjetValeur(this);
                            mv.Champ = def;
                            object val = valeur.GetValeur();
                            if (val != null && typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(def.TypeDonnee.TypeDotNetNatif) && valeur.TypeValeur == typeof(int))
                            {
                                CObjetDonneeAIdNumerique objetParent = Activator.CreateInstance(def.TypeDonnee.TypeDotNetNatif, new object[] { objet.ContexteDonnee }) as CObjetDonneeAIdNumerique;
                                if (objetParent.ReadIfExists((int)valeur.GetValeur()))
                                {
                                    val = objetParent;
                                }
                                else
                                {
                                    val = null;
                                }
                            }

                            if (!FillMacroValeurWithValue(mv, val, dicObjetToMacro))
                            {
                                result.EmpileErreur(new CErreurValidation(I.T("#Can not use field @1 of @2 in macro", valeur.NomChampConvivial,
                                                                              DynamicClassAttribute.GetNomConvivial(vo.TypeElement)), true));
                            }
                            else
                            {
                                AddValeur(mv);
                            }
                        }
                    }
                }
                break;
            }
            if (Valeurs.Count() == 0)
            {
                TypeOperation = new CTypeOperationSurObjet(CTypeOperationSurObjet.TypeOperation.Aucune);
            }
            return(result);
        }
Пример #20
0
        //Initialise la base des alarmes en cours avec les alarmes de la base et les acces concernant chaque élément
        private void LoadAlarmesEtLiensTransForElement(string strChampDansAcces, CDictionnaireConcerne dicConcernes)
        {
            //Récupère la relation entre CSpvLienAccesAlarme et CSpvLienAccesAlarmeRep
            if (m_relationFromLienAlarmeToLienAlarmeRep == null)
            {
                foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(CSpvLienAccesAlarme.c_nomTable))
                {
                    if (relation.TableFille == CSpvLienAccesAlarme_Rep.c_nomTable && relation.TableParente == CSpvLienAccesAlarme.c_nomTable)
                    {
                        m_relationFromLienAlarmeToLienAlarmeRep = relation;
                        break;
                    }
                }
            }
            List <int> lstIdsElements = new List <int>();

            lstIdsElements.AddRange(dicConcernes.Keys);
            int nSizePaquet = 100;

            for (int nPaquet = 0; nPaquet < lstIdsElements.Count; nPaquet += nSizePaquet)
            {
                int           nMax = Math.Min(nPaquet + nSizePaquet, lstIdsElements.Count);
                StringBuilder bl   = new StringBuilder();
                for (int nId = 0; nId < nMax; nId++)
                {
                    bl.Append(lstIdsElements[nId]);
                    bl.Append(';');
                }
                if (bl.Length > 0)
                {
                    bl.Remove(bl.Length - 1, 1);
                    //Charge tous les Liens d'alarme pour les éléments
                    CListeObjetsDonnees lstLiensAccesAlarme = new CListeObjetsDonnees(m_contexteDonnee, typeof(CSpvLienAccesAlarme));
                    lstLiensAccesAlarme.Filtre = new CFiltreDataAvance(CSpvLienAccesAlarme.c_nomTable,
                                                                       CSpvAccesAlarme.c_nomTable + "." + strChampDansAcces + " in (" +
                                                                       bl.ToString() + ")");
                    lstLiensAccesAlarme.AssureLectureFaite();

                    // Chargement des acces correspondant
                    CListeObjetsDonnees lstAcces = lstLiensAccesAlarme.GetDependances("AccesAlarmeOne");
                    lstAcces.InterditLectureInDB = true;

                    CListeObjetsDonnees lstEtatAlarme = lstLiensAccesAlarme.GetDependances(m_relationFromLienAlarmeToLienAlarmeRep);
                    lstEtatAlarme.Filtre = new CFiltreData(CSpvLienAccesAlarme_Rep.c_champALARM_ID + " is not null");
                    lstEtatAlarme.AssureLectureFaite();
                    lstEtatAlarme.InterditLectureInDB = true;

                    // Chargement des données alarmes
                    CListeObjetsDonnees listAlarmesDonnees = lstEtatAlarme.GetDependances("AlarmeDonnee");
                    listAlarmesDonnees.AssureLectureFaite();
                    listAlarmesDonnees.InterditLectureInDB = true;

                    lstLiensAccesAlarme.InterditLectureInDB = true;
                    lstEtatAlarme.InterditLectureInDB       = true;

                    foreach (CSpvAlarmeDonnee donneeAlarme in listAlarmesDonnees)
                    {
                        if (donneeAlarme != null)
                        {
                            CInfoAlarmeAffichee info = new CInfoAlarmeAffichee(donneeAlarme);
                            //m_dicAlarmes[info.IdSpvEvtAlarme] = info;
                            m_dicAlarmes[info.IdSpvAlarmeData] = info;
                            StartAlarme(info);
                        }
                    }

                    foreach (CSpvLienAccesAlarme lienAlarme in lstLiensAccesAlarme)
                    {
                        CSpvAcces acces = lienAlarme.AccesAlarmeOne;
                        if (acces != null)
                        {
                            int?nId = acces.Row[strChampDansAcces] as int?;
                            if (nId != null)
                            {
                                List <CInfoElementDeSchemaSupervise> lst = null;
                                if (dicConcernes.TryGetValue(nId.Value, out lst))
                                {
                                    foreach (CInfoElementDeSchemaSupervise info in lst)
                                    {
                                        info.SetConcerneParAlarmes();
                                        if (lienAlarme.MaskAdminDateMin != null && lienAlarme.MaskBriDateMin > DateTime.Now)
                                        {
                                            if (lienAlarme.MaskAdminDateMax == null || lienAlarme.MaskAdminDateMax < DateTime.Now)
                                            {
                                                info.SetMasquageAdministrateur(lienAlarme.Id, true);
                                            }
                                        }
                                        if (lienAlarme.MaskBriDateMin != null && lienAlarme.MaskBriDateMin > DateTime.Now)
                                        {
                                            if (lienAlarme.MaskBriDateMax == null || lienAlarme.MaskBriDateMax < DateTime.Now)
                                            {
                                                info.SetMasquageBrigadier(lienAlarme.Id, true);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (m_infoSchemaRacine != null)
                    {
                        List <CInfoElementDeSchemaSupervise> lstTmp = new List <CInfoElementDeSchemaSupervise>();
                        m_infoSchemaRacine.RecalculeToutLeMasquage(lstTmp);
                    }
                }
            }
        }
Пример #21
0
 protected override string GetNewNomClefEtrangere(CInfoRelation rel)
 {
     return(GetNewId("FK_"));
 }