From acca3bf411254414b85d3e0e8e4ce31de7c60967 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Mon, 24 Feb 2020 11:37:54 +0200 Subject: [PATCH] When creating a new version on zenodo update also it's metadata in order to corespond to the current DMP version (ref #221) --- .../managers/DataManagementPlanManager.java | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) 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 c4a9e7dbd..a76b6e900 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 @@ -343,7 +343,7 @@ public class DataManagementPlanManager { String fileName = ""; if (versioned) { - fileName = dmpEntity.getLabel() + "_v" + dmpEntity.getVersion(); + fileName = dmpEntity.getLabel() + " v" + dmpEntity.getVersion(); } else { fileName = dmpEntity.getLabel(); } @@ -1289,16 +1289,18 @@ public class DataManagementPlanManager { "}"; HttpEntity request = new HttpEntity<>(createData, headers); Map createResponse = null; + LinkedHashMap links = null; if (dmp.getVersion() == 0) { String createUrl = this.environment.getProperty("zenodo.url") + "deposit/depositions" + "?access_token=" + this.environment.getProperty("zenodo.access_token"); createResponse = restTemplate.postForObject(createUrl, request, Map.class); + links = (LinkedHashMap) createResponse.get("links"); } else { //It requires more than one step to create a new version //First, get the deposit related to the concept DOI String listUrl = this.environment.getProperty("zenodo.url") + "deposit/depositions" + "?q=conceptdoi:\"" + this.getPreviousDOI(dmp.getGroupId(), dmp.getId()) + "\"&access_token=" + this.environment.getProperty("zenodo.access_token"); ResponseEntity listResponses = restTemplate.getForEntity(listUrl, Map[].class); createResponse = listResponses.getBody()[0]; - LinkedHashMap links = (LinkedHashMap) createResponse.get("links"); + links = (LinkedHashMap) createResponse.get("links"); //Second, make the new version (not in the links?) String newVersionUrl = links.get("self") + "/actions/newversion" + "?access_token=" + this.environment.getProperty("zenodo.access_token"); createResponse = restTemplate.postForObject(newVersionUrl, null, Map.class); @@ -1306,20 +1308,9 @@ public class DataManagementPlanManager { //Third, get the new deposit String latestDraftUrl = links.get("latest_draft") + "?access_token=" + this.environment.getProperty("zenodo.access_token"); createResponse = restTemplate.getForObject(latestDraftUrl, Map.class); - /* String fileListUrl = links.get("latest_draft") + "/files" + "?access_token=" + this.environment.getProperty("zenodo.access_token"); - try { - //And finally remove pre-existing files from it - ResponseEntity fileListResponse = restTemplate.getForEntity(fileListUrl, Map[].class); - for (Map file : fileListResponse.getBody()) { - String fileDeleteUrl = links.get("latest_draft") + "/files/" + file.get("id") + "?access_token=" + this.environment.getProperty("zenodo.access_token"); - restTemplate.delete(fileDeleteUrl); - } - }catch (Exception e) { - //In case the last step fail delete the latest Deposit it in order to create a new one (only one at a time is allowed) - restTemplate.delete(latestDraftUrl); - throw e; - }*/ - + links = (LinkedHashMap) createResponse.get("links"); + String updateUrl = links.get("self") + "?access_token=" + this.environment.getProperty("zenodo.access_token"); + restTemplate.put(updateUrl, request); } // Second step, add the file to the entry. @@ -1333,7 +1324,6 @@ public class DataManagementPlanManager { addFileMap.add("file", fileSystemResource); HttpEntity> addFileMapRequest = new HttpEntity<>(addFileMap, fileHeaders); - LinkedHashMap links = (LinkedHashMap) createResponse.get("links"); String addFileUrl = links.get("files") + "?access_token=" + this.environment.getProperty("zenodo.access_token"); ResponseEntity addFileResponse = restTemplate.postForEntity(addFileUrl, addFileMapRequest, String.class); Files.deleteIfExists(file.toPath());