/// <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(); } }
/// <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); }
/// ///////////////////////////////////////////////////////// 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; }
/// ///////////////////////////////////////////////////////// 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); } } }
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); }
//------------------------------------------------------------------------- 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); } } }
//------------------------------------------------------------------- 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); }
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); } }
/// ///////////////////////////////////////////////////////// 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); }
/// ///////////////////////////////////////////// public override void AfterRead() { CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champTbl, DBNull.Value); }
public void ClearDataTableInCache() { CContexteDonnee.ChangeRowSansDetectionModification(Row.Row, c_champTbl, DBNull.Value); }