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();
            }
        }