Пример #1
0
        ///////////////////////////////////////////////////////////////

        /*
         *      public override void  CalculeUnicite()
         * {
         *  if (SpvTypeq != null)
         *      Row[c_champACCES_UNICITE] = CSpvTypeq.c_nomTableInDb + "/" + SpvTypeq.Id.ToString() + "/" + NomAcces;
         *  else if (SpvSite != null)
         *      Row[c_champACCES_UNICITE] = CSpvSite.c_nomTableInDb + "/" + SpvSite.Id.ToString() + "/" + NomAcces;
         *  else if (SpvLiai != null)
         *      Row[c_champACCES_UNICITE] = CSpvLiai.c_nomTableInDb + "/" + SpvLiai.Id.ToString() + "/" + NomAcces;
         *  else
         *                      throw new Exception(I.T("Unknown case in computing unicity|50008")); ;
         * }*/

        //////////////////////////////////////////////////////////////
        public virtual CResultAErreur GenAccesAlarmeEquips()
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CSpvTypeq spvTypeq = SpvTypeq;
                if (spvTypeq != null)
                {
                    CSpvAccesAlarme spvAccesAlarme;
                    foreach (CSpvEquip spvEquip in spvTypeq.Equipements)
                    {
                        spvAccesAlarme = new CSpvAccesAlarme(ContexteDonnee);
                        spvAccesAlarme.CreateNewInCurrentContexte();
                        spvAccesAlarme.InitFromTypeAccesAlarme(this);
                        spvAccesAlarme.SpvEquip = spvEquip;
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Пример #2
0
        public CSpvTypeAccesAlarme TypeAccesAlarme()
        {
            if (SpvEquip != null)
            {
                CSpvTypeq           spvTypeq = this.SpvEquip.TypeEquipement;
                CListeObjetsDonnees liste    = new CListeObjetsDonnees(ContexteDonnee, typeof(CSpvTypeAccesAlarme));
                liste.Filtre = new CFiltreData(CSpvTypeAccesAlarme.c_champTYPEQ_ID + "=@1 AND " +
                                               CSpvTypeAccesAlarme.c_champACCES_NOM + "=@2",
                                               spvTypeq.Id, this.NomAcces);
                if (liste.Count != 1)
                {
                    return(null);
                }

                return((CSpvTypeAccesAlarme)liste[0]);
            }
            else
            {
                CSpvTypeAccesAlarme typeAccesAlarm = new CSpvTypeAccesAlarme(ContexteDonnee);
                if (typeAccesAlarm.ReadIfExists(Id))
                {
                    return(typeAccesAlarm);
                }
                else
                {
                    return(null);
                }
            }
        }
Пример #3
0
        public virtual CResultAErreur MajAccesAlarmeEquips()
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CSpvTypeq spvTypeq = SpvTypeq;
                string    strNom;
                if (spvTypeq != null)
                {
                    CSpvAccesAlarme spvAccesAlarme;
                    strNom = (string)Row[c_champACCES_NOM, DataRowVersion.Original];
                    foreach (CSpvEquip spvEquip in spvTypeq.Equipements)
                    {
                        spvAccesAlarme = spvEquip.GetAccesAlarme(strNom);
                        if (spvAccesAlarme != null)
                        {
                            spvAccesAlarme.InitFromTypeAccesAlarme(this);
                        }
                    }

                    // Les données "alarme fréquente" sont-elles modifiées ?
                    bool bChangeFreq = false;
                    if (this.AlarmeGeree != null && this.AlarmeGeree.Row.RowState == DataRowState.Modified)
                    {
                        Int32 nFreqnOld = (Int32)this.AlarmeGeree.Row[CSpvAlarmGeree.c_champALARMGEREE_FREQN, DataRowVersion.Original];
                        Int32 nFreqpOld = (Int32)this.AlarmeGeree.Row[CSpvAlarmGeree.c_champALARMGEREE_FREQD, DataRowVersion.Original];
                        if (nFreqnOld != this.AlarmeGeree.AlarmgereeFreqNb || nFreqpOld != this.AlarmeGeree.AlarmgereeFreqPeriod)
                        {
                            bChangeFreq = true;
                        }
                    }

                    if (this.AlarmeGeree != null && (this.AlarmeGeree.PropagerAuxEquipements || bChangeFreq))
                    {
                        foreach (CSpvLienAccesAlarme accesAccesc in this.AlarmeGeree.SpvAcces_Accescs)
                        {
                            if (this.AlarmeGeree.PropagerAuxEquipements)
                            {
                                accesAccesc.MajFromAlarmeGeree(this.AlarmeGeree);
                            }

                            // La partie "Alarme fréquente" n'est modifiable
                            // qu'au niveau de l'alarme gérée
                            if (bChangeFreq)
                            {
                                accesAccesc.MajFrequenceFromAlarmeGeree(this.AlarmeGeree);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Пример #4
0
        public static CResultAErreur SetSpvTypeqFromTypeEquipement(object objet, object valeur)
        {
            CSpvTypeq       spvTypeq       = valeur as CSpvTypeq;
            CTypeEquipement typeEquipement = objet as CTypeEquipement;

            if (spvTypeq != null && typeEquipement != null)
            {
                spvTypeq.TypeEquipementSmt = typeEquipement;
            }
            return(CResultAErreur.True);
        }
Пример #5
0
        public static CSpvTypeq GetSpvTypeqFromTypeEquipementAvecCreation(CTypeEquipement typeEquipement)
        {
            CSpvTypeq spvTypeq = GetSpvTypeqFromTypeEquipement(typeEquipement) as CSpvTypeq;

            if (spvTypeq == null)
            {
                spvTypeq = new CSpvTypeq(typeEquipement.ContexteDonnee);
                spvTypeq.CreateNewInCurrentContexte();
                //spvTypeq.SiteSmt = site;
                spvTypeq.TypeEquipementSmt = typeEquipement;
                spvTypeq.CopyFromTypeEquipement(typeEquipement);
            }
            return(spvTypeq);
        }
Пример #6
0
        public static object GetSpvTypeqFromTypeEquipement(object objet)
        {
            CTypeEquipement typeEquipement = objet as CTypeEquipement;

            if (typeEquipement != null)
            {
                CSpvTypeq spvTypeq = new CSpvTypeq(typeEquipement.ContexteDonnee);
                if (spvTypeq.ReadIfExists(new CFiltreData(CSpvTypeq.c_champSmtTypeEquipement_Id + "=@1", typeEquipement.Id)))
                {
                    return(spvTypeq);
                }
            }
            return(null);
        }
Пример #7
0
        /// <summary>
        /// Permet, lors des effacements, de récupérer l'ancien enregistrement
        /// afin de pouvoir déclencher les traitements métier en rapport
        /// avec celui-ci
        /// </summary>
        /// <param name="typeqEquipementId">ID du type d'équipement SMT</param>
        public Int32 GetOriginalTypeqId(Int32 typeqEquipementId, CContexteDonnee ctx)
        {
            Int32 nTypeqId = -1;        // ID du type SPV

            CListeObjetsDonnees liste = new CListeObjetsDonnees(ctx, typeof(CSpvTypeq));

            liste.InterditLectureInDB = true;
            liste.RowStateFilter      = DataViewRowState.Deleted;
            liste.Filtre = new CFiltreData(CSpvTypeq.c_champSmtTypeEquipement_Id + "=@1", typeqEquipementId);
            if (liste.Count == 1)
            {
                CSpvTypeq spvTypeq = (CSpvTypeq)liste[0];
                nTypeqId = (Int32)spvTypeq.Row[CSpvTypeq.c_champSmtTypeEquipement_Id, DataRowVersion.Original];
            }

            return(nTypeqId);
        }
Пример #8
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur     result  = CResultAErreur.True;
            CFamilleEquipement famille = new CFamilleEquipement(contexte.ContexteDonnee);

            if (!famille.ReadIfExists(m_nIdFamilleEquipement))
            {
                result.EmpileErreur(I.T("Equipment type family @1 doesn't exists|20027", m_nIdFamilleEquipement.ToString()));
                return(result);
            }

            CListeObjetsDonnees lstTypes = new CListeObjetsDonnees(contexte.ContexteDonnee, typeof(CSpvTypeq));

            lstTypes.Filtre = new CFiltreData(CSpvTypeq.c_champSmtTypeEquipement_Id + " is null");
            foreach (CSpvTypeq typeEq in lstTypes.ToArrayList())
            {
                CTypeEquipement type = new CTypeEquipement(contexte.ContexteDonnee);
                type.CreateNewInCurrentContexte();
                type.Libelle             = typeEq.Libelle;
                type.Famille             = famille;
                typeEq.TypeEquipementSmt = type;
            }

            CListeObjetsDonnees lstObjets = new CListeObjetsDonnees(contexte.ContexteDonnee, typeof(CSpvEquip));

            lstObjets.Filtre = new CFiltreDataAvance(CSpvEquip.c_nomTable,
                                                     "HasNo(" + CSpvEquip.c_champSmtEquipementLogique_Id + ") and " +
                                                     "Has(TypeEquipement." + CSpvTypeq.c_champSmtTypeEquipement_Id + ") and " +
                                                     "has(" + CSpvSite.c_nomTable + "." + CSpvSite.c_champSmtSite_Id + ")");
            int nNbEquips = lstObjets.Count;
            int nEquip    = 0;

            if (contexte.IndicateurProgression != null)
            {
                contexte.IndicateurProgression.PushSegment(9, nNbEquips);
                contexte.SetInfoProgression(I.T("Transfering discovered equipments|20221"));
            }
            ArrayList lstEquips = lstObjets.ToArrayList();

            foreach (CSpvEquip equipSpv in lstEquips)
            {
                nEquip++;
                if (nEquip % 20 == 0 && contexte.IndicateurProgression != null)
                {
                    contexte.IndicateurProgression.SetValue(nEquip / 2);
                    contexte.SetInfoProgression((int)(nEquip / 2) + "/" + nNbEquips);
                }
                CSpvSite  siteSpv   = equipSpv.SpvSite;
                CSpvTypeq typeEqSpv = equipSpv.TypeEquipement;
                if (siteSpv != null && typeEqSpv != null)
                {
                    CTypeEquipement typeTimos = typeEqSpv.TypeEquipementSmt;
                    CSite           siteTimos = siteSpv.ObjetTimosAssocie;
                    if (typeTimos != null && siteTimos != null)
                    {
                        CEquipementLogique equipementTimos = new CEquipementLogique(contexte.ContexteDonnee);
                        equipementTimos.TypeEquipement = typeTimos;
                        equipementTimos.Site           = siteTimos;
                        equipementTimos.Libelle        = equipSpv.CommentairePourSituer;
                        equipSpv.ObjetTimosAssocie     = equipementTimos;
                    }
                }
            }
            foreach (CSpvEquip equipSpv in lstEquips)
            {
                nEquip++;
                if (nEquip % 20 == 0 && contexte.IndicateurProgression != null)
                {
                    contexte.IndicateurProgression.SetValue(nEquip / 2);
                    contexte.SetInfoProgression((int)(nEquip / 2) + "/" + nNbEquips);
                }
                CEquipementLogique equip = equipSpv.ObjetTimosAssocie;
                if (equipSpv.EquipementEnglobant != null)
                {
                    CEquipementLogique englobant = equipSpv.EquipementEnglobant.ObjetTimosAssocie;
                    if (englobant == null)
                    {
                        result = equipSpv.Delete(true);
                        if (!result)
                        {
                            return(result);
                        }
                    }
                    else
                    {
                        equip.EquipementLogiqueContenant = englobant;
                    }
                }
            }
            if (contexte.IndicateurProgression != null)
            {
                contexte.IndicateurProgression.PopSegment();
            }
            return(result);
        }
Пример #9
0
        public bool FormatMessAccesAlarme(CSpvLienAccesAlarme spvLienAccesAlarme, DataRowState rowState)
        {
            Int32  nIdTypeCARTE_GTR = 0, nIdTypeIP2PORT = 0, nIdTypeGSITE = 0;
            string strCategorieObjet = "";
            Int32  nIdObjet          = 0;
            bool   bEquipToSurv      = false;
            string strCodeSaisie;
            string strAddrIP;

            if (rowState == DataRowState.Added)
            {
                strCodeSaisie = "C";
            }
            else if (rowState == DataRowState.Modified)
            {
                strCodeSaisie = "M";
            }
            else if (rowState == DataRowState.Deleted)
            {
                strCodeSaisie = "S";
            }
            else
            {
                throw new Exception(I.T("DataRowState not provided for this function|50010"));
            }


            CSpvTypeq spvTypeq = new CSpvTypeq(ContexteDonnee);

            if (spvTypeq.ReadIfExists(new CFiltreData(CSpvTypeq.c_champTYPEQ_NOM + "=@1", CSpvTypeq.c_CARTE_GTR)))
            {
                nIdTypeCARTE_GTR = spvTypeq.Id;
            }

            if (spvTypeq.ReadIfExists(new CFiltreData(CSpvTypeq.c_champTYPEQ_NOM + "=@1", CSpvTypeq.c_GSITE)))
            {
                nIdTypeGSITE = spvTypeq.Id;
            }

            if (spvTypeq.ReadIfExists(new CFiltreData(CSpvTypeq.c_champTYPEQ_NOM + "=@1", CSpvTypeq.c_IP2PORT)))
            {
                nIdTypeIP2PORT = spvTypeq.Id;
            }

            CSpvAccesAlarme accesOne, accesTwo;

            accesOne = spvLienAccesAlarme.AccesAlarmeOne;
            accesTwo = spvLienAccesAlarme.AccesAlarmeTwo;
            CSpvEquip spvEqt  = spvLienAccesAlarme.SpvEquip;
            CSpvSite  spvSite = spvLienAccesAlarme.SpvSite;
            CSpvLiai  spvLiai = spvLienAccesAlarme.SpvLiai;

            if (rowState == DataRowState.Deleted)
            {
                if (accesOne.Row.RowState == DataRowState.Deleted)
                {
                    accesOne.VersionToReturn = DataRowVersion.Original;
                }

                if (accesTwo.Row.RowState == DataRowState.Deleted)
                {
                    accesTwo.VersionToReturn = DataRowVersion.Original;
                }

                if (spvEqt != null && spvEqt.Row.RowState == DataRowState.Deleted)
                {
                    spvEqt.VersionToReturn = DataRowVersion.Original;
                }

                if (spvSite != null && spvSite.Row.RowState == DataRowState.Deleted)
                {
                    spvSite.VersionToReturn = DataRowVersion.Original;
                }

                if (spvLiai != null && spvLiai.Row.RowState == DataRowState.Deleted)
                {
                    spvLiai.VersionToReturn = DataRowVersion.Original;
                }
            }

            if (accesOne == spvLienAccesAlarme.SpvAccesAlarmeSysteme0())
            {
                // Dans ce cas, seul le cas GSITE nous intéresse
                CSpvEquip spvEquip = new CSpvEquip(ContexteDonnee);
                if (spvEquip.ReadIfExists(new CFiltreData(CSpvEquip.c_champEQUIP_ID + "=@1", spvLienAccesAlarme.BindingId)))
                {
                    if (spvEquip.TypeEquipement.Id != nIdTypeGSITE)
                    {
                        return(false);
                    }
                    else
                    {
                        bEquipToSurv = spvEquip.ASuperviser;
                    }
                }
            }
            else
            {
                if (spvSite != null)
                {
                    strCategorieObjet = c_SITE;
                    nIdObjet          = spvSite.Id;
                    bEquipToSurv      = true;
                }
                else if (spvLiai != null)
                {
                    strCategorieObjet = c_LIAISON;
                    nIdObjet          = spvLiai.Id;
                    bEquipToSurv      = true;
                }
                else if (spvEqt != null)
                {
                    strCategorieObjet = c_EQUIP;
                    nIdObjet          = spvEqt.Id;
                    bEquipToSurv      = spvEqt.ASuperviser;
                    strAddrIP         = spvEqt.AdresseIP;
                }
                else
                {
                    throw new Exception(I.T("Father object not filled|50009"));
                }
            }

            if (!bEquipToSurv)
            {
                return(false);
            }

            string strMess = "";

            if (accesOne == spvLienAccesAlarme.SpvAccesAlarmeSysteme0())
            {
                // Concerne un accès alarme GSITE

                if (rowState == DataRowState.Deleted)
                {
                    strMess = string.Format("#9#7#5#S#{0}#{1}#",
                                            spvLienAccesAlarme.BindingId,
                                            spvEqt.CommentairePourSituer);
                }
                else
                {
                    strMess = string.Format("#9#11#5#{0}#{1}#{2}#{3}#{4}#{5}#{6}#",
                                            strCodeSaisie, spvLienAccesAlarme.BindingId,
                                            spvEqt.CommentairePourSituer,
                                            spvLienAccesAlarme.DureeMin, spvLienAccesAlarme.FreqNb,
                                            spvLienAccesAlarme.FreqPeriod, System.Convert.ToInt32(spvLienAccesAlarme.Surveiller));
                }
            }
            else if (accesTwo == spvLienAccesAlarme.SpvAccesAlarmeSysteme0())
            {
                // Concerne un accès alarme TRAP
                if (rowState == DataRowState.Deleted)
                {
                    strMess = string.Format("#9#8#5#S#{0}#{1}#{2}#",
                                            spvEqt.AdresseIP,
                                            spvEqt.Id, accesOne.TrapIdent);
                }
                else
                {
                    strMess = string.Format("#9#12#4#{0}#{1}#{2}#{3}#{4}#{5}#{6}#{7}#",
                                            strCodeSaisie, spvEqt.AdresseIP,
                                            spvEqt.Id,
                                            accesOne.TrapIdent,
                                            spvLienAccesAlarme.DureeMin, spvLienAccesAlarme.FreqNb,
                                            spvLienAccesAlarme.FreqPeriod, System.Convert.ToInt32(spvLienAccesAlarme.Surveiller));
                }
            }
            else if (accesTwo != null &&
                     accesTwo != spvLienAccesAlarme.SpvAccesAlarmeSysteme0())
            {
                // Concerne un accès alarme de type boucle

                // La donnée "A surveiller" a-t-elle changée
                bool bSurveillanceChangee =
                    (rowState == DataRowState.Added && spvLienAccesAlarme.Surveiller) ||
                    (rowState == DataRowState.Modified &&
                     (bool)spvLienAccesAlarme.Row[CSpvLienAccesAlarme.c_champALARMGEREE_TOSURV,
                                                  DataRowVersion.Original] != spvLienAccesAlarme.Surveiller);

                if (accesTwo.SpvEquip.TypeEquipement.Id == nIdTypeCARTE_GTR)
                {
                    // Le nom de l'équipement de collecte est de la forme
                    // IS xx/GTR yy
                    string strNomEquipCollecte =
                        accesTwo.SpvEquip.CommentairePourSituer;

                    if (rowState == DataRowState.Deleted)
                    {
                        strMess = string.Format("#9#9#2#S#{0}#{1}#{2}#{3}#",
                                                strCategorieObjet, nIdObjet,
                                                strNomEquipCollecte.Substring(3, 2),
                                                ((Convert.ToInt32(strNomEquipCollecte.Substring(10, 2)) - 1) * 48) +
                                                Convert.ToInt32(accesTwo.NomAcces));
                    }
                    else if (bSurveillanceChangee)
                    {
                        strMess = string.Format("#9#10#2#{0}#{1}#{2}#{3}#{4}#{5}#",
                                                strCodeSaisie, strCategorieObjet, nIdObjet,
                                                strNomEquipCollecte.Substring(3, 2),
                                                ((Convert.ToInt32(strNomEquipCollecte.Substring(10, 2)) - 1) * 48) +
                                                Convert.ToInt32(accesTwo.NomAcces),
                                                System.Convert.ToInt32(spvLienAccesAlarme.Surveiller));
                    }
                }
                else
                {
                    // IP2PORT ou IP2CHOICE ou autre EDC boucle de type IP (ex: NEC)
                    if (rowState == DataRowState.Deleted)
                    {
                        strMess = string.Format("#9#10#3#S#{0}#{1}#{2}#{3}#{4}#",
                                                strCategorieObjet, nIdObjet,
                                                accesTwo.SpvEquip.AdresseIP,
                                                accesTwo.SpvEquip.Id,
                                                accesTwo.NomAcces);
                    }
                    else
                    {
                        strMess = string.Format("#9#14#3#{0}#{1}#{2}#{3}#{4}#{5}#{6}#{7}#{8}#{9}#",
                                                strCodeSaisie, strCategorieObjet, nIdObjet,
                                                accesTwo.SpvEquip.AdresseIP,
                                                accesTwo.SpvEquip.Id,
                                                accesTwo.NomAcces,
                                                spvLienAccesAlarme.DureeMin, spvLienAccesAlarme.FreqNb,
                                                spvLienAccesAlarme.FreqPeriod, System.Convert.ToInt32(spvLienAccesAlarme.Surveiller));
                    }
                }
            }

            Message = strMess;
            return(true);
        }