public RegistryInterfaceDocument buildSuccessResponse()

in SdmxStructureParser/src/main/java/org/sdmxsource/sdmx/structureparser/builder/xmlBeans/registry/response/impl/v2/QueryStructureResponseBuilderV2.java [142:314]


    public RegistryInterfaceDocument buildSuccessResponse(SdmxBeans beans, String warningMessage) throws SdmxException {
        RegistryInterfaceDocument responseType = RegistryInterfaceDocument.Factory.newInstance();


        RegistryInterfaceType regInterface = responseType.addNewRegistryInterface();
        QueryStructureResponseType returnType = regInterface.addNewQueryStructureResponse();

        HeaderType headerType = null;

        if (beans.getHeader() != null) {
            headerType = headerXmlBeansBuilder.build(beans.getHeader());
            regInterface.setHeader(headerType);
        } else {
            headerType = regInterface.addNewHeader();
            V2Helper.setHeader(headerType, beans);
        }

        StatusMessageType statusMessage = returnType.addNewStatusMessage();


        if (ObjectUtil.validString(warningMessage) || !ObjectUtil.validCollection(beans.getAllMaintainables())) {
            statusMessage.setStatus(StatusType.WARNING);
            TextType tt = statusMessage.addNewMessageText();
            if (ObjectUtil.validString(warningMessage)) {
                tt.setStringValue(warningMessage);
            } else {
                tt.setStringValue("No Structures Match The Query Parameters");
            }
        } else {
            statusMessage.setStatus(StatusType.SUCCESS);
        }

        Set<CategorisationBean> categorisations = beans.getCategorisations();
        //GET CATEGORY SCHEMES
        if (beans.getCategorySchemes().size() > 0) {
            CategorySchemesType catSchemesType = returnType.addNewCategorySchemes();
            for (CategorySchemeBean cateogrySchemeBean : beans.getCategorySchemes()) {
                Set<CategorisationBean> matchingCategorisations = new HashSet<CategorisationBean>();
                for (CategorisationBean cat : categorisations) {
                    if (MaintainableUtil.match(cateogrySchemeBean, cat.getCategoryReference())) {
                        matchingCategorisations.add(cat);
                    }
                }
                catSchemesType.getCategorySchemeList().add(categorySchemeXmlBeanBuilder.build(cateogrySchemeBean, categorisations));
            }
        }


        //GET CODELISTS
        if (beans.getCodelists().size() > 0) {
            CodeListsType codeListsType = returnType.addNewCodeLists();
            for (CodelistBean codelistBean : beans.getCodelists()) {
                codeListsType.getCodeListList().add(codelistXmlBeanBuilder.build(codelistBean));
            }
        }


        //CONCEPT SCHEMES
        if (beans.getConceptSchemes().size() > 0) {
            ConceptsType conceptsType = returnType.addNewConcepts();
            for (ConceptSchemeBean conceptSchemeBean : beans.getConceptSchemes()) {
                conceptsType.getConceptSchemeList().add(conceptSchemeXmlBeanBuilder.build(conceptSchemeBean));
            }
        }


        //DATAFLOWS
        if (beans.getDataflows().size() > 0) {
            DataflowsType dataflowsType = returnType.addNewDataflows();
            for (DataflowBean currentBean : beans.getDataflows()) {
                dataflowsType.getDataflowList().add(dataflowXmlBeanBuilder.build(currentBean, getCategorisations(currentBean, categorisations)));
            }
        }


        //HIERARCIC CODELIST
        if (beans.getHierarchicalCodelists().size() > 0) {
            HierarchicalCodelistsType hierarchicalCodelistsType = returnType.addNewHierarchicalCodelists();
            for (HierarchicalCodelistBean currentBean : beans.getHierarchicalCodelists()) {
                hierarchicalCodelistsType.getHierarchicalCodelistList().add(hierarchicalCodelistXmlBeanBuilder.build(currentBean));
            }
        }


        //KEY FAMILY
        if (beans.getDataStructures().size() > 0) {
            KeyFamiliesType keyFamiliesType = returnType.addNewKeyFamilies();
            for (DataStructureBean currentBean : beans.getDataStructures()) {
                keyFamiliesType.getKeyFamilyList().add(dataStructureXmlBeanBuilder.build(currentBean));
            }
        }


        //METADATA FLOW
        if (beans.getMetadataflows().size() > 0) {
            MetadataflowsType metadataflowsType = returnType.addNewMetadataflows();
            for (MetadataFlowBean currentBean : beans.getMetadataflows()) {
                metadataflowsType.getMetadataflowList().add(metadataflowXmlBeanBuilder.build(currentBean, getCategorisations(currentBean, categorisations)));
            }
        }

        //METADATA STRUCTURE
        if (beans.getMetadataStructures().size() > 0) {
            MetadataStructureDefinitionsType msdsType = returnType.addNewMetadataStructureDefinitions();
            for (MetadataStructureDefinitionBean currentBean : beans.getMetadataStructures()) {
                msdsType.getMetadataStructureDefinitionList().add(metadataStructureDefinitionXmlBeansBuilder.build(currentBean));
            }
        }
        OrganisationSchemesType orgSchemesType = null;
        //AGENCY SCHEMES
        if (beans.getAgenciesSchemes().size() > 0) {
            if (orgSchemesType == null) {
                orgSchemesType = returnType.addNewOrganisationSchemes();
            }
            for (AgencySchemeBean currentBean : beans.getAgenciesSchemes()) {
                orgSchemesType.getOrganisationSchemeList().add(organisationSchemeXmlBeanBuilder.build(currentBean));
            }
        }

        //DATA CONSUMER SCHEMES
        if (beans.getDataConsumerSchemes().size() > 0) {
            if (orgSchemesType == null) {
                orgSchemesType = returnType.addNewOrganisationSchemes();
            }
            for (DataConsumerSchemeBean currentBean : beans.getDataConsumerSchemes()) {
                orgSchemesType.getOrganisationSchemeList().add(organisationSchemeXmlBeanBuilder.build(currentBean));
            }
        }

        //DATA PROVIDER SCHEMES
        if (beans.getDataProviderSchemes().size() > 0) {
            if (orgSchemesType == null) {
                orgSchemesType = returnType.addNewOrganisationSchemes();
            }
            for (DataProviderSchemeBean currentBean : beans.getDataProviderSchemes()) {
                orgSchemesType.getOrganisationSchemeList().add(organisationSchemeXmlBeanBuilder.build(currentBean));
            }
        }

        //PROCESSES
        if (beans.getProcesses().size() > 0) {
            ProcessesType processesType = returnType.addNewProcesses();
            for (ProcessBean currentBean : beans.getProcesses()) {
                processesType.getProcessList().add(processXmlBeanBuilder.build(currentBean));
            }
        }

        //STRUCTURE SETS
        if (beans.getStructureSets().size() > 0) {
            StructureSetsType structureSetsType = returnType.addNewStructureSets();
            for (StructureSetBean currentBean : beans.getStructureSets()) {
                structureSetsType.getStructureSetList().add(structureSetXmlBeanBuilder.build(currentBean));
            }
        }

        //REPORTING TAXONOMIES
        if (beans.getReportingTaxonomys().size() > 0) {
            ReportingTaxonomiesType reportingTaxonomiesType = returnType.addNewReportingTaxonomies();
            for (ReportingTaxonomyBean currentBean : beans.getReportingTaxonomys()) {
                reportingTaxonomiesType.getReportingTaxonomyList().add(reportingTaxonomyXmlBeanBuilder.build(currentBean));
            }
        }
        if (beans.getAttachmentConstraints().size() > 0) {
            throw new SdmxNotImplementedException(ExceptionCode.UNSUPPORTED, "Attachment Constraint at SMDX v2.0 - please use SDMX v2.1");
        }
        if (beans.getContentConstraintBeans().size() > 0) {
            throw new SdmxNotImplementedException(ExceptionCode.UNSUPPORTED, "Content Constraint at SMDX v2.0 - please use SDMX v2.1");
        }
        if (beans.getMetadataStructures().size() > 0) {
            throw new SdmxNotImplementedException(ExceptionCode.UNSUPPORTED, "Metadata Structure Definition at SMDX v2.0 - please use SDMX v2.1");
        }
        return responseType;
    }