コード例 #1
0
        /// <summary>
        /// Build a provision agreement reference bean
        /// </summary>
        /// <param name="queryProvisionRequestType">
        /// given provision request query containing references to its beans
        /// </param>
        /// <returns>
        /// provision agreement reference bean of query reference, which ever of provision agreement, dataflow, metadataflow and data provider is given, in that order.
        /// </returns>
        public IStructureReference Build(QueryProvisioningRequestType queryProvisionRequestType)
        {
            DataflowRefType dataflowRef = queryProvisionRequestType.DataflowRef;
            DataProviderRefType dataProviderRef = queryProvisionRequestType.DataProviderRef;
            MetadataflowRefType metadataflowRef = queryProvisionRequestType.MetadataflowRef;
            ProvisionAgreementRefType provRef = queryProvisionRequestType.ProvisionAgreementRef;

            if (dataProviderRef != null)
            {
                if (ObjectUtil.ValidString(dataProviderRef.URN))
                {
                    return new StructureReferenceImpl(dataProviderRef.URN);
                }

                string agencyId = dataProviderRef.OrganisationSchemeAgencyID;
                string maintId = dataProviderRef.OrganisationSchemeID;
                string version = dataProviderRef.Version;
                string id = dataProviderRef.DataProviderID;
                return new StructureReferenceImpl(
                    agencyId, maintId, version, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.DataProvider), id);
            }

            if (provRef != null)
            {
                if (ObjectUtil.ValidString(provRef.URN))
                {
                    return new StructureReferenceImpl(provRef.URN);
                }
            }

            if (dataflowRef != null)
            {
                if (ObjectUtil.ValidString(dataflowRef.URN))
                {
                    return new StructureReferenceImpl(dataflowRef.URN);
                }

                string agencyId0 = dataflowRef.AgencyID;
                string maintId1 = dataflowRef.DataflowID;
                string version2 = dataflowRef.Version;
                return new StructureReferenceImpl(
                    agencyId0, maintId1, version2, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dataflow));
            }

            if (metadataflowRef != null)
            {
                if (ObjectUtil.ValidString(metadataflowRef.URN))
                {
                    return new StructureReferenceImpl(metadataflowRef.URN);
                }

                string agencyId3 = metadataflowRef.AgencyID;
                string maintId4 = metadataflowRef.MetadataflowID;
                string version5 = metadataflowRef.Version;
                return new StructureReferenceImpl(
                    agencyId3, maintId4, version5, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.MetadataFlow));
            }

            throw new SdmxNotImplementedException(
                ExceptionCode.Unsupported, 
                "At version 2.0 provisions can only be queryies by Provision URN, Dataflow Ref, Data Provider Ref or Metadata Flow Ref");
        }
コード例 #2
0
 /// <summary>
 /// Builds a list of provision references from a version 2.0 registry query provision request message
 /// </summary>
 /// <param name="queryProvisionRequestType">
 /// The query Provision Request Type.
 /// </param>
 /// <returns>
 /// provision references
 /// </returns>
 public virtual IStructureReference Build(QueryProvisioningRequestType queryProvisionRequestType)
 {
     return this._queryBuilderV2.Build(queryProvisionRequestType);
 }