From be97645bf0a5e97f35bc487b77471208272217e4 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Mon, 24 Feb 2020 12:12:53 +0200 Subject: [PATCH] When creating a new zenodo version keep only the latest version file (ref #221) --- .../managers/DataManagementPlanManager.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 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 a76b6e900..c6035f95f 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 @@ -1310,7 +1310,20 @@ public class DataManagementPlanManager { createResponse = restTemplate.getForObject(latestDraftUrl, Map.class); links = (LinkedHashMap) createResponse.get("links"); String updateUrl = links.get("self") + "?access_token=" + this.environment.getProperty("zenodo.access_token"); - restTemplate.put(updateUrl, request); + try { + restTemplate.put(updateUrl, request); + String fileListUrl = links.get("latest_draft") + "/files" + "?access_token=" + this.environment.getProperty("zenodo.access_token"); + //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; + } } // Second step, add the file to the entry. @@ -1318,7 +1331,7 @@ public class DataManagementPlanManager { fileHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); LinkedMultiValueMap addFileMap = new LinkedMultiValueMap<>(); - File file = getWordDocument(id.toString(), principal, configLoader, true); + File file = getWordDocument(id.toString(), principal, configLoader); addFileMap.add("filename", file.getName()); FileSystemResource fileSystemResource = new FileSystemResource(file); addFileMap.add("file", fileSystemResource);