internal IDataSetStore FindDataCache(IDataflowObject df, IDataStructureObject kf, List <DataCriteria> Criterias, ref Dictionary <string, List <DataChacheObject> > DataCache, bool useAttr, out string DBFileName) { DataChacheObject findCache = null; Dictionary <string, List <string> > Criteri = new Dictionary <string, List <string> >(); Criterias.ForEach(c => Criteri.Add(c.component, c.values)); DBFileName = null; if (DataCache != null) { string DfID = Utils.MakeKey(df); if (DataCache.ContainsKey(DfID)) { List <DataChacheObject> singleDataCache = DataCache[DfID]; findCache = singleDataCache.Find(dc => DictionaryEqual(dc.Criterias, Criteri)); Dictionary <string, List <string> > CriteriDataCache = new Dictionary <string, List <string> >(); if (singleDataCache.Count > 0) { CriteriDataCache = singleDataCache.FirstOrDefault().Criterias; } bool pippo = false; if (CriteriDataCache.Count > 0) { pippo = DictionaryContain(singleDataCache.FirstOrDefault().Criterias, Criteri); } if (pippo) { findCache = singleDataCache.FirstOrDefault(); } } } if (findCache != null) { if (!string.IsNullOrEmpty(findCache.DBFileName) && File.Exists(findCache.DBFileName)) { #region Connessione e Creazione DB SQLLite string ConnectionString = string.Format(CultureInfo.InvariantCulture, Constants.FileDBSettingsFormat, findCache.DBFileName); var info = new DBInfo(ConnectionString); string tempTable = "table_" + Utils.MakeKey(df).Replace("+", "_").Replace(".", ""); IDataSetStore store = new DataSetStoreDB(info, tempTable, kf, false, useAttr); //DBFileName = findCache.DBFileName; store.SetCriteria(Criterias); return(store); #endregion } return(null); } return(null); }
internal IDataSetStore GetDataset(IDataflowObject df, IDataStructureObject kf, List <DataCriteria> Criterias, ref Dictionary <string, List <DataChacheObject> > DataCache, bool useAttr) { // if it is not time series then assume it is cross SDMXWSFunction op = SDMXWSFunction.GetCompactData; bool cross = (DataObjConfiguration._TypeEndpoint == EndpointType.V21 || DataObjConfiguration._TypeEndpoint == EndpointType.REST) ? NsiClientHelper.DataflowDsdIsCrossSectional(kf) : !Utils.IsTimeSeries(kf); if (cross) { op = SDMXWSFunction.GetCrossSectionalData; } var ser = new JavaScriptSerializer(); ser.MaxJsonLength = int.MaxValue; try { //commentato vecchio codice //IGetSDMX GetSDMXObject = WebServiceSelector.GetSdmxImplementation(DataObjConfiguration); //GetSDMXObject.ExecuteQuery(CreateQueryBean(df, kf, Criterias), op, FileTmpData); /* #region Connessione e Creazione DB SQLLite * string table = Path.Combine(Utils.GetAppPath(), string.Format(CultureInfo.InvariantCulture, "{0}-{1}.sqlite", Utils.MakeKey(df).Replace("+", "_").Replace(".", ""), Guid.NewGuid())); * string ConnectionString = string.Format(CultureInfo.InvariantCulture, Constants.FileDBSettingsFormat, table); * var info = new DBInfo(ConnectionString); * string tempTable = "table_" + Utils.MakeKey(df).Replace("+", "_").Replace(".", ""); * IDataSetStore store = new DataSetStoreDB(info, tempTable, kf, true, useAttr); #endregion * fine vecchio codice*/ //Salvo in Session /* * if (DataCache == null) * DataCache = new Dictionary<string, List<DataChacheObject>>(); * if (!DataCache.ContainsKey(Utils.MakeKey(df))) * DataCache[Utils.MakeKey(df)] = new List<DataChacheObject>(); */ //string table=null; //FABIO NEW //IDataSetStore store = FindDataCacheChart(df, kf, Criterias, ref DataCache, useAttr,out table); //if (store == null) store = GetDataset(df, kf, Criterias, ref DataCache, useAttr); #region Connessione e Creazione DB SQLLite FABIO se nullo lo istanzio // if (store == null) // { string table = null; IGetSDMX GetSDMXObject = WebServiceSelector.GetSdmxImplementation(DataObjConfiguration); GetSDMXObject.ExecuteQuery(CreateQueryBean(df, kf, Criterias), op, FileTmpData); #region Connessione e Creazione DB SQLLite table = Path.Combine(Utils.GetAppPath(), string.Format(CultureInfo.InvariantCulture, "{0}-{1}.sqlite", Utils.MakeKey(df).Replace("+", "_").Replace(".", ""), Guid.NewGuid())); string ConnectionString = string.Format(CultureInfo.InvariantCulture, Constants.FileDBSettingsFormat, table); var info = new DBInfo(ConnectionString); string tempTable = "table_" + Utils.MakeKey(df).Replace("+", "_").Replace(".", ""); IDataSetStore store = new DataSetStoreDB(info, tempTable, kf, true, useAttr); #endregion using (var dataLocation = new FileReadableDataLocation(FileTmpData)) { switch (op) { case SDMXWSFunction.GetCompactData: var compact = new CompactDataReaderEngine(dataLocation, df, kf); var readerCompact = new SdmxDataReader(kf, store); readerCompact.ReadData(compact); break; case SDMXWSFunction.GetCrossSectionalData: var dsdCrossSectional = (ICrossSectionalDataStructureObject)kf; var crossSectional = new CrossSectionalDataReaderEngine(dataLocation, dsdCrossSectional, df); var reader = new SdmxDataReader(kf, store); reader.ReadData(crossSectional); break; default: throw new ArgumentException(Resources.ExceptionUnsupported_operation + op.ToString(), "operation"); } } // } #endregion FABIO //using (var dataLocation = new FileReadableDataLocation(FileTmpData)) //{ // switch (op) // { // case SDMXWSFunction.GetCompactData: // var compact = new CompactDataReaderEngine(dataLocation, df, kf); // var readerCompact = new SdmxDataReader(kf, store); // readerCompact.ReadData(compact); // break; // case SDMXWSFunction.GetCrossSectionalData: // var dsdCrossSectional = (ICrossSectionalDataStructureObject)kf; // var crossSectional = new CrossSectionalDataReaderEngine(dataLocation, dsdCrossSectional, df); // var reader = new SdmxDataReader(kf, store); // reader.ReadData(crossSectional); // break; // default: // throw new ArgumentException(Resources.ExceptionUnsupported_operation + op.ToString(), "operation"); // } //} /* * Dictionary<string, List<string>> Criteri = new Dictionary<string, List<string>>(); * Criterias.ForEach(c => Criteri.Add(c.component, c.values)); * DataChacheObject dco = new DataChacheObject() * { * Criterias = Criteri, * DBFileName = table, * }; * * //aggiunta da fabio * DataCache[Utils.MakeKey(df)].Clear(); * //fine aggiunta fabio * DataCache[Utils.MakeKey(df)].Add(dco); */ return(store); } catch (Exception ex) { Logger.Warn(ex.Message, ex); throw ex; } finally { //delete the temporary file if (File.Exists(FileTmpData)) { File.Delete(FileTmpData); } } }
internal IDataSetStore GetDataset(IDataflowObject df, IDataStructureObject kf, List<DataCriteria> Criterias, ref Dictionary<string, List<DataChacheObject>> DataCache,bool useAttr) { // if it is not time series then assume it is cross SDMXWSFunction op = SDMXWSFunction.GetCompactData; bool cross = (DataObjConfiguration._TypeEndpoint == EndpointType.V21 || DataObjConfiguration._TypeEndpoint == EndpointType.REST) ? NsiClientHelper.DataflowDsdIsCrossSectional(kf) : !Utils.IsTimeSeries(kf); if (cross) op = SDMXWSFunction.GetCrossSectionalData; var ser = new JavaScriptSerializer(); ser.MaxJsonLength = int.MaxValue; try { //commentato vecchio codice //IGetSDMX GetSDMXObject = WebServiceSelector.GetSdmxImplementation(DataObjConfiguration); //GetSDMXObject.ExecuteQuery(CreateQueryBean(df, kf, Criterias), op, FileTmpData); /* #region Connessione e Creazione DB SQLLite string table = Path.Combine(Utils.GetAppPath(), string.Format(CultureInfo.InvariantCulture, "{0}-{1}.sqlite", Utils.MakeKey(df).Replace("+", "_").Replace(".", ""), Guid.NewGuid())); string ConnectionString = string.Format(CultureInfo.InvariantCulture, Constants.FileDBSettingsFormat, table); var info = new DBInfo(ConnectionString); string tempTable = "table_" + Utils.MakeKey(df).Replace("+", "_").Replace(".", ""); IDataSetStore store = new DataSetStoreDB(info, tempTable, kf, true, useAttr); #endregion fine vecchio codice*/ //Salvo in Session /* if (DataCache == null) DataCache = new Dictionary<string, List<DataChacheObject>>(); if (!DataCache.ContainsKey(Utils.MakeKey(df))) DataCache[Utils.MakeKey(df)] = new List<DataChacheObject>(); */ //string table=null; //FABIO NEW //IDataSetStore store = FindDataCacheChart(df, kf, Criterias, ref DataCache, useAttr,out table); //if (store == null) store = GetDataset(df, kf, Criterias, ref DataCache, useAttr); #region Connessione e Creazione DB SQLLite FABIO se nullo lo istanzio // if (store == null) // { string table = null; IGetSDMX GetSDMXObject = WebServiceSelector.GetSdmxImplementation(DataObjConfiguration); GetSDMXObject.ExecuteQuery(CreateQueryBean(df, kf, Criterias), op, FileTmpData); #region Connessione e Creazione DB SQLLite table = Path.Combine(Utils.GetAppPath(), string.Format(CultureInfo.InvariantCulture, "{0}-{1}.sqlite", Utils.MakeKey(df).Replace("+", "_").Replace(".", ""), Guid.NewGuid())); string ConnectionString = string.Format(CultureInfo.InvariantCulture, Constants.FileDBSettingsFormat, table); var info = new DBInfo(ConnectionString); string tempTable = "table_" + Utils.MakeKey(df).Replace("+", "_").Replace(".", ""); IDataSetStore store = new DataSetStoreDB(info, tempTable, kf, true, useAttr); #endregion using (var dataLocation = new FileReadableDataLocation(FileTmpData)) { switch (op) { case SDMXWSFunction.GetCompactData: var compact = new CompactDataReaderEngine(dataLocation, df, kf); var readerCompact = new SdmxDataReader(kf, store); readerCompact.ReadData(compact); break; case SDMXWSFunction.GetCrossSectionalData: var dsdCrossSectional = (ICrossSectionalDataStructureObject)kf; var crossSectional = new CrossSectionalDataReaderEngine(dataLocation, dsdCrossSectional, df); var reader = new SdmxDataReader(kf, store); reader.ReadData(crossSectional); break; default: throw new ArgumentException(Resources.ExceptionUnsupported_operation + op.ToString(), "operation"); } } // } #endregion FABIO //using (var dataLocation = new FileReadableDataLocation(FileTmpData)) //{ // switch (op) // { // case SDMXWSFunction.GetCompactData: // var compact = new CompactDataReaderEngine(dataLocation, df, kf); // var readerCompact = new SdmxDataReader(kf, store); // readerCompact.ReadData(compact); // break; // case SDMXWSFunction.GetCrossSectionalData: // var dsdCrossSectional = (ICrossSectionalDataStructureObject)kf; // var crossSectional = new CrossSectionalDataReaderEngine(dataLocation, dsdCrossSectional, df); // var reader = new SdmxDataReader(kf, store); // reader.ReadData(crossSectional); // break; // default: // throw new ArgumentException(Resources.ExceptionUnsupported_operation + op.ToString(), "operation"); // } //} /* Dictionary<string, List<string>> Criteri = new Dictionary<string, List<string>>(); Criterias.ForEach(c => Criteri.Add(c.component, c.values)); DataChacheObject dco = new DataChacheObject() { Criterias = Criteri, DBFileName = table, }; //aggiunta da fabio DataCache[Utils.MakeKey(df)].Clear(); //fine aggiunta fabio DataCache[Utils.MakeKey(df)].Add(dco); */ return store; } catch (Exception ex) { Logger.Warn(ex.Message, ex); throw ex; } finally { //delete the temporary file if (File.Exists(FileTmpData)) File.Delete(FileTmpData); } }
internal IDataSetStore GetDataset(IDataflowObject df, IDataStructureObject kf, List <DataCriteria> Criterias, ref Dictionary <string, List <DataChacheObject> > DataCache, bool useAttr, SessionQuery query) { // if it is not time series then assume it is cross SDMXWSFunction op = SDMXWSFunction.GetCompactData; bool cross = (DataObjConfiguration._TypeEndpoint == EndpointType.V21 || DataObjConfiguration._TypeEndpoint == EndpointType.REST) ? NsiClientHelper.DataflowDsdIsCrossSectional(kf) : !Utils.IsTimeSeries(kf); if (cross) { op = SDMXWSFunction.GetCrossSectionalData; } var ser = new JavaScriptSerializer(); ser.MaxJsonLength = int.MaxValue; try { #region Connessione e Creazione DB SQLLite FABIO se nullo lo istanzio string table = null; IGetSDMX GetSDMXObject = (query._IGetSDMX == null) ? WebServiceSelector.GetSdmxImplementation(DataObjConfiguration) : query._IGetSDMX; GetSDMXObject.ExecuteQuery(CreateQueryBean(df, kf, Criterias), op, FileTmpData); #region Connessione e Creazione DB SQLLite table = Path.Combine(Utils.GetAppPath(), string.Format(CultureInfo.InvariantCulture, "{0}-{1}.sqlite", Utils.MakeKey(df).Replace("+", "_").Replace(".", ""), Guid.NewGuid())); string ConnectionString = string.Format(CultureInfo.InvariantCulture, Constants.FileDBSettingsFormat, table); var info = new DBInfo(ConnectionString); string tempTable = "table_" + Utils.MakeKey(df).Replace("+", "_").Replace(".", ""); IDataSetStore store = new DataSetStoreDB(info, tempTable, kf, true, useAttr); #endregion using (var dataLocation = new FileReadableDataLocation(FileTmpData)) { switch (op) { case SDMXWSFunction.GetCompactData: var compact = new CompactDataReaderEngine(dataLocation, df, kf); var readerCompact = new SdmxDataReader(kf, store); readerCompact.ReadData(compact); break; case SDMXWSFunction.GetCrossSectionalData: var dsdCrossSectional = (ICrossSectionalDataStructureObject)kf; var crossSectional = new CrossSectionalDataReaderEngine(dataLocation, dsdCrossSectional, df); var reader = new SdmxDataReader(kf, store); reader.ReadData(crossSectional); break; default: throw new ArgumentException(Resources.ExceptionUnsupported_operation + op.ToString(), "operation"); } } #endregion FABIO return(store); } catch (Exception ex) { Logger.Warn(ex.Message, ex); throw ex; } finally { //delete the temporary file if (File.Exists(FileTmpData)) { File.Delete(FileTmpData); } } }
internal IDataSetStore FindDataCacheChart(IDataflowObject df, IDataStructureObject kf, List<DataCriteria> Criterias, ref Dictionary<string, List<DataChacheObject>> DataCache, bool useAttr, out string DBFileName) { DataChacheObject findCache = null; Dictionary<string, List<string>> Criteri = new Dictionary<string, List<string>>(); Criterias.ForEach(c => Criteri.Add(c.component, c.values)); DBFileName = null; if (DataCache != null) { string DfID = Utils.MakeKey(df); if (DataCache.ContainsKey(DfID)) { List<DataChacheObject> singleDataCache = DataCache[DfID]; findCache = singleDataCache.Find(dc => DictionaryEqual(dc.Criterias, Criteri)); } } if (findCache != null) { if (!string.IsNullOrEmpty(findCache.DBFileName) && File.Exists(findCache.DBFileName)) { #region Connessione e Creazione DB SQLLite string ConnectionString = string.Format(CultureInfo.InvariantCulture, Constants.FileDBSettingsFormat, findCache.DBFileName); var info = new DBInfo(ConnectionString); string tempTable = "table_" + Utils.MakeKey(df).Replace("+", "_").Replace(".", ""); IDataSetStore store = new DataSetStoreDB(info, tempTable, kf, false, useAttr); DBFileName = findCache.DBFileName; return store; #endregion } return null; } return null; }