diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java b/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java index 8ae2da143..080f1c426 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java @@ -20,9 +20,12 @@ import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel; import eu.eudat.models.data.datasetprofile.RenderStyle; import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; +import org.json.JSONObject; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -67,6 +70,11 @@ public class PrefillingMapper { //GK: Tags Special logic if (!value.equals("null") && prefillingMapping.getTarget().equals("tags")) { value = mapper.valueToTree(parseTags(value)).toString(); + List nodes = JsonSearcher.findNodes(parentNode, "rdaProperty", "dataset.keyword"); + for (JsonNode node: nodes) { + String id = node.get(0) != null ? node.get(0).get("id").asText() : node.get("id").asText(); + properties.put(id, value); + } } setterMethod.invoke(datasetWizardModel, mapper.readValue(value, params[0])); }catch (InvocationTargetException | IllegalAccessException | JsonProcessingException e) { @@ -74,12 +82,6 @@ public class PrefillingMapper { } } else { List nodes = JsonSearcher.findNodes(parentNode, "rdaProperty", prefillingMapping.getMaDmpTarget()); - /*if(prefillingMapping.getMaDmpTarget().equals("dataset.distribution.available_until") && !value.equals("null")){ - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd"); - LocalDate date = LocalDate.parse(value.replace("\"", ""), formatter); - date = date.plusYears(20); - value = date.toString(); - }*/ String trimRegex = prefillingMapping.getTrimRegex() != null ? prefillingMapping.getTrimRegex() : ""; if (!value.startsWith("\"") && !value.startsWith("[") && !value.equals("null")) { value = "\"" + value + "\""; @@ -112,7 +114,27 @@ public class PrefillingMapper { case COMBO_BOX: if (parsedValues.isEmpty()) parsedValues.add(parsedValue); - properties.put(id, parseComboBoxValues(node, parsedValues)); + if(prefillingMapping.getMaDmpTarget().equals("dataset.distribution.data_access")){ + if(parsedValue != null && parsedValue.equals("open")){ + properties.put(id, parsedValue); + List issuedNodes = JsonSearcher.findNodes(parentNode, "rdaProperty", "dataset.issued"); + String issuedIdNode = issuedNodes.get(0).get("id").asText(); + String issuedValue = (String)properties.get(issuedIdNode); + List licStartDateNodes = JsonSearcher.findNodes(parentNode, "rdaProperty", "dataset.distribution.license.start_date"); + for (JsonNode licStartDateNode: licStartDateNodes) { + String licStartDateId = licStartDateNode.get(0) != null ? licStartDateNode.get(0).get("id").asText() : licStartDateNode.get("id").asText(); + properties.put(licStartDateId, issuedValue); + } + } + else if(parsedValue != null && parsedValue.equals("restricted")){ + properties.put(id, "shared"); + } + else{ + properties.put(id, "closed"); + } + } + else + properties.put(id, parseComboBoxValues(node, parsedValues)); break; case TAGS: properties.put(id, parseTags(parsedValue)); @@ -120,22 +142,25 @@ public class PrefillingMapper { default: if (!parsedValues.isEmpty()) properties.put(id, String.join(", ", parsedValues)); - else - properties.put(id, parsedValue); + else { + if (prefillingMapping.getMaDmpTarget().equals("dataset.dataset_id")) { + JSONObject datasetID = new JSONObject(); + datasetID.put("identifier", parsedValue); + datasetID.put("type", "doi"); + properties.put(id, datasetID.toString()); + } + else { + if (prefillingMapping.getMaDmpTarget().equals("dataset.distribution.available_until") && parsedValue != null && !parsedValue.equals("null")) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd"); + LocalDate date = LocalDate.parse(parsedValue, formatter); + date = date.plusYears(20); + parsedValue = date.toString(); + } + properties.put(id, parsedValue); + } + } break; } - /*if(prefillingMapping.getMaDmpTarget().equals("dataset.distribution.data_access")){ - value = value.replace("\"", ""); - if(value.equals("open")){ - properties.put(id, value); - } - else if(value.equals("restricted")){ - properties.put(id, "shared"); - } - else{ - properties.put(id, "closed"); - } - }*/ } } } diff --git a/dmp-backend/web/src/main/resources/externalUrls/ExternalUrls.xml b/dmp-backend/web/src/main/resources/externalUrls/ExternalUrls.xml index 59feb1b92..c84171c14 100644 --- a/dmp-backend/web/src/main/resources/externalUrls/ExternalUrls.xml +++ b/dmp-backend/web/src/main/resources/externalUrls/ExternalUrls.xml @@ -1187,16 +1187,26 @@ but not - - + + + + + + + + + + + +