/// <summary>
        /// Builds a list of provision references from a version 2.1 registry query registration request message
        /// </summary>
        /// <param name="queryRegistrationRequestType">
        /// The query Registration Request Type.
        /// </param>
        /// <returns>
        /// provision references
        /// </returns>
        public IStructureReference Build(QueryRegistrationRequestType queryRegistrationRequestType)
        {
            if (queryRegistrationRequestType != null)
            {
                if (queryRegistrationRequestType.All != null)
                {
                    return
                        new StructureReferenceImpl(
                            SdmxStructureType.GetFromEnum(SdmxStructureEnumType.ProvisionAgreement));
                }

                DataflowReferenceType dataflowRef = queryRegistrationRequestType.Dataflow;
                DataProviderReferenceType dataProviderRef = queryRegistrationRequestType.DataProvider;
                ProvisionAgreementReferenceType provRef = queryRegistrationRequestType.ProvisionAgreement;
                MetadataflowReferenceType mdfRef = queryRegistrationRequestType.Metadataflow;

                if (dataProviderRef != null)
                {
                    return RefUtil.CreateReference(dataProviderRef);
                }

                if (provRef != null)
                {
                    return RefUtil.CreateReference(provRef);
                }

                if (dataflowRef != null)
                {
                    return RefUtil.CreateReference(dataflowRef);
                }

                if (mdfRef != null)
                {
                    return RefUtil.CreateReference(mdfRef);
                }
            }

            return null;
        }
Example #2
0
        /// <summary>
        /// Build a provision agreement reference bean
        ///     If only dataProviderRef is supplied then this is used and the flow type is assumed to be a dataflow
        /// </summary>
        /// <param name="queryRegistrationRequestType">
        /// given registration request query containing references to its beans
        /// </param>
        /// <returns>
        /// provision agreement reference bean of query reference, which ever of provision agreement, dataflow, data provider or metadataflow is given, in that order.
        /// </returns>
        public IStructureReference Build(QueryRegistrationRequestType queryRegistrationRequestType)
        {
            DataflowRefType dataflowRef = queryRegistrationRequestType.DataflowRef;
            DataProviderRefType dataProviderRef = queryRegistrationRequestType.DataProviderRef;
            MetadataflowRefType metadataflowRef = queryRegistrationRequestType.MetadataflowRef;
            ProvisionAgreementRefType provRef = queryRegistrationRequestType.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);
                }

                throw new ArgumentException(
                    "Version 2.0 query for registration by provision agreement must use the provision 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));
            }

            return null;
        }