When creating a new version on zenodo update also it's metadata in order to corespond to the current DMP version (ref #221)

This commit is contained in:
George Kalampokis 2020-02-24 11:37:54 +02:00
parent 0d59cce33c
commit acca3bf411
1 changed files with 7 additions and 17 deletions

View File

@ -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<String> request = new HttpEntity<>(createData, headers);
Map createResponse = null;
LinkedHashMap<String, String> 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<String, String>) 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<Map[]> listResponses = restTemplate.getForEntity(listUrl, Map[].class);
createResponse = listResponses.getBody()[0];
LinkedHashMap<String, String> links = (LinkedHashMap<String, String>) createResponse.get("links");
links = (LinkedHashMap<String, String>) 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<Map[]> 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<String, String>) 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<MultiValueMap<String, Object>> addFileMapRequest = new HttpEntity<>(addFileMap, fileHeaders);
LinkedHashMap<String, String> links = (LinkedHashMap<String, String>) createResponse.get("links");
String addFileUrl = links.get("files") + "?access_token=" + this.environment.getProperty("zenodo.access_token");
ResponseEntity<String> addFileResponse = restTemplate.postForEntity(addFileUrl, addFileMapRequest, String.class);
Files.deleteIfExists(file.toPath());