Exemple #1
0
 /// <summary>
 /// Mutualise l'affectation des formules
 /// </summary>
 /// <param name="strChampCache"></param>
 /// <param name="data"></param>
 /// <param name="formule"></param>
 private void SetFormule(string strChampCache, ref CDonneeBinaireInRow data, C2iExpression formule)
 {
     CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, strChampCache, DBNull.Value);
     if (formule == null)
     {
         data.Donnees = null;
     }
     else
     {
         MemoryStream stream = new MemoryStream();
         try
         {
             BinaryWriter           writer = new BinaryWriter(stream);
             CSerializerSaveBinaire ser    = new CSerializerSaveBinaire(writer);
             CResultAErreur         result = ser.TraiteObject <C2iExpression>(ref formule);
             data.Donnees = stream.GetBuffer();
             writer.Close();
         }
         catch
         {
             data.Donnees = null;
         }
         stream.Close();
     }
 }
Exemple #2
0
        /// <summary>
        /// mutualise la récupération des formules
        /// </summary>
        /// <param name="strChampCache"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private C2iExpression GetFormule(string strChampCache, CDonneeBinaireInRow data)
        {
            C2iExpression formule = null;

            if (Row[strChampCache] != DBNull.Value)
            {
                return((C2iExpression)Row[strChampCache]);
            }
            if (data != null && data.Donnees != null)
            {
                Stream stream = new MemoryStream(data.Donnees);
                try
                {
                    BinaryReader           reader = new BinaryReader(stream);
                    CSerializerReadBinaire ser    = new CSerializerReadBinaire(reader);
                    CResultAErreur         result = ser.TraiteObject <C2iExpression>(ref formule);
                    if (!result)
                    {
                        formule = null;
                    }
                    else
                    {
                        CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, strChampCache, formule);
                    }
                    reader.Close();
                    stream.Close();
                }
                catch
                {
                }
            }
            return(formule);
        }
Exemple #3
0
        /// /////////////////////////////////////////////////////////
        public void CommitParametresHotelPolling()
        {
            List <CSnmpHotelPollingSetup> lstParametres = ParametresHotelPollingList;

            CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champCacheParametresHotelPolling, DBNull.Value);
            CDonneeBinaireInRow data = DataParametresHotelPolling;

            if (lstParametres == null)
            {
                data.Donnees = null;
            }
            else
            {
                MemoryStream stream = new MemoryStream();
                try
                {
                    BinaryWriter           writer = new BinaryWriter(stream);
                    CSerializerSaveBinaire ser    = new CSerializerSaveBinaire(writer);
                    CResultAErreur         result = ser.TraiteListe <CSnmpHotelPollingSetup>(lstParametres);
                    data.Donnees = stream.GetBuffer();
                    writer.Close();
                }
                catch
                {
                    data.Donnees = null;
                }
                stream.Close();
            }
            DataParametresHotelPolling = data;
        }
Exemple #4
0
        /// /////////////////////////////////////////////////////////
        public void CommitFinders()
        {
            List <CAgentFinderFromKey> lstFinders = AgentFinderList;

            CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champCacheAgentFinders, DBNull.Value);
            CDonneeBinaireInRow data = DataAgentFinders;

            if (lstFinders == null)
            {
                data.Donnees = null;
            }
            else
            {
                MemoryStream stream = new MemoryStream();
                try
                {
                    BinaryWriter           writer = new BinaryWriter(stream);
                    CSerializerSaveBinaire ser    = new CSerializerSaveBinaire(writer);
                    CResultAErreur         result = ser.TraiteListe <CAgentFinderFromKey>(lstFinders);
                    data.Donnees = stream.GetBuffer();
                    writer.Close();
                }
                catch
                {
                    data.Donnees = null;
                }
                stream.Close();
            }
            DataAgentFinders = data;
        }
 ////////////////////////////////////////////////////////////////////////////////////
 /// <summary>
 /// Si la CDonneeBinaireInRow n'est pas liée à la row, renvoie un
 /// nouveau CDonneeBinaireInRow qui correspond à la bonne row
 /// </summary>
 /// <param name="row"></param>
 /// <returns></returns>
 public CDonneeBinaireInRow GetSafeForRow(DataRow row)
 {
     if (m_row != row)
     {
         CDonneeBinaireInRow newData = GetCloneForRow(row);
         CContexteDonnee.ChangeRowSansDetectionModification(row, m_strChamp, newData);
         return(newData);
     }
     return(this);
 }
 //--------------------------------------------------------------------
 public static void ClearEvenements(CObjetDonnee objet)
 {
     if (objet.Row.Table.Columns.Contains(c_champEvenements))
     {
         object value = objet.Row[c_champEvenements];
         if (value is string)
         {
             CContexteDonnee.ChangeRowSansDetectionModification(objet.Row, c_champEvenements, DBNull.Value);
         }
     }
 }
Exemple #7
0
        public static CDonneeBinaireInRow GetBlob(DataRow row, string strChampBlob, CContexteDonnee ctx)
        {
            if (row[strChampBlob] == DBNull.Value)
            {
                CDonneeBinaireInRow donnee = new CDonneeBinaireInRow(ctx.IdSession, row, strChampBlob);
                CContexteDonnee.ChangeRowSansDetectionModification(row, strChampBlob, donnee);
            }
            object obj = row[strChampBlob];

            return((CDonneeBinaireInRow)obj);
        }
Exemple #8
0
        //-------------------------------------------------------------------------
        public static void CContexteDonnee_OnInvalideCacheRelation(DataRow row, DataRelation relation)
        {
            DataTable tableParente = relation.ParentTable;

            if (tableParente != null && tableParente.Columns.Contains(c_champIdsChampsLus))
            {
                Type tp = CContexteDonnee.GetTypeForTable(relation.ChildTable.TableName);
                if (tp != null && typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(tp))
                {
                    //DataRow[] rows = tableParente.Select(c_champIdsChampsLus + " is not null");
                    //if (rows != null)
                    //    foreach (DataRow row in rows)
                    CContexteDonnee.ChangeRowSansDetectionModification(row, c_champIdsChampsLus, DBNull.Value);
                }
            }
        }
Exemple #9
0
        //-------------------------------------------------------------------
        protected static void SetIdsChampsLus(IObjetDonneeAChamps obj, Hashtable lst)
        {
            DataTable table = obj.ContexteDonnee.Tables[obj.GetNomTable()];

            if (table.Columns[c_champIdsChampsLus] == null)
            {
                DataColumn col = new DataColumn(c_champIdsChampsLus);
                table.RowChanged += new DataRowChangeEventHandler(OnChangeRowAvecChamps);
                col.DataType      = typeof(Hashtable);
                table.Columns.Add(col);
            }
            object val = lst;

            if (val == null)
            {
                val = DBNull.Value;
            }
            CContexteDonnee.ChangeRowSansDetectionModification(obj.Row, c_champIdsChampsLus, val);
        }
        public object GetValeur(CObjetDonneeAIdNumerique obj, IChampPourVersion champ)
        {
            if (obj.Row.Table.Columns[champ.FieldKey].DataType == typeof(CDonneeBinaireInRow))
            {
                if (obj.Row[champ.FieldKey] == DBNull.Value)
                {
                    CDonneeBinaireInRow donnee = new CDonneeBinaireInRow(obj.ContexteDonnee.IdSession, obj.Row.Row, champ.FieldKey);
                    CContexteDonnee.ChangeRowSansDetectionModification(obj.Row.Row, champ.FieldKey, donnee);
                }

                /*DataRow row = obj.Row;
                 * DataTable tb = row.Table;
                 * IObjetServeur loader = ((CContexteDonnee)tb.DataSet).GetTableLoader(tb.TableName);
                 * CFiltreData filtre = CFiltreData.CreateFiltreAndSurRow(tb.PrimaryKey, row);
                 * ArrayList lstKeys = new ArrayList();
                 * foreach (DataColumn col in tb.PrimaryKey)
                 *      lstKeys.Add(row[col]);
                 * CResultAErreur result = loader.ReadBlob(champ.FieldKey, lstKeys.ToArray());
                 * if ( result )*/
            }
            return(obj.Row[champ.FieldKey] == DBNull.Value ? null : obj.Row[champ.FieldKey]);
        }
        /////////////////////////////////////////////
        /// <summary>
        /// Retourne tous les éléments liés par une relationTypeId
        /// </summary>
        /// <param name="strNomTableFille"></param>
        /// <param name="strNomChampTypeSurTableFille"></param>
        /// <param name="strNomChampIdSurTableFille"></param>
        /// <returns></returns>
        public CListeObjetsDonnees GetDependancesRelationTypeId(
            string strNomTableFille,
            string strNomChampTypeSurTableFille,
            string strNomChampIdSurTableFille,
            bool bProgressive,
            bool bInterditLectureInDb)
        {
            string     strColDep = RelationTypeIdAttribute.GetNomColDepLue(strNomTableFille);
            DataColumn col       = Table.Columns[strColDep];

            if (col == null)
            {
                col = new DataColumn(strColDep, typeof(bool));
                col.DefaultValue = false;
                col.AllowDBNull  = false;
                Table.Columns.Add(col);
            }
            if ((bool)Row[strColDep] && !bProgressive)
            {
                bInterditLectureInDb = true;
            }
            Type typeFille            = CContexteDonnee.GetTypeForTable(strNomTableFille);
            CListeObjetsDonnees liste = new CListeObjetsDonnees(ContexteDonnee, typeFille, false);

            liste.RemplissageProgressif = bProgressive;
            liste.InterditLectureInDB   = bInterditLectureInDb;
            liste.PreserveChanges       = true;
            liste.Filtre = new CFiltreData(
                strNomChampTypeSurTableFille + "=@1 and " +
                strNomChampIdSurTableFille + "=@2",
                GetType().ToString(),
                Id);
            if (!bProgressive)
            {
                CContexteDonnee.ChangeRowSansDetectionModification(Row, strColDep, true);
            }
            return(liste);
        }
Exemple #12
0
        public void CommitListPlages()
        {
            List <CPlageIP> listePlages = PlagesIP;

            CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champCacheListePlages, DBNull.Value);
            CDonneeBinaireInRow data = DataListePlagesIp;

            if (listePlages == null)
            {
                data.Donnees      = null;
                DataListePlagesIp = data;
            }
            else
            {
                MemoryStream stream = new MemoryStream();
                try
                {
                    BinaryWriter           writer     = new BinaryWriter(stream);
                    CSerializerSaveBinaire serializer = new CSerializerSaveBinaire(writer);
                    CResultAErreur         result     = serializer.TraiteListe <CPlageIP>(listePlages);
                    writer.Close();
                    if (result)
                    {
                        data.Donnees = stream.GetBuffer();
                    }
                }
                catch
                {
                    data.Donnees = null;
                }
                finally
                {
                    stream.Close();
                }
                DataListePlagesIp = data;
            }
        }
        //**********************************************************************************
        public void ReadArbre(CListeObjetsDonnees listeSource, CListeObjetsDonnees.CArbreProps arbre, List <string> lstPaquetsALire)
        {
            if (listeSource.Count == 0)
            {
                return;
            }
            CObjetDonneeAIdNumerique objExemple = listeSource[0] as CObjetDonneeAIdNumerique;

            if (objExemple == null)
            {
                return;
            }
            string strCle         = "";
            string strPropSansCle = "";

            if (!CDefinitionProprieteDynamique.DecomposeNomProprieteUnique(arbre.ProprietePrincipale, ref strCle, ref strPropSansCle))
            {
                return;
            }
            //trouve la relation correspondante à l'identifiant de la propriété
            RelationTypeIdAttribute relation = null;

            foreach (RelationTypeIdAttribute relTest in CContexteDonnee.RelationsTypeIds)
            {
                if (relTest.IdRelation == strPropSansCle)
                {
                    relation = relTest;
                    break;
                }
            }
            if (relation == null)
            {
                return;
            }

            string     strNomColDep = relation.GetNomColDepLue();
            DataColumn col          = objExemple.Table.Columns[strNomColDep];

            if (col == null)
            {
                col = new DataColumn(strNomColDep, typeof(bool));
                col.DefaultValue = false;
                col.AllowDBNull  = false;
                objExemple.Table.Columns.Add(col);
            }

            if (lstPaquetsALire == null)
            {
                lstPaquetsALire = listeSource.GetPaquetsPourLectureFils(objExemple.GetChampId(), col);
            }

            foreach (string strPaquet in lstPaquetsALire)
            {
                if (strPaquet != null && strPaquet.Trim().Length > 0)
                {
                    CListeObjetsDonnees lst = new CListeObjetsDonnees(listeSource.ContexteDonnee,
                                                                      CContexteDonnee.GetTypeForTable(relation.TableFille));
                    lst.Filtre = new CFiltreData(
                        relation.ChampType + "=@1 and " +
                        relation.ChampId + " in " + strPaquet,
                        listeSource.TypeObjets.ToString());
                    lst.AssureLectureFaite();
                    lst.ReadDependances(arbre);
                }
            }

            foreach (CObjetDonneeAIdNumerique obj in listeSource)
            {
                CContexteDonnee.ChangeRowSansDetectionModification(obj.Row, strNomColDep, true);
            }
        }
Exemple #14
0
 /// /////////////////////////////////////////////////////////
 public void RollbackParametreHotelPolling()
 {
     CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champCacheParametresHotelPolling, DBNull.Value);
 }
 /// //////////////////////////////////////////////////
 public override void AfterRead()
 {
     base.AfterRead();
     CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champCacheFiltre, DBNull.Value);
 }
Exemple #16
0
 /// /////////////////////////////////////////////
 public override void AfterRead()
 {
     CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champTbl, DBNull.Value);
 }
Exemple #17
0
 public void ClearDataTableInCache()
 {
     CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champTbl, DBNull.Value);
 }