예제 #1
0
        /// <summary>
        /// Retrieves all available dataflows.
        /// </summary>
        private IComplexStructureQuery RetrieveDataflows()
        {
            var dataflowRefBean = new StructureReferenceImpl(SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dataflow));
            IRestStructureQuery structureQueryDataflow = new RESTStructureQueryCore(dataflowRefBean);

            IBuilder <IComplexStructureQuery, IRestStructureQuery> transformerDataFlow = new StructureQuery2ComplexQueryBuilder();

            IComplexStructureQuery complexStructureQueryDataflow = transformerDataFlow.Build(structureQueryDataflow);

            IList <SdmxStructureType> specificObjects = new List <SdmxStructureType>();

            specificObjects.Add(SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dsd));

            IComplexStructureQueryMetadata complexStructureQueryMetadataWithDsd =
                new ComplexStructureQueryMetadataCore(false,
                                                      ComplexStructureQueryDetail.GetFromEnum(ComplexStructureQueryDetailEnumType.Full),
                                                      ComplexMaintainableQueryDetail.GetFromEnum(ComplexMaintainableQueryDetailEnumType.Full),
                                                      StructureReferenceDetail.GetFromEnum(StructureReferenceDetailEnumType.Specific),
                                                      specificObjects);

            IComplexStructureQuery complexStructureQueryTempDataflow = new ComplexStructureQueryCore(
                complexStructureQueryDataflow.StructureReference, complexStructureQueryMetadataWithDsd);

            return(complexStructureQueryTempDataflow);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComplexAnnotationReferenceCore"/> class.
        /// </summary>
        /// <param name="returnMatchedArtefact">
        /// The return matched artefatc. 
        /// </param>
        /// <param name="queryDetail">
        /// The query detail. 
        /// </param>
        /// <param name="referencesQueryDetail">
        /// The references query detail. 
        /// </param>
        /// <param name="referenceDetail">
        /// The reference detail. 
        /// </param>
        /// <param name="referenceSpecificStructures">
        /// The reference specific structures. 
        /// </param>
        public ComplexStructureQueryMetadataCore(bool returnMatchedArtefact, ComplexStructureQueryDetail queryDetail, 
            ComplexMaintainableQueryDetail referencesQueryDetail, StructureReferenceDetail referenceDetail,
            IList<SdmxStructureType> referenceSpecificStructures) 
        {
		
	  	   this._returnMatchedArtefact = returnMatchedArtefact;
		   if (queryDetail != null) 
           {
	 		this._queryDetail = queryDetail;
	       }

	  	   if (referencesQueryDetail != null)
		   this._referencesQueryDetail = referencesQueryDetail;
		
		   if (referenceDetail == null) 
           {
		    	throw new SdmxSemmanticException("Reference Detail cannot be null.");
	  	   }
		
		  this._referenceDetail = referenceDetail;
		  this._referenceSpecificStructures = referenceSpecificStructures;
	   }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComplexAnnotationReferenceCore" /> class.
        /// </summary>
        /// <param name="returnMatchedArtefact">The return matched artefact.</param>
        /// <param name="processConstraints">if set to <c>true</c> [process constraints].</param>
        /// <param name="queryDetail">The query detail.</param>
        /// <param name="referencesQueryDetail">The references query detail.</param>
        /// <param name="referenceDetail">The reference detail.</param>
        /// <param name="referenceSpecificStructures">The reference specific structures.</param>
        public ComplexStructureQueryMetadataCore(bool returnMatchedArtefact, bool processConstraints, ComplexStructureQueryDetail queryDetail,
            ComplexMaintainableQueryDetail referencesQueryDetail, StructureReferenceDetail referenceDetail,
            IList<SdmxStructureType> referenceSpecificStructures)

            : this(returnMatchedArtefact, queryDetail, referencesQueryDetail, referenceDetail, referenceSpecificStructures)
        {
            this._processConstraints = processConstraints;
        }
        /// <summary>
        /// Converts the specified complex structure query detail.
        /// </summary>
        /// <param name="complexStructureQueryDetail">The complex structure query detail.</param>
        /// <param name="referenceDetail">The reference detail.</param>
        /// <returns>The <see cref="StructureQueryDetail"/>.</returns>
        private static StructureQueryDetail Convert(ComplexStructureQueryDetail complexStructureQueryDetail, ComplexMaintainableQueryDetail referenceDetail)
        {
            StructureQueryDetailEnumType structureQueryDetail;
            switch (complexStructureQueryDetail.EnumType)
            {
                case ComplexStructureQueryDetailEnumType.Full:
                    if (referenceDetail.EnumType == ComplexMaintainableQueryDetailEnumType.Full || referenceDetail.EnumType == ComplexMaintainableQueryDetailEnumType.Null)
                    {
                        structureQueryDetail = StructureQueryDetailEnumType.Full;
                    }
                    else
                    {
                        structureQueryDetail = StructureQueryDetailEnumType.ReferencedStubs;
                    }

                    break;
                case ComplexStructureQueryDetailEnumType.CompleteStub:
                case ComplexStructureQueryDetailEnumType.Stub:
                    structureQueryDetail = StructureQueryDetailEnumType.AllStubs;
                    break;
                default:
                    structureQueryDetail = StructureQueryDetailEnumType.Null;
                    break;
            }

            return StructureQueryDetail.GetFromEnum(structureQueryDetail);
        }