Ejemplo n.º 1
0
        public CResultAErreur GenAccesAccescForTrap()
        {
            CResultAErreur result = CResultAErreur.True;

            if (this.SpvEquip == null || this.CategorieAccesAlarme != ECategorieAccesAlarme.TrapSnmp)
            {
                return(result);
            }

            try
            {
                // Recherche de l'alarme gérée correspondante
                CSpvAlarmGeree spvAlarmeGeree = AlarmeGeree();
                if (spvAlarmeGeree != null)
                {
                    /*
                     * CSpvLienAccesAlarme spvAccesAccesc = new CSpvLienAccesAlarme(ContexteDonnee);
                     * CFiltreData filtre = new CFiltreData (
                     *  CSpvLienAccesAlarme.c_champACCES_BINDINGID + "=@1 AND " +
                     *  CSpvLienAccesAlarme.c_champACCES_BINDINGCLASSID + "=8 AND " +
                     *  CSpvLienAccesAlarme.c_champACCES1_ID + "=@2",
                     *  this.SpvEquip.Id,
                     *  this.Id);
                     *
                     * if (!spvAccesAccesc.ReadIfExists(filtre))
                     * {*/
                    CSpvLienAccesAlarme spvLienAccesAlarme = new CSpvLienAccesAlarme(ContexteDonnee);
                    spvLienAccesAlarme.CreateNewInCurrentContexte();
                    spvLienAccesAlarme.InitFromAccesAndAlarmeGeree(this, spvAlarmeGeree);
                    //}
                }
                else
                {
                    result.EmpileErreur(I.T("Managed alarm not found|50000"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Ejemplo n.º 2
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);
        }