diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index 28f76210b..1d1c9bec8 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -794,6 +794,7 @@ public class DataManagementPlanManager { }); UserInfo user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal.getId()); sendNotification(dmp, user, NotificationType.DMP_PUBLISH); + this.createZenodoDoi(dmp.getId(), principal, null); } public void makeFinalize(UUID id, Principal principal, DatasetsToBeFinalized datasetsToBeFinalized) throws Exception { @@ -1610,8 +1611,8 @@ public class DataManagementPlanManager { throw new Exception("User is not authorized to invoke this action"); if (!dmp.getStatus().equals(DMP.DMPStatus.FINALISED.getValue())) throw new Exception("DMP is not finalized"); - if (dmp.getDoi() != null) - throw new Exception("DMP already has a DOI"); + /*if (dmp.getDoi() != null) + throw new Exception("DMP already has a DOI");*/ String zenodoToken = ""; try { @@ -1626,18 +1627,51 @@ public class DataManagementPlanManager { HttpHeaders headers = new HttpHeaders(); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); headers.setContentType(MediaType.APPLICATION_JSON); - String createData = "{\n" + - " \"metadata\": {\n" + - " \"title\": \"" + dmp.getLabel() + "\",\n" + - " \"upload_type\": \"publication\",\n" + - " \"publication_type\": \"datamanagementplan\",\n" + - " \"description\": \"" + (dmp.getDescription() != null && !dmp.getDescription().isEmpty() ? dmp.getDescription() : "
") + "\",\n" + - " \"version\": \"" + dmp.getVersion() + "\",\n" + - " \"creators\": [{\n" + - " \t\t\"name\": \"" + dmp.getUsers().stream().filter(userDMP -> userDMP.getRole().equals(UserDMP.UserDMPRoles.OWNER.getValue())).findFirst().get().getUser().getName() + "\",\n" + - " \t\t\"affiliation\": \"OpenDMP\"}]\n" + - " }\n" + - "}"; + String createData = null; + StringBuilder dataBuilder = new StringBuilder(); + dataBuilder.append("{\n \"metadata\": {\n"); + dataBuilder.append( " \"title\": \"").append(dmp.getLabel()).append("\",\n"); + dataBuilder.append(" \"upload_type\": \"publication\",\n"); + dataBuilder.append(" \"publication_type\": \"datamanagementplan\",\n"); + dataBuilder.append(" \"description\": \"").append((dmp.getDescription() != null && !dmp.getDescription().isEmpty() ? dmp.getDescription() : "")).append("\",\n"); + dataBuilder.append(" \"version\": \"").append(dmp.getVersion()).append("\",\n"); + dataBuilder.append(" \"related_identifiers\": [{\n"); + dataBuilder.append(" \t\t\"identifier\": \"").append((this.environment.getProperty("dmp.domain") + "/explore-plans/publicOverview/" + id.toString())).append("\",\n"); + dataBuilder.append(" \t\t\"relation\": \"isIdenticalTo\"}],\n"); + dataBuilder.append(" \"contributors\": ["); + int i = 0; + for(UserDMP userDMP: dmp.getUsers()) { + if (i > 0) { + dataBuilder.append(",\n"); + } + dataBuilder.append("{\n"); + dataBuilder.append(" \t\t\"name\": \"").append(userDMP.getUser().getName()).append("\",\n"); + dataBuilder.append(" \t\t\"type\": \"").append("ProjectMember").append("\",\n"); + dataBuilder.append(" \t\t\"affiliation\": \"OpenDMP\"\n}"); + i++; + } + for(Researcher researcher: dmp.getResearchers()) { + if (i > 0) { + dataBuilder.append(",\n"); + } + dataBuilder.append("{\n"); + dataBuilder.append(" \t\t\"name\": \"").append(researcher.getLabel()).append("\",\n"); + dataBuilder.append(" \t\t\"type\": \"").append("Researcher").append("\",\n"); + String referenceHead = researcher.getReference().split(":")[0]; + String referenceTail = researcher.getReference().replace(referenceHead + ":", ""); + dataBuilder.append(" \t\t\"affiliation\": \"" + referenceHead + "\""); + if (referenceHead.toUpperCase().equals("ORCID")) { + dataBuilder.append(",\n \t\t\"orcid\": \"" + referenceTail + "\""); + } + dataBuilder.append("\n}"); + i++; + } + dataBuilder.append("],\n"); + dataBuilder.append(" \"creators\": [{\n"); + dataBuilder.append(" \t\t\"name\": \"").append(dmp.getUsers().stream().filter(userDMP -> userDMP.getRole().equals(UserDMP.UserDMPRoles.OWNER.getValue())).findFirst().get().getUser().getName()).append("\",\n"); + dataBuilder.append(" \t\t\"affiliation\": \"OpenDMP\"}]\n"); + dataBuilder.append(" }\n").append("}"); + createData = dataBuilder.toString(); JsonNode createDataJSON = new ObjectMapper().readTree(createData); HttpEntity