public ComplexDataQueryImpl(string datasetId, TextSearch datasetIdOperator, ISet<IDataProvider> dataProviders, IDataStructureObject dataStructure, IDataflowObject dataFlow, IProvisionAgreementObject provisionAgreement, IList<ITimeRange> lastUpdatedDate, int? maxObs, int? defaultLimit, bool orderAsc, ObservationAction obsAction, string dimensionAtObservation, bool hasExplicitMeasures, DataQueryDetail queryDetail, ICollection<IComplexDataQuerySelectionGroup> complexDataQuerySelectionGroup) { this._datasetId = datasetId; if (datasetIdOperator != null) this._datasetIdOperator = datasetIdOperator; else this._datasetIdOperator = TextSearch.GetFromEnum(TextSearchEnumType.Equal); if (dataProviders != null) { this._dataProviders = new HashSet<IDataProvider>(dataProviders); } base.DataStructure = dataStructure; base.Dataflow = dataFlow; this._provisionAgreement = provisionAgreement; if(lastUpdatedDate != null) { this._lastUpdatedDate = new List<ITimeRange>(lastUpdatedDate); } if (orderAsc) base.FirstNObservations = maxObs; else base.LastNObservations = maxObs; this._defaultLimit = defaultLimit; if (obsAction!=null) this._obsAction = obsAction; else this._obsAction = ObservationAction.GetFromEnum(ObservationActionEnumType.Active); this.DimensionAtObservation = dimensionAtObservation; if (dimensionAtObservation != null) { //the values: 'AllDimensions' and 'TIME_PERIOD' are valid values. if (dimensionAtObservation.Equals(_allDimensions) || dimensionAtObservation.Equals(DimensionAtObservationEnumType.Time.ToString())) this.DimensionAtObservation = dimensionAtObservation; else //check if the value is a dimension Value CheckDimensionExistence(dimensionAtObservation, dataStructure); } else { this.DimensionAtObservation = GetDimensionAtObservationLevel(dataStructure); } this._hasExplicitMeasures = hasExplicitMeasures; if (queryDetail != null) this._queryDetail = queryDetail; else this._queryDetail = DataQueryDetail.GetFromEnum(DataQueryDetailEnumType.Full); if (complexDataQuerySelectionGroup != null) { foreach (IComplexDataQuerySelectionGroup cdqsg in complexDataQuerySelectionGroup) { if (cdqsg != null) { this._complexDataQuerySelectionGroups.Add(cdqsg); } } } //perform validation ValidateQuery(); ValidateProvisionAgreement(); }
public IDataQueryFluentBuilder WithDataQueryDetail(DataQueryDetail dataQueryDetail) { if(dataQueryDetail != null) this._dataQueryDetail = dataQueryDetail; return this; }
/// <summary> /// Sets the detail. /// </summary> /// <param name="detail">The detail.</param> private void SetDetail(string detail) { if (detail != null) { queryDetail = DataQueryDetail.ParseString(detail); } }
public ComplexDataQueryImpl(string datasetId, TextSearch datasetIdOperator, ISet<IDataProvider> dataProviders, IDataStructureObject dataStructure, IDataflowObject dataFlow, IProvisionAgreementObject provisionAgreement, IList<ITimeRange> lastUpdatedDate, int? firstNObs, int? lastNObs, int? defaultLimit, ObservationAction obsAction, string dimensionAtObservation, bool hasExplicitMeasures, DataQueryDetail queryDetail, ISet<IComplexDataQuerySelection> complexSelections, DateTime dateFrom, OrderedOperator dateFromOperator, DateTime dateTo, OrderedOperator dateToOperator, ISet<IComplexComponentValue> primaryMeasureValues) { this._datasetId = datasetId; if (datasetIdOperator != null) this._datasetIdOperator = datasetIdOperator; else this._datasetIdOperator = TextSearch.GetFromEnum(TextSearchEnumType.Equal); this._dataProviders = dataProviders; base.DataStructure = dataStructure; base.Dataflow = dataFlow; this._provisionAgreement = provisionAgreement; this._lastUpdatedDate = lastUpdatedDate; base.FirstNObservations = firstNObs; base.LastNObservations = lastNObs; this._defaultLimit = defaultLimit; if (obsAction != null) this._obsAction = obsAction; else this._obsAction = ObservationAction.GetFromEnum(ObservationActionEnumType.Active); this.DimensionAtObservation = dimensionAtObservation; if (dimensionAtObservation != null) { //the values: 'AllDimensions' and 'TIME_PERIOD' are valid values. if (dimensionAtObservation.Equals(_allDimensions) || dimensionAtObservation.Equals(DimensionAtObservationEnumType.Time.ToString())) this.DimensionAtObservation = dimensionAtObservation; else//check if the value is a dimension Value CheckDimensionExistence(dimensionAtObservation, dataStructure); } else { this.DimensionAtObservation = GetDimensionAtObservationLevel(dataStructure); } this._hasExplicitMeasures = hasExplicitMeasures; if (queryDetail != null) this._queryDetail = queryDetail; else this._queryDetail = DataQueryDetail.GetFromEnum(DataQueryDetailEnumType.Full); if(ObjectUtil.ValidCollection(complexSelections) || dateFrom != null || dateTo != null) { ISdmxDate sdmxDateFrom = null; if(dateFrom != null) { sdmxDateFrom = new SdmxDateCore(dateFrom, TimeFormatEnumType.Date); } ISdmxDate sdmxDateTo = null; if(dateFrom != null) { sdmxDateTo = new SdmxDateCore(dateTo, TimeFormatEnumType.Date); } this._complexDataQuerySelectionGroups.Add(new ComplexDataQuerySelectionGroupImpl(complexSelections, sdmxDateFrom, dateFromOperator, sdmxDateTo, dateToOperator, primaryMeasureValues)); } //perform validation ValidateQuery(); ValidateProvisionAgreement(); }
/// <summary> /// Build from a REST query and a bean retrival manager /// </summary> /// <param name="dataQuery"></param> /// <param name="retrievalManager"></param> /// <exception cref="SdmxSemmanticException"></exception> public DataQueryImpl(IRestDataQuery dataQuery, ISdmxObjectRetrievalManager retrievalManager) { this._lastUpdated = dataQuery.UpdatedAfter; this._dataQueryDetail = dataQuery.QueryDetail ?? DataQueryDetail.GetFromEnum(DataQueryDetailEnumType.Full); base.FirstNObservations = dataQuery.FirstNObservations; base.LastNObservations = dataQuery.LastNObsertations; if (ObjectUtil.ValidString(dataQuery.DimensionAtObservation)) { this.DimensionAtObservation = dataQuery.DimensionAtObservation; } base.Dataflow = retrievalManager.GetMaintainableObject<IDataflowObject>(dataQuery.FlowRef.MaintainableReference); if (base.Dataflow == null) { throw new SdmxNoResultsException("Data Flow could not be found for query : " + dataQuery.FlowRef); } base.DataStructure = retrievalManager.GetMaintainableObject<IDataStructureObject>(base.Dataflow.DataStructureRef.MaintainableReference); if (base.DataStructure == null) { throw new SdmxNoResultsException("DSD could not be found for query : " + base.Dataflow.DataStructureRef); } ISet<IDataProvider> dataProviders = new HashSet<IDataProvider>(); if (dataQuery.ProviderRef != null) { ISet<IDataProviderScheme> dataProviderSchemes = retrievalManager.GetMaintainableObjects<IDataProviderScheme>(dataQuery.ProviderRef.MaintainableReference); foreach (IDataProviderScheme currentDpScheme in dataProviderSchemes) { foreach (IDataProvider dataProvider in currentDpScheme.Items) { if (dataProvider.Id.Equals(dataQuery.ProviderRef.ChildReference.Id)) { dataProviders.Add(dataProvider); } } } } ISet<IDataQuerySelection> selections = new HashSet<IDataQuerySelection>(); if (dataQuery.QueryList.Count > 0) { int i = 0; foreach (IDimension dimension in base.DataStructure.GetDimensions(SdmxStructureEnumType.Dimension, SdmxStructureEnumType.MeasureDimension).OrderBy(dimension => dimension.Position)) { if (dataQuery.QueryList.Count <= i) { throw new SdmxSemmanticException( "Not enough key values in query, expecting " + base.DataStructure.GetDimensions(SdmxStructureEnumType.Dimension, SdmxStructureEnumType.MeasureDimension).Count + " got " + dataQuery.QueryList.Count); } ISet<string> queriesForDimension = dataQuery.QueryList[i]; if (queriesForDimension != null && queriesForDimension.Count > 0) { IDataQuerySelection selectionsForDimension = new DataQueryDimensionSelectionImpl( dimension.Id, new HashSet<string>(queriesForDimension)); selections.Add(selectionsForDimension); } i++; } } if (ObjectUtil.ValidCollection(selections) || dataQuery.StartPeriod != null || dataQuery.EndPeriod != null) { _dataQuerySelectionGroups.Add( new DataQuerySelectionGroupImpl(selections, dataQuery.StartPeriod, dataQuery.EndPeriod)); } ValidateQuery(); }
/// <summary> /// Initializes a new instance of the <see cref="DataQueryImpl"/> class. /// </summary> /// <param name="dataStructure"> /// The data structure. /// </param> /// <param name="lastUpdated"> /// The last updated. /// </param> /// <param name="dataQueryDetail"> /// The data query detail. /// </param> /// <param name="maxObs"> /// The max obs. /// </param> /// <param name="orderAsc"> /// If the order is ascending. /// </param> /// <param name="dataProviders"> /// The data providers. /// </param> /// <param name="dataflow"> /// The dataflow. /// </param> /// <param name="dimensionAtObservation"> /// The dimension at observation. /// </param> /// <param name="selectionGroup"> /// The selection group. /// </param> public DataQueryImpl( IDataStructureObject dataStructure, ISdmxDate lastUpdated, DataQueryDetail dataQueryDetail, int maxObs, bool orderAsc, ISet<IDataProvider> dataProviders, IDataflowObject dataflow, string dimensionAtObservation, ICollection<IDataQuerySelectionGroup> selectionGroup) { base.DataStructure = dataStructure; this._lastUpdated = lastUpdated; this._dataQueryDetail = dataQueryDetail ?? DataQueryDetail.GetFromEnum(DataQueryDetailEnumType.Full); if (orderAsc) { base.FirstNObservations = maxObs; } else { base.LastNObservations = maxObs; } if (dataProviders != null) { this._dataProviders = new HashSet<IDataProvider>(dataProviders); } base.Dataflow = dataflow; this.DimensionAtObservation = dimensionAtObservation; if (selectionGroup != null) { foreach (IDataQuerySelectionGroup dqsg in selectionGroup) { if (dqsg != null) { this._dataQuerySelectionGroups.Add(dqsg); } } } ValidateQuery(); }
public DataQueryImpl( IDataStructureObject dataStructure, ISdmxDate lastUpdated, DataQueryDetail dataQueryDetail, int maxObs, bool orderAsc, ISet<IDataProvider> dataProviders, IDataflowObject dataflow, string dimensionAtObservation, ISet<IDataQuerySelection> selections, DateTime? dateFrom, DateTime? dateTo) { base.DataStructure = dataStructure; this._lastUpdated = lastUpdated; this._dataQueryDetail = dataQueryDetail ?? DataQueryDetail.GetFromEnum(DataQueryDetailEnumType.Full); if (orderAsc) { base.FirstNObservations = maxObs; } else { base.LastNObservations = maxObs; } if (dataProviders != null) { this._dataProviders = new HashSet<IDataProvider>(dataProviders); } base.Dataflow = dataflow; this.DimensionAtObservation = dimensionAtObservation; if (ObjectUtil.ValidCollection(selections) || dateFrom != null || dateTo != null) { ISdmxDate sdmxDateFrom = null; if (dateFrom != null) { sdmxDateFrom = new SdmxDateCore(dateFrom, TimeFormatEnumType.Date); } ISdmxDate sdmxDateTo = null; if (dateTo != null) { sdmxDateTo = new SdmxDateCore(dateTo, TimeFormatEnumType.Date); } //TODO: move to fluent interface this._dataQuerySelectionGroups.Add(new DataQuerySelectionGroupImpl(selections, sdmxDateFrom, sdmxDateTo)); } ValidateQuery(); }
public static IDataQuery BuildEmptyQuery( IDataStructureObject dataStructure, IDataflowObject dataflow, DataQueryDetail dataQueryDetail) { return new DataQueryImpl(dataStructure, dataflow, dataQueryDetail); }
private DataQueryImpl( IDataStructureObject dataStructure, IDataflowObject dataflow, DataQueryDetail dataQueryDetail) { base.DataStructure = dataStructure; this._dataQueryDetail = dataQueryDetail ?? DataQueryDetail.GetFromEnum(DataQueryDetailEnumType.Full); base.Dataflow = dataflow; ValidateQuery(); }