diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetDistributionRDAExportModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetDistributionRDAExportModel.java index 067b1aa0f..0711822cb 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetDistributionRDAExportModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetDistributionRDAExportModel.java @@ -1,11 +1,13 @@ package eu.eudat.models.data.rda; +import com.fasterxml.jackson.annotation.JsonIgnore; + import java.util.List; public class DatasetDistributionRDAExportModel { private String access_url; private String available_till; - private int byte_size; + private String byte_size; private String data_access; // Allowed values: open / shared / closed private String description; private String download_url; @@ -28,10 +30,10 @@ public class DatasetDistributionRDAExportModel { this.available_till = available_till; } - public int getByte_size() { + public String getByte_size() { return byte_size; } - public void setByte_size(int byte_size) { + public void setByte_size(String byte_size) { this.byte_size = byte_size; } @@ -84,38 +86,8 @@ public class DatasetDistributionRDAExportModel { this.title = title; } - public DatasetDistributionRDAExportModel fromDataModel(String key, Object value) { - DatasetDistributionRDAExportModel distributionModel = new DatasetDistributionRDAExportModel(); - switch (key) { - case "access_url": - distributionModel.setAccess_url(value.toString()); - break; - case "available_till": - distributionModel.setAvailable_till(value.toString()); - break; - case "byte_size": - try { distributionModel.setByte_size(Integer.parseInt(value.toString())); } - catch (NumberFormatException e) { e.printStackTrace(); } - break; - case "data_access": - distributionModel.setData_access(value.toString()); - break; - case "description": - distributionModel.setDescription(value.toString()); - break; - case "download_url": - distributionModel.setDownload_url(value.toString()); - break; - case "format": - break; - case "host": - break; - case "license": - break; - case "title": - distributionModel.setTitle(value.toString()); - break; - } - return distributionModel; + @JsonIgnore + public boolean isValid() { + return title != null || data_access != null; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetRDAExportModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetRDAExportModel.java index 71705b859..15aa62aba 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetRDAExportModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/rda/DatasetRDAExportModel.java @@ -194,6 +194,9 @@ public class DatasetRDAExportModel { /*--------- Building data_quality_assurance. ---------*/ datasetRDAExportModel.setData_quality_assurance(buildDataQualityAssurance(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition())); + /*--------- Building distribution. ---------*/ + datasetRDAExportModel.setDistribution(buildDistribution(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition())); + /*--------- Building keywords. ---------*/ datasetRDAExportModel.setKeyword(buildKeywords(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition())); @@ -232,6 +235,32 @@ public class DatasetRDAExportModel { return dataQualityAssuranceList; } + private List buildDistribution(JSONObject datasetDescriptionJson, Map templateIdsToValues, String datasetProfileDefinition) { + DatasetDistributionRDAExportModel distributionModel = new DatasetDistributionRDAExportModel(); + distributionModel.setAccess_url(buildSingleProperties("dataset.distribution.access_url", datasetDescriptionJson, templateIdsToValues)); + distributionModel.setAvailable_till(buildSingleProperties("dataset.distribution.available_till", datasetDescriptionJson, templateIdsToValues)); + distributionModel.setByte_size(buildSingleProperties("dataset.distribution.byte_size", datasetDescriptionJson, templateIdsToValues)); + distributionModel.setData_access(buildSingleProperties("dataset.distribution.data_access", datasetDescriptionJson, templateIdsToValues)); + distributionModel.setDescription(buildSingleProperties("dataset.distribution.description", datasetDescriptionJson, templateIdsToValues)); + distributionModel.setDownload_url(buildSingleProperties("dataset.distribution.download_url", datasetDescriptionJson, templateIdsToValues)); + distributionModel.setTitle(buildSingleProperties("dataset.distribution.title", datasetDescriptionJson, templateIdsToValues)); + + /*--------- Building format. ---------*/ + + + // We currently support the return of only one distribution. + List distributionList = new LinkedList<>(); + if (distributionModel.isValid()) { + distributionList.add(distributionModel); + } else { + DatasetDistributionRDAExportModel model = new DatasetDistributionRDAExportModel(); + model.setDescription("Distribution data was not valid"); + distributionList.add(model); + } + + return distributionList; + } + private List buildKeywords(JSONObject datasetDescriptionJson, Map templateIdsToValues, String datasetProfileDefinition) { List keywordFields = getRDAFieldsFromJson(datasetDescriptionJson, new String[]{"dataset.keyword"}, datasetProfileDefinition); for (RdaField rdaField : keywordFields) {