in SdmxStructureParser/src/main/java/org/sdmxsource/sdmx/structureparser/builder/xmlBeans/v2/StructureXmlBeanBuilder.java [99:264]
public StructureDocument build(SdmxBeans buildFrom) throws SdmxException {
StructureDocument doc = StructureDocument.Factory.newInstance();
StructureType returnType = doc.addNewStructure();
// HEADER
HeaderType headerType = null;
if (buildFrom.getHeader() != null) {
headerType = structureHeaderXmlBeanBuilder.build(buildFrom.getHeader());
returnType.setHeader(headerType);
} else {
headerType = returnType.addNewHeader();
V2Helper.setHeader(headerType, buildFrom);
}
// TOP LEVEL STRUCTURES ELEMENT
Set<CategorisationBean> categorisations = buildFrom.getCategorisations();
//GET CATEGORY SCHEMES
if (buildFrom.getCategorySchemes().size() > 0) {
CategorySchemesType catSchemesType = returnType.addNewCategorySchemes();
for (CategorySchemeBean cateogrySchemeBean : buildFrom.getCategorySchemes()) {
Set<CategorisationBean> matchingCategorisations = new HashSet<CategorisationBean>();
for (CategorisationBean cat : categorisations) {
if (cat.isExternalReference().isTrue()) {
continue;
}
if (MaintainableUtil.match(cateogrySchemeBean, cat.getCategoryReference())) {
matchingCategorisations.add(cat);
}
}
catSchemesType.getCategorySchemeList().add(build(cateogrySchemeBean, categorisations));
}
}
//GET CODELISTS
if (buildFrom.getCodelists().size() > 0) {
CodeListsType codeListsType = returnType.addNewCodeLists();
for (CodelistBean codelistBean : buildFrom.getCodelists()) {
codeListsType.getCodeListList().add(build(codelistBean));
}
}
//CONCEPT SCHEMES
if (buildFrom.getConceptSchemes().size() > 0) {
ConceptsType conceptsType = returnType.addNewConcepts();
for (ConceptSchemeBean conceptSchemeBean : buildFrom.getConceptSchemes()) {
conceptsType.getConceptSchemeList().add(build(conceptSchemeBean));
}
}
//DATAFLOWS
if (buildFrom.getDataflows().size() > 0) {
DataflowsType dataflowsType = returnType.addNewDataflows();
for (DataflowBean currentBean : buildFrom.getDataflows()) {
dataflowsType.getDataflowList().add(build(currentBean, getCategorisations(currentBean, categorisations)));
}
}
//HIERARCIC CODELIST
if (buildFrom.getHierarchicalCodelists().size() > 0) {
HierarchicalCodelistsType hierarchicalCodelistsType = returnType.addNewHierarchicalCodelists();
for (HierarchicalCodelistBean currentBean : buildFrom.getHierarchicalCodelists()) {
hierarchicalCodelistsType.getHierarchicalCodelistList().add(build(currentBean));
}
}
//KEY FAMILY
if (buildFrom.getDataStructures().size() > 0) {
KeyFamiliesType keyFamiliesType = returnType.addNewKeyFamilies();
for (DataStructureBean currentBean : buildFrom.getDataStructures()) {
keyFamiliesType.getKeyFamilyList().add(build(currentBean));
}
}
//METADATA FLOW
if (buildFrom.getMetadataflows().size() > 0) {
MetadataflowsType metadataflowsType = returnType.addNewMetadataflows();
for (MetadataFlowBean currentBean : buildFrom.getMetadataflows()) {
metadataflowsType.getMetadataflowList().add(build(currentBean, getCategorisations(currentBean, categorisations)));
}
}
//METADATA STRUCTURE
if (buildFrom.getMetadataStructures().size() > 0) {
MetadataStructureDefinitionsType msdsType = returnType.addNewMetadataStructureDefinitions();
for (MetadataStructureDefinitionBean currentBean : buildFrom.getMetadataStructures()) {
msdsType.getMetadataStructureDefinitionList().add(build(currentBean));
}
}
//ORGAISATION SCHEME
if (buildFrom.getOrganisationUnitSchemes().size() > 0) {
throw new SdmxNotImplementedException(ExceptionCode.UNSUPPORTED, SDMX_STRUCTURE_TYPE.ORGANISATION_UNIT_SCHEME.getType());
}
OrganisationSchemesType orgSchemesType = null;
//AGENCY SCHEMES
if (buildFrom.getAgenciesSchemes().size() > 0) {
orgSchemesType = returnType.addNewOrganisationSchemes();
for (AgencySchemeBean currentBean : buildFrom.getAgenciesSchemes()) {
orgSchemesType.getOrganisationSchemeList().add(organisationSchemeXmlBeanBuilder.build(currentBean));
}
}
//DATA CONSUMER SCHEMES
if (buildFrom.getDataConsumerSchemes().size() > 0) {
if (orgSchemesType == null) {
orgSchemesType = returnType.addNewOrganisationSchemes();
}
for (DataConsumerSchemeBean currentBean : buildFrom.getDataConsumerSchemes()) {
orgSchemesType.getOrganisationSchemeList().add(organisationSchemeXmlBeanBuilder.build(currentBean));
}
}
//DATA PROVIDER SCHEMES
if (buildFrom.getDataProviderSchemes().size() > 0) {
if (orgSchemesType == null) {
orgSchemesType = returnType.addNewOrganisationSchemes();
}
for (DataProviderSchemeBean currentBean : buildFrom.getDataProviderSchemes()) {
orgSchemesType.getOrganisationSchemeList().add(organisationSchemeXmlBeanBuilder.build(currentBean));
}
}
//PROCESSES
if (buildFrom.getProcesses().size() > 0) {
ProcessesType processesType = returnType.addNewProcesses();
for (ProcessBean currentBean : buildFrom.getProcesses()) {
processesType.getProcessList().add(build(currentBean));
}
}
//STRUCTURE SETS
if (buildFrom.getStructureSets().size() > 0) {
StructureSetsType structureSetsType = returnType.addNewStructureSets();
for (StructureSetBean currentBean : buildFrom.getStructureSets()) {
structureSetsType.getStructureSetList().add(build(currentBean));
}
}
//REPORTING TAXONOMIES
if (buildFrom.getReportingTaxonomys().size() > 0) {
ReportingTaxonomiesType reportingTaxonomiesType = returnType.addNewReportingTaxonomies();
for (ReportingTaxonomyBean currentBean : buildFrom.getReportingTaxonomys()) {
reportingTaxonomiesType.getReportingTaxonomyList().add(build(currentBean));
}
}
if (buildFrom.getAttachmentConstraints().size() > 0) {
throw new SdmxNotImplementedException(ExceptionCode.UNSUPPORTED, "Attachment Constraint at SMDX v2.0 - please use SDMX v2.1");
}
if (buildFrom.getContentConstraintBeans().size() > 0) {
throw new SdmxNotImplementedException(ExceptionCode.UNSUPPORTED, "Content Constraint at SMDX v2.0 - please use SDMX v2.1");
}
if (buildFrom.getMetadataStructures().size() > 0) {
throw new SdmxNotImplementedException(ExceptionCode.UNSUPPORTED, "Metadata Structure Definition at SMDX v2.0 - please use SDMX v2.1");
}
return doc;
}