/// <summary> /// Build a list of structure references /// </summary> /// <param name="queryStructureRequests"> /// given structure request query containing lists of references for each structure type. /// </param> /// <returns> /// list of structure references /// </returns> public IList<IStructureReference> Build(QueryStructureRequestType queryStructureRequests) { IList<IStructureReference> reutrnList = new List<IStructureReference>(); /* foreach */ foreach (AgencyRefType agencyRefType in queryStructureRequests.AgencyRef) { var urn = agencyRefType.URN; if (ObjectUtil.ValidString(urn)) { reutrnList.Add(new StructureReferenceImpl(urn)); } else { string agencyId = agencyRefType.AgencyID; string maintId = agencyRefType.OrganisationSchemeID; string version = agencyRefType.OrganisationSchemeAgencyID; reutrnList.Add( new StructureReferenceImpl( agencyId, maintId, version, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Agency))); } } if (queryStructureRequests.CategorySchemeRef != null) { /* foreach */ foreach (CategorySchemeRefType refType in queryStructureRequests.CategorySchemeRef) { var urn0 = refType.URN; if (ObjectUtil.ValidString(urn0)) { reutrnList.Add(new StructureReferenceImpl(urn0)); } else { string agencyId1 = refType.AgencyID; string maintId2 = refType.CategorySchemeID; string version3 = refType.Version; reutrnList.Add( new StructureReferenceImpl( agencyId1, maintId2, version3, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.CategoryScheme))); } } } if (queryStructureRequests.CodelistRef != null) { /* foreach */ foreach (CodelistRefType refType4 in queryStructureRequests.CodelistRef) { var urn5 = refType4.URN; if (ObjectUtil.ValidString(urn5)) { reutrnList.Add(new StructureReferenceImpl(urn5)); } else { string agencyId6 = refType4.AgencyID; string maintId7 = refType4.CodelistID; string version8 = refType4.Version; reutrnList.Add( new StructureReferenceImpl( agencyId6, maintId7, version8, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.CodeList))); } } } if (queryStructureRequests.ConceptSchemeRef != null) { /* foreach */ foreach (ConceptSchemeRefType refType9 in queryStructureRequests.ConceptSchemeRef) { var urn10 = refType9.URN; if (ObjectUtil.ValidString(urn10)) { reutrnList.Add(new StructureReferenceImpl(urn10)); } else { string agencyId11 = refType9.AgencyID; string maintId12 = refType9.ConceptSchemeID; string version13 = refType9.Version; reutrnList.Add( new StructureReferenceImpl( agencyId11, maintId12, version13, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.ConceptScheme))); } } } if (queryStructureRequests.DataflowRef != null) { foreach (DataflowRefType refType14 in queryStructureRequests.DataflowRef) { var structureReferenceImpl = this.BuildDataflowQuery(refType14); reutrnList.Add(structureReferenceImpl); } } if (queryStructureRequests.DataProviderRef != null) { /* foreach */ foreach (DataProviderRefType refType19 in queryStructureRequests.DataProviderRef) { var urn20 = refType19.URN; if (ObjectUtil.ValidString(urn20)) { reutrnList.Add(new StructureReferenceImpl(urn20)); } else { string agencyId21 = refType19.OrganisationSchemeAgencyID; string maintId22 = refType19.OrganisationSchemeAgencyID; string version23 = refType19.Version; string id = refType19.DataProviderID; reutrnList.Add( new StructureReferenceImpl( agencyId21, maintId22, version23, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.DataProvider), id)); } } } if (queryStructureRequests.HierarchicalCodelistRef != null) { /* foreach */ foreach (HierarchicalCodelistRefType refType24 in queryStructureRequests.HierarchicalCodelistRef) { var urn25 = refType24.URN; if (ObjectUtil.ValidString(urn25)) { reutrnList.Add(new StructureReferenceImpl(urn25)); } else { string agencyId26 = refType24.AgencyID; string maintId27 = refType24.HierarchicalCodelistID; string version28 = refType24.Version; reutrnList.Add( new StructureReferenceImpl( agencyId26, maintId27, version28, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.HierarchicalCodelist))); } } } if (queryStructureRequests.KeyFamilyRef != null) { /* foreach */ foreach (KeyFamilyRefType refType29 in queryStructureRequests.KeyFamilyRef) { var urn30 = refType29.URN; if (ObjectUtil.ValidString(urn30)) { reutrnList.Add(new StructureReferenceImpl(urn30)); } else { string agencyId31 = refType29.AgencyID; string maintId32 = refType29.KeyFamilyID; string version33 = refType29.Version; reutrnList.Add( new StructureReferenceImpl( agencyId31, maintId32, version33, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dsd))); } } } if (queryStructureRequests.MetadataflowRef != null) { /* foreach */ foreach (MetadataflowRefType refType34 in queryStructureRequests.MetadataflowRef) { var urn35 = refType34.URN; if (ObjectUtil.ValidString(urn35)) { reutrnList.Add(new StructureReferenceImpl(urn35)); } else { string agencyId36 = refType34.AgencyID; string maintId37 = refType34.MetadataflowID; string version38 = refType34.Version; reutrnList.Add( new StructureReferenceImpl( agencyId36, maintId37, version38, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.MetadataFlow))); } } } if (queryStructureRequests.MetadataStructureRef != null) { /* foreach */ foreach (MetadataStructureRefType refType39 in queryStructureRequests.MetadataStructureRef) { var urn40 = refType39.URN; if (ObjectUtil.ValidString(urn40)) { reutrnList.Add(new StructureReferenceImpl(urn40)); } else { string agencyId41 = refType39.AgencyID; string maintId42 = refType39.MetadataStructureID; string version43 = refType39.Version; reutrnList.Add( new StructureReferenceImpl( agencyId41, maintId42, version43, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Msd))); } } } if (queryStructureRequests.OrganisationSchemeRef != null) { /* foreach */ foreach (OrganisationSchemeRefType refType44 in queryStructureRequests.OrganisationSchemeRef) { var urn45 = refType44.URN; if (ObjectUtil.ValidString(urn45)) { reutrnList.Add(new StructureReferenceImpl(urn45)); } else { string agencyId46 = refType44.AgencyID; string maintId47 = refType44.OrganisationSchemeID; string version48 = refType44.Version; reutrnList.Add( new StructureReferenceImpl( agencyId46, maintId47, version48, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.AgencyScheme))); reutrnList.Add( new StructureReferenceImpl( agencyId46, maintId47, version48, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.DataConsumerScheme))); reutrnList.Add( new StructureReferenceImpl( agencyId46, maintId47, version48, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.DataProviderScheme))); } } } if (queryStructureRequests.ProcessRef != null) { /* foreach */ foreach (ProcessRefType refType49 in queryStructureRequests.ProcessRef) { var urn50 = refType49.URN; if (ObjectUtil.ValidString(urn50)) { reutrnList.Add(new StructureReferenceImpl(urn50)); } else { string agencyId51 = refType49.AgencyID; string maintId52 = refType49.ProcessID; string version53 = refType49.Version; reutrnList.Add( new StructureReferenceImpl( agencyId51, maintId52, version53, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Process))); } } } if (queryStructureRequests.ReportingTaxonomyRef != null) { /* foreach */ foreach (ReportingTaxonomyRefType refType54 in queryStructureRequests.ReportingTaxonomyRef) { var urn55 = refType54.URN; if (ObjectUtil.ValidString(urn55)) { reutrnList.Add(new StructureReferenceImpl(urn55)); } else { string agencyId56 = refType54.AgencyID; string maintId57 = refType54.ReportingTaxonomyID; string version58 = refType54.Version; reutrnList.Add( new StructureReferenceImpl( agencyId56, maintId57, version58, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.ReportingTaxonomy))); } } } if (queryStructureRequests.StructureSetRef != null) { /* foreach */ foreach (StructureSetRefType refType59 in queryStructureRequests.StructureSetRef) { var urn60 = refType59.URN; if (ObjectUtil.ValidString(urn60)) { reutrnList.Add(new StructureReferenceImpl(urn60)); } else { string agencyId61 = refType59.AgencyID; string maintId62 = refType59.StructureSetID; string version63 = refType59.Version; reutrnList.Add( new StructureReferenceImpl( agencyId61, maintId62, version63, SdmxStructureType.GetFromEnum(SdmxStructureEnumType.StructureSet))); } } } return reutrnList; }
/// <summary> /// Builds a list of structure references from a version 2.0 registry query structure request message /// </summary> /// <param name="queryStructureRequests"> /// The Query Structure Request (SDMX Registry Interface v2.0) /// </param> /// <returns> /// list of structure references /// </returns> public virtual IList<IStructureReference> Build(QueryStructureRequestType queryStructureRequests) { return this._queryBuilderV2.Build(queryStructureRequests); }