public DataRender(IDataSetStore store, List<DataCriteria> Criterias, LayoutObj layObj, ISdmxObjects structure, ComponentCodeDescriptionDictionary codemap, bool useAttr, CultureInfo cFrom, CultureInfo cTo) { this.store = store; this.Criterias = Criterias; this.layObj = layObj; this.Structure = structure; this.codemap = codemap; this._useAttr=useAttr; this.cFrom=cFrom; this.cTo=cTo; }
public static LayoutObj GetDefaultLayout(IDataflowObject df, IDataStructureObject kf) { LayoutObj lay = FindInConfigFile(df, kf); if (lay != null) return lay; lay = new LayoutObj(); foreach (var item in kf.DimensionList.Dimensions) { if (item.TimeDimension) lay.axis_y.Add(item.Id); else if (item.FrequencyDimension) lay.axis_z.Add(item.Id); else lay.axis_x.Add(item.Id); } return lay; }
public int CompareTo(object obj) { if (obj == null || !(obj is LayoutObj)) { return(-1); } LayoutObj otherLay = (LayoutObj)obj; if (!this.axis_x.SequenceEqual(otherLay.axis_x)) { return(1); } if (!this.axis_y.SequenceEqual(otherLay.axis_y)) { return(1); } if (!this.axis_z.SequenceEqual(otherLay.axis_z)) { return(1); } return(0); }
public DatasetJsonObj ParseAllData(IDataSetStore store, List<DataCriteria> Criterias, LayoutObj layObj, IDataStructureObject kf, ISet<ICodelistObject> codelists) { if (PageNumber > 0) return ParseAllDataPage(1); string DominantFreq = CalculateDominantFrequency(Criterias, kf, codelists); CurrentPageIndex = 1; int NObservationForPage = WebClientSettings.Instance.NObservationForPage; DatasetJsonObj dataset = new DatasetJsonObj() { series = new Dictionary<string, Dictionary<string, string>>() }; List<string> sort = new List<string>(); sort.AddRange(layObj.axis_y); sort.AddRange(layObj.axis_x); store.SetSort(sort); store.SetCriteria(Criterias); IDataReader datareader = store.CreateDataReader(false); try { int ActualRecordRegistred = 0; PageNumber = 0; JavaScriptSerializer ser = new JavaScriptSerializer(); ser.MaxJsonLength = int.MaxValue; while (datareader.Read()) { List<string> Colonne = new List<string>(); layObj.axis_x.ForEach(axisX => Colonne.Add(GetFromReader(datareader, axisX, DominantFreq, kf.TimeDimension.Id))); List<string> Righe = new List<string>(); layObj.axis_y.ForEach(axisY => Righe.Add(GetFromReader(datareader, axisY, DominantFreq, kf.TimeDimension.Id))); string OBSVal = (string)datareader[kf.PrimaryMeasure.Id]; string serieString = string.Join("+", Righe); if (!dataset.series.ContainsKey(serieString)) { if (ActualRecordRegistred >= NObservationForPage) { //NormalizeDataset(dataset, layObj.axis_x, kf, codelists); FileInfo fi = new FileInfo(Path.Combine(PagingFileDirectory.FullName, string.Format(FilePageFormat, PagingFileDirectory.Name, PageNumber + 1))); File.WriteAllText(fi.FullName, ser.Serialize(dataset)); ActualRecordRegistred = 0; PageNumber++; dataset = null; dataset = new DatasetJsonObj() { series = new Dictionary<string, Dictionary<string, string>>() }; } //dataset.series[serieString] = AllPossibleValues(layObj.axis_x, kf, codelists); dataset.series[serieString] = new Dictionary<string, string>(); } dataset.series[serieString][string.Join("+", Colonne)] = OBSVal; ActualRecordRegistred++; } FileInfo fiLastPage = new FileInfo(Path.Combine(PagingFileDirectory.FullName, string.Format(FilePageFormat, PagingFileDirectory.Name, PageNumber + 1))); File.WriteAllText(fiLastPage.FullName, ser.Serialize(dataset)); PageNumber++; if (PageNumber == 1) return dataset; return ParseAllDataPage(1); } catch (Exception) { throw; } finally { store.Commit(); } }