From 2276a875ecfbb084dc1a927656e4ae69add30dd5 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Wed, 5 Jun 2019 16:40:47 +0300 Subject: [PATCH] Fixes bug on DMP pdf and doc export not deleting the documents created in memory. --- .../web/src/main/java/eu/eudat/controllers/DMPs.java | 7 ++++++- .../java/eu/eudat/controllers/DatasetWizardController.java | 5 ++++- .../main/java/eu/eudat/logic/managers/DatasetManager.java | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java index 2ce1d7161..efe77f2f2 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java @@ -42,6 +42,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.util.List; import java.util.Map; import java.util.UUID; @@ -168,7 +169,8 @@ public class DMPs extends BaseController { ResponseEntity getPDFDocument(@PathVariable String id, @RequestHeader("Content-Type") String contentType) throws IllegalAccessException, IOException, InstantiationException, InterruptedException { System.out.println(contentType); File file = this.dataManagementPlanManager.getWordDocument(id); - File pdffile = datasetManager.convertToPDF(file, environment, file.getName()); + String name = file.getName().substring(0, file.getName().length() - 5); + File pdffile = datasetManager.convertToPDF(file, environment, name); InputStream resource = new FileInputStream(pdffile); System.out.println("Mime Type of " + file.getName() + " is " + new MimetypesFileTypeMap().getContentType(file)); @@ -180,6 +182,9 @@ public class DMPs extends BaseController { responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); byte[] content = org.apache.poi.util.IOUtils.toByteArray(resource); + resource.close(); + Files.deleteIfExists(file.toPath()); + Files.deleteIfExists(pdffile.toPath()); return new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java index e3184cbf8..b73387817 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java @@ -33,6 +33,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.util.List; import java.util.UUID; @@ -88,8 +89,10 @@ public class DatasetWizardController extends BaseController { responseHeaders.set("Content-Disposition", "attachment;filename=" + file.getName()); responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); - byte[] content = IOUtils.toByteArray(resource); + byte[] content = IOUtils.toByteArray(resource); + resource.close(); + Files.deleteIfExists(file.toPath()); return new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index 26a57542a..afbf00276 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -284,6 +284,7 @@ public class DatasetManager { File resultPdf = new File(environment.getProperty("configuration.exportUrl") + label + ".pdf"); FileOutputStream output = new FileOutputStream(resultPdf); IOUtils.write(queueResult, output); + output.close(); return resultPdf; }