internal BaseQueryUtility(Dictionary<string, string> dictUserSelections, DataReturnDetailTypes dataReturnDetailType, string agencyId, DIConnection DIConnection, DIQueries DIQueries) { this._dictUserSelections = dictUserSelections; this._dataReturnDetailType = dataReturnDetailType; this._agencyId = agencyId; this._diConnection = DIConnection; this._diQueries = DIQueries; }
internal void Parse_Query(DataParametersAndType DataWhere, DataReturnDetailsType ReturnDetails) { string IndicatorGId, UnitGId, SubgroupValGId, AreaId, SourceText, TimePeriodText, Language, IUSNId; List<string> IUSNIds, AreaIds, SourceTexts, TimePeriods; Dictionary<string, string> DictSubgroupBreakup; DataTable DtSubgroupBreakup, DtIUS; IndicatorGId = string.Empty; UnitGId = string.Empty; SubgroupValGId = string.Empty; AreaId = string.Empty; SourceText = string.Empty; TimePeriodText = string.Empty; Language = string.Empty; IUSNId = string.Empty; IUSNIds = new List<string>(); AreaIds = new List<string>(); SourceTexts = new List<string>(); TimePeriods = new List<string>(); DictSubgroupBreakup = new Dictionary<string, string>(); DtSubgroupBreakup = this._diConnection.ExecuteDataTable(this._diQueries.SubgroupValSubgroup.GetSubgroupValsWithSubgroups()); DtSubgroupBreakup = DtSubgroupBreakup.DefaultView.ToTable(true, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.SubgroupVals.SubgroupValGId, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.SubgroupTypes.SubgroupTypeGID, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Subgroup.SubgroupGId); DtIUS = this._diConnection.ExecuteDataTable(this._diQueries.IUS.GetIUS(FilterFieldType.None, string.Empty, FieldSelection.Light)); DtIUS = DtIUS.DefaultView.ToTable(true, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Indicator_Unit_Subgroup.IUSNId, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Indicator.IndicatorGId, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Unit.UnitGId, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.SubgroupVals.SubgroupValGId); if ((DataReturnDetailTypes)Enum.Parse(typeof(DataReturnDetailTypes), ReturnDetails.detail) == DataReturnDetailTypes.Full) { if (DataWhere != null) { foreach (DataParametersOrType ORItem in DataWhere.Or) { if (ORItem.DimensionValue.Count > 0) { foreach (DimensionValueType Dimension in ORItem.DimensionValue) { switch (Dimension.ID) { case Constants.Concept.AREA.Id: AreaId = ((SDMXObjectModel.Query.SimpleValueType)Dimension.Items[0]).Value; AreaIds.Add(AreaId); break; case Constants.Concept.SOURCE.Id: SourceText = ((SDMXObjectModel.Query.SimpleValueType)Dimension.Items[0]).Value; SourceTexts.Add(SourceText); break; case Constants.Concept.TIME_PERIOD.Id: TimePeriodText = ((SDMXObjectModel.Query.SimpleValueType)Dimension.Items[0]).Value; if (this._isMRD == false) { if (TimePeriodText == Constants.MRD) { this._isMRD = true; TimePeriods = null; } else { TimePeriods.Add(TimePeriodText); } } break; default: break; } } } else if (ORItem.AttributeValue.Count > 0) { switch (ORItem.AttributeValue[0].ID) { case Constants.Concept.FOOTNOTES.Id: Language = ((QueryTextType)ORItem.AttributeValue[0].Items[0]).lang; break; } } else if (ORItem.And.Count > 0) { IUSNIds.Add(Constants.MinusOne); foreach (DataParametersAndType ANDItem in ORItem.And) { DictSubgroupBreakup = new Dictionary<string, string>(); foreach (DimensionValueType Dimension in ANDItem.DimensionValue) { switch (Dimension.ID) { case Constants.Concept.INDICATOR.Id: IndicatorGId = ((SDMXObjectModel.Query.SimpleValueType)Dimension.Items[0]).Value; break; case Constants.Concept.UNIT.Id: UnitGId = ((SDMXObjectModel.Query.SimpleValueType)Dimension.Items[0]).Value; break; default: DictSubgroupBreakup.Add(Dimension.ID, ((SDMXObjectModel.Query.SimpleValueType)Dimension.Items[0]).Value); break; } } SubgroupValGId = this.Get_SubgroupVal_GId(DictSubgroupBreakup, DtSubgroupBreakup); IUSNId = this.Get_IUSNId_From_GIds(IndicatorGId, UnitGId, SubgroupValGId, DtIUS); IUSNIds.Add(IUSNId); } } } if (DataWhere.DataStructure != null && DataWhere.DataStructure.Count > 0 && DataWhere.DataStructure[0].Items != null && DataWhere.DataStructure[0].Items.Count > 0) { this._agencyID = ((DataStructureRefType)DataWhere.DataStructure[0].Items[0]).agencyID; } else { throw new Exception(Constants.SDMXWebServices.Exceptions.InvalidSyntax.Message); } } else { throw new Exception(Constants.SDMXWebServices.Exceptions.InvalidSyntax.Message); } } else if ((DataReturnDetailTypes)Enum.Parse(typeof(DataReturnDetailTypes), ReturnDetails.detail) == DataReturnDetailTypes.SeriesKeyOnly) { this._agencyID = "agency"; } this._iusNIds = String.Join(Constants.Comma, IUSNIds.ToArray()); this._areaIds = AreaIds; this._sourceTexts = SourceTexts; if (this.IsMRD == false) { this._timeperiodNIds = this.Get_TimePeriodNIds_From_Text(TimePeriods); } this._languages = new List<string>(); if (string.IsNullOrEmpty(Language)) { foreach (DataRow LanguageRow in this._diConnection.DILanguages(this._diQueries.DataPrefix).Rows) { this._languages.Add(LanguageRow[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Language.LanguageCode].ToString()); } } else { if (this._diConnection.IsValidDILanguage(this._diQueries.DataPrefix, Language)) { this._languages.Add(Language); } else { this._languages.Add(this._diQueries.LanguageCode.Substring(1)); } } this._dataReturnDetailType = (DataReturnDetailTypes)Enum.Parse(typeof(DataReturnDetailTypes), ReturnDetails.detail); }
internal StructureSpecificTimeSeriesQueryUtility(Dictionary<string, string> dictUserSelections, DataReturnDetailTypes dataReturnDetailType, string agencyId, DIConnection DIConnection, DIQueries DIQueries) : base(dictUserSelections, dataReturnDetailType, agencyId, DIConnection, DIQueries) { }
internal GenericQueryUtility(Dictionary<string, string> dictUserSelections, DataReturnDetailTypes dataReturnDetailType, string agencyId, DIConnection DIConnection, DIQueries DIQueries) : base(dictUserSelections, dataReturnDetailType, agencyId, DIConnection, DIQueries) { }
public static XmlDocument Get_Query(SDMXSchemaType schemaType, Dictionary<string, string> dictUserSelections, QueryFormats format, DataReturnDetailTypes dataReturnDetailType, string agencyId, DIConnection DIConnection, DIQueries DIQueries) { XmlDocument RetVal; BaseQueryUtility BaseQueryUtility; RetVal = null; BaseQueryUtility = null; try { switch (format) { case QueryFormats.Generic: BaseQueryUtility = new GenericQueryUtility(dictUserSelections, dataReturnDetailType, agencyId, DIConnection, DIQueries); break; case QueryFormats.GenericTS: BaseQueryUtility = new GenericTimeSeriesQueryUtility(dictUserSelections, dataReturnDetailType, agencyId, DIConnection, DIQueries); break; case QueryFormats.StructureSpecific: BaseQueryUtility = new StructureSpecificQueryUtility(dictUserSelections, dataReturnDetailType, agencyId, DIConnection, DIQueries); break; case QueryFormats.StructureSpecificTS: BaseQueryUtility = new StructureSpecificTimeSeriesQueryUtility(dictUserSelections, dataReturnDetailType, agencyId, DIConnection, DIQueries); break; default: break; } RetVal = BaseQueryUtility.Get_Query(); } catch (Exception ex) { RetVal = null; throw ex; } finally { } return RetVal; }