From cd4bb94976f0f282c66cce84b7f1132cbc53f7f7 Mon Sep 17 00:00:00 2001 From: Aldo Mihasi Date: Mon, 27 Mar 2023 14:48:08 +0300 Subject: [PATCH] changes in dmp deposit model --- .../interfaces/CkanDeposit.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/eudat/depositinterface/ckanrepository/interfaces/CkanDeposit.java b/src/main/java/eu/eudat/depositinterface/ckanrepository/interfaces/CkanDeposit.java index 8b62584..38edeb8 100644 --- a/src/main/java/eu/eudat/depositinterface/ckanrepository/interfaces/CkanDeposit.java +++ b/src/main/java/eu/eudat/depositinterface/ckanrepository/interfaces/CkanDeposit.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import eu.eudat.depositinterface.ckanrepository.config.CkanConfig; import eu.eudat.depositinterface.ckanrepository.config.ConfigLoader; import eu.eudat.depositinterface.models.DMPDepositModel; +import eu.eudat.depositinterface.models.FileEnvelope; import eu.eudat.depositinterface.repository.RepositoryDeposit; import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; import org.json.JSONObject; @@ -121,14 +122,26 @@ public class CkanDeposit implements RepositoryDeposit { } private void uploadFiles(DMPDepositModel dmpDepositModel, String id) throws IOException { - this.uploadFile(dmpDepositModel.getPdfFileName(), dmpDepositModel.getPdfFile(), id); + this.uploadFile(dmpDepositModel.getPdfFile().getFilename(), dmpDepositModel.getPdfFile().getFile(), id); - String contentDisposition = dmpDepositModel.getRdaJson().getHeaders().get("Content-Disposition").get(0); + FileEnvelope rdaJsonEnvelope = dmpDepositModel.getRdaJsonFile(); + HttpHeaders responseHeaders = new HttpHeaders(); + responseHeaders.setContentLength(rdaJsonEnvelope.getFile().length()); + responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); + responseHeaders.set("Content-Disposition", "attachment;filename=" + rdaJsonEnvelope.getFilename()); + responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); + responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); + + byte[] content = Files.readAllBytes(rdaJsonEnvelope.getFile().toPath()); + + ResponseEntity jsonFile = new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); + + String contentDisposition = jsonFile.getHeaders().get("Content-Disposition").get(0); String jsonFileName = contentDisposition.substring(contentDisposition.lastIndexOf('=') + 1); File rdaJson = new File(this.environment.getProperty("storage.temp") + jsonFileName); OutputStream output = new FileOutputStream(rdaJson); try { - output.write(Objects.requireNonNull(dmpDepositModel.getRdaJson().getBody())); + output.write(Objects.requireNonNull(jsonFile.getBody())); output.flush(); output.close(); } catch (IOException e) {