From 71ccd768967874ef546c1184326a49a34d497299 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Thu, 2 Apr 2020 17:22:41 +0300 Subject: [PATCH] Fixed and improved file export system --- .../main/java/eu/eudat/controllers/DMPs.java | 15 +++--- .../controllers/DatasetWizardController.java | 26 +++++----- .../managers/DataManagementPlanManager.java | 48 +++++++++++-------- .../DataManagementProfileManager.java | 7 ++- .../eudat/logic/managers/DatasetManager.java | 28 ++++++----- .../logic/managers/DatasetProfileManager.java | 12 ++--- .../ExportXmlBuilderDatasetProfile.java | 5 +- .../dmpXml/ExportXmlBuilderDmpProfile.java | 5 +- 8 files changed, 83 insertions(+), 63 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 777537751..109ff34c2 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 @@ -19,6 +19,7 @@ import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.logic.security.claims.ClaimedAuthorities; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.operations.DatabaseRepository; +import eu.eudat.logic.utilities.documents.helpers.FileEnvelope; import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel; import eu.eudat.models.data.datasetwizard.DatasetsToBeFinalized; import eu.eudat.models.data.dmp.DataManagementPlan; @@ -209,22 +210,22 @@ public class DMPs extends BaseController { public @ResponseBody ResponseEntity getPDFDocument(@PathVariable String id, @RequestHeader("Content-Type") String contentType, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws IllegalAccessException, IOException, InstantiationException, InterruptedException { - File file = this.dataManagementPlanManager.getWordDocument(id, principal, configLoader); - String name = file.getName().substring(0, file.getName().length() - 5); - File pdffile = datasetManager.convertToPDF(file, environment, name); + FileEnvelope file = this.dataManagementPlanManager.getWordDocument(id, principal, configLoader); + String name = file.getFilename().substring(0, file.getFilename().length() - 5); + File pdffile = datasetManager.convertToPDF(file, environment); InputStream resource = new FileInputStream(pdffile); - logger.info("Mime Type of " + file.getName() + " is " + - new MimetypesFileTypeMap().getContentType(file)); + logger.info("Mime Type of " + name + " is " + + new MimetypesFileTypeMap().getContentType(file.getFile())); HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentLength(pdffile.length()); responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + pdffile.getName()); + responseHeaders.set("Content-Disposition", "attachment;filename=" + name + ".pdf"); responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); 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(file.getFile().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 bed8c804a..c2b9abc43 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 @@ -12,6 +12,7 @@ import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.logic.security.claims.ClaimedAuthorities; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.forms.VisibilityRuleService; +import eu.eudat.logic.utilities.documents.helpers.FileEnvelope; import eu.eudat.models.data.datasetwizard.DataManagentPlanListingModel; import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.dmp.AssociatedProfile; @@ -20,6 +21,7 @@ import eu.eudat.models.data.listingmodels.DataManagementPlanOverviewModel; import eu.eudat.models.data.security.Principal; import eu.eudat.models.data.user.composite.PagedDatasetProfile; import eu.eudat.types.ApiMessageCode; +import eu.eudat.types.Authorities; import org.apache.poi.util.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,24 +84,24 @@ public class DatasetWizardController extends BaseController { @Transactional @RequestMapping(method = RequestMethod.GET, value = {"{id}"}, produces = "application/json") public @ResponseBody - ResponseEntity getSingle(@PathVariable String id, @RequestHeader("Content-Type") String contentType, Principal principal) throws IllegalAccessException, IOException, InstantiationException { + ResponseEntity getSingle(@PathVariable String id, @RequestHeader("Content-Type") String contentType, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws IllegalAccessException, IOException, InstantiationException { try { if (contentType.equals("application/xml")) { VisibilityRuleService visibilityRuleService = this.getApiContext().getUtilitiesService().getVisibilityRuleService(); return this.datasetManager.getDocument(id, visibilityRuleService, contentType, principal); } else if (contentType.equals("application/msword")) { - File file = datasetManager.getWordDocumentFile(this.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService(), principal); - InputStream resource = new FileInputStream(file); + FileEnvelope file = datasetManager.getWordDocumentFile(this.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService(), principal); + InputStream resource = new FileInputStream(file.getFile()); HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.setContentLength(file.length()); + responseHeaders.setContentLength(file.getFile().length()); responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + file.getName()); + responseHeaders.set("Content-Disposition", "attachment;filename=" + file.getFilename()); responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); byte[] content = IOUtils.toByteArray(resource); resource.close(); - Files.deleteIfExists(file.toPath()); + Files.deleteIfExists(file.getFile().toPath()); return new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); @@ -151,25 +153,25 @@ public class DatasetWizardController extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/getPDF/{id}"}) public @ResponseBody - ResponseEntity getPDFDocument(@PathVariable String id, Principal principal) throws IllegalAccessException, IOException, InstantiationException, InterruptedException { - File file = datasetManager.getWordDocumentFile(this.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService(), principal); - String fileName = file.getName(); + ResponseEntity getPDFDocument(@PathVariable String id, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws IllegalAccessException, IOException, InstantiationException, InterruptedException { + FileEnvelope file = datasetManager.getWordDocumentFile(this.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService(), principal); + String fileName = file.getFilename(); if (fileName.endsWith(".docx")){ fileName = fileName.substring(0, fileName.length() - 5); } - File pdffile = datasetManager.convertToPDF(file, environment, fileName); + File pdffile = datasetManager.convertToPDF(file, environment); InputStream resource = new FileInputStream(pdffile); HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentLength(pdffile.length()); responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + pdffile.getName()); + responseHeaders.set("Content-Disposition", "attachment;filename=" + fileName + ".pdf"); responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); byte[] content = IOUtils.toByteArray(resource); resource.close(); - Files.deleteIfExists(file.toPath()); + Files.deleteIfExists(file.getFile().toPath()); Files.deleteIfExists(pdffile.toPath()); return new ResponseEntity<>(content, responseHeaders, 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 7032411f4..af0f0d226 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 @@ -235,11 +235,11 @@ public class DataManagementPlanManager { return; } - public File getWordDocument(String id, Principal principal, ConfigLoader configLoader) throws IOException { + public FileEnvelope getWordDocument(String id, Principal principal, ConfigLoader configLoader) throws IOException { return this.getWordDocument(id, principal, configLoader, false); } - public File getWordDocument(String id, Principal principal, ConfigLoader configLoader, Boolean versioned) throws IOException { + public FileEnvelope getWordDocument(String id, Principal principal, ConfigLoader configLoader, Boolean versioned) throws IOException { WordBuilder wordBuilder = new WordBuilder(); VisibilityRuleService visibilityRuleService = this.utilitiesService.getVisibilityRuleService(); DatasetWizardModel dataset = new DatasetWizardModel(); @@ -392,12 +392,16 @@ public class DataManagementPlanManager { fileName = dmpEntity.getLabel(); } fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", ""); - File exportFile = new File(this.environment.getProperty("temp.temp") + fileName + ".docx"); + FileEnvelope exportEnvelope = new FileEnvelope(); + exportEnvelope.setFilename(fileName + ".docx"); + String uuid = UUID.randomUUID().toString(); + File exportFile = new File(this.environment.getProperty("temp.temp") + uuid + ".docx"); FileOutputStream out = new FileOutputStream(exportFile); document.write(out); out.close(); + exportEnvelope.setFile(exportFile); - return exportFile; + return exportEnvelope; } /*public File getPdfDocument(String id) throws InstantiationException, IllegalAccessException, InterruptedException, IOException { @@ -1033,9 +1037,10 @@ public class DataManagementPlanManager { if (!dmp.isPublic() && dmp.getUsers().stream().filter(userInfo -> userInfo.getUser().getId() == principal.getId()).collect(Collectors.toList()).size() == 0) throw new UnauthorisedException(); List datasets = dmp.getDataset().stream().collect(Collectors.toList()); - String fileName = dmp.getLabel(); - fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", ""); - File xmlFile = new File(this.environment.getProperty("temp.temp") + fileName + ".xml"); + /*String fileName = dmp.getLabel(); + fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", "");*/ + String uuid = UUID.randomUUID().toString(); + File xmlFile = new File(this.environment.getProperty("temp.temp") + uuid + ".xml"); BufferedWriter writer = new BufferedWriter(new FileWriter(xmlFile, true)); Document xmlDoc = XmlBuilder.getDocument(); Element dmpElement = xmlDoc.createElement("dmp"); @@ -1156,7 +1161,7 @@ public class DataManagementPlanManager { writer.close(); FileEnvelope fileEnvelope = new FileEnvelope(); fileEnvelope.setFile(xmlFile); - fileEnvelope.setFilename(dmp.getLabel()); + fileEnvelope.setFilename(dmp.getLabel() + ".xml"); return fileEnvelope; } @@ -1172,7 +1177,8 @@ public class DataManagementPlanManager { mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); String fileName = dmp.getLabel(); fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", ""); - File file = new File(this.environment.getProperty("temp.temp") + fileName + ".json"); + String uuid = UUID.randomUUID().toString(); + File file = new File(this.environment.getProperty("temp.temp") + uuid + ".json"); OutputStream output = new FileOutputStream(file); try { // mapper.writeValue(file, rdaExportModel); @@ -1187,7 +1193,7 @@ public class DataManagementPlanManager { HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentLength(file.length()); responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + file.getName()); + responseHeaders.set("Content-Disposition", "attachment;filename=" + fileName + ".json"); responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); @@ -1198,28 +1204,28 @@ public class DataManagementPlanManager { } public ResponseEntity getDocument(String id, String contentType, Principal principal, ConfigLoader configLoader) throws InstantiationException, IllegalAccessException, IOException { - File file; + FileEnvelope file; switch (contentType) { case "application/xml": - file = getXmlDocument(id, principal).getFile(); + file = getXmlDocument(id, principal); break; case "application/msword": file = getWordDocument(id, principal, configLoader); break; default: - file = getXmlDocument(id, principal).getFile(); + file = getXmlDocument(id, principal); } - InputStream resource = new FileInputStream(file); + InputStream resource = new FileInputStream(file.getFile()); HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.setContentLength(file.length()); + responseHeaders.setContentLength(file.getFile().length()); responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + file.getName()); + responseHeaders.set("Content-Disposition", "attachment;filename=" + file.getFilename()); responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); 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(file.getFile().toPath()); return new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); @@ -1598,15 +1604,15 @@ public class DataManagementPlanManager { fileHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); LinkedMultiValueMap addFileMap = new LinkedMultiValueMap<>(); - File file = getWordDocument(id.toString(), principal, configLoader); - addFileMap.add("filename", file.getName()); - FileSystemResource fileSystemResource = new FileSystemResource(file); + FileEnvelope file = getWordDocument(id.toString(), principal, configLoader); + addFileMap.add("filename", file.getFilename()); + FileSystemResource fileSystemResource = new FileSystemResource(file.getFile()); addFileMap.add("file", fileSystemResource); HttpEntity> addFileMapRequest = new HttpEntity<>(addFileMap, fileHeaders); 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()); + Files.deleteIfExists(file.getFile().toPath()); // Third post call to Zenodo to publish the entry and return the DOI. String publishUrl = links.get("publish") + "?access_token=" + this.environment.getProperty("zenodo.access_token"); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementProfileManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementProfileManager.java index 983165034..d9ee45421 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementProfileManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementProfileManager.java @@ -24,6 +24,7 @@ import eu.eudat.logic.services.ApiContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; @@ -49,11 +50,13 @@ public class DataManagementProfileManager { private ApiContext apiContext; private DatabaseRepository databaseRepository; + private Environment environment; @Autowired - public DataManagementProfileManager(ApiContext apiContext) { + public DataManagementProfileManager(ApiContext apiContext, Environment environment) { this.apiContext = apiContext; this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository(); + this.environment = environment; } public DataTableData getPaged(DataManagementPlanProfileTableRequest dataManagementPlanProfileTableRequest, Principal principal) throws Exception { @@ -114,7 +117,7 @@ public class DataManagementProfileManager { public FileEnvelope getXmlDocument(DataManagementPlanProfileListingModel dmpProfile, String label) throws InstantiationException, IllegalAccessException, IOException { ExportXmlBuilderDmpProfile xmlBuilder = new ExportXmlBuilderDmpProfile(); - File file = xmlBuilder.build(dmpProfile); + File file = xmlBuilder.build(dmpProfile, environment); FileEnvelope fileEnvelope = new FileEnvelope(); fileEnvelope.setFile(file); fileEnvelope.setFilename(label); 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 6883663a2..a30f89ab1 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 @@ -402,7 +402,7 @@ public class DatasetManager { visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules()); wordBuilder.build(document, pagedDatasetProfile, visibilityRuleService); String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", ""); - File exportFile = new File(label + ".docx"); +// File exportFile = new File(label + ".docx"); // Removes the top empty headings. for (int i = 0; i < 6; i++) { @@ -446,19 +446,23 @@ public class DatasetManager { // return exportFile; } - public File getWordDocumentFile(ConfigLoader configLoader, String id, VisibilityRuleService visibilityRuleService, Principal principal) throws IOException { + public FileEnvelope getWordDocumentFile(ConfigLoader configLoader, String id, VisibilityRuleService visibilityRuleService, Principal principal) throws IOException { eu.eudat.data.entities.Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class)); if (!datasetEntity.getDmp().isPublic() && datasetEntity.getDmp().getUsers() .stream().filter(userInfo -> userInfo.getUser().getId() == principal.getId()) .collect(Collectors.toList()).size() == 0) throw new UnauthorisedException(); String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", ""); - File exportFile = new File(this.environment.getProperty("temp.temp") + label + ".docx"); + FileEnvelope exportEnvelope = new FileEnvelope(); + exportEnvelope.setFilename(label + ".docx"); + String uuid = UUID.randomUUID().toString(); + File exportFile = new File(this.environment.getProperty("temp.temp") + uuid + ".docx"); XWPFDocument document = getWordDocument(configLoader, datasetEntity, visibilityRuleService); FileOutputStream out = new FileOutputStream(exportFile); document.write(out); out.close(); - return exportFile; + exportEnvelope.setFile(exportFile); + return exportEnvelope; } public String getWordDocumentText (Dataset datasetEntity) throws Exception { @@ -488,17 +492,19 @@ public class DatasetManager { File file = xmlBuilder.build(pagedDatasetProfile, datasetEntity.getProfile().getId(), visibilityRuleService, environment); FileEnvelope fileEnvelope = new FileEnvelope(); fileEnvelope.setFile(file); - fileEnvelope.setFilename(datasetEntity.getLabel()); + String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", ""); + fileEnvelope.setFilename(label); return fileEnvelope; } - public File convertToPDF(File file, Environment environment, String label) throws IOException, InterruptedException { + public File convertToPDF(FileEnvelope file, Environment environment) throws IOException, InterruptedException { LinkedMultiValueMap map = new LinkedMultiValueMap<>(); - map.add("files", new FileSystemResource(file)); - map.add("filename", label + ".pdf"); + String uuid = UUID.randomUUID().toString(); + map.add("files", new FileSystemResource(file.getFile())); + map.add("filename", uuid + ".pdf"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); - headers.add("Content-disposition", "attachment; filename=" + label + ".pdf"); + headers.add("Content-disposition", "attachment; filename=" + uuid + ".pdf"); headers.add("Content-type", "application/pdf"); HttpEntity> requestEntity = new HttpEntity>( @@ -507,11 +513,11 @@ public class DatasetManager { byte[] queueResult = new RestTemplate().postForObject(environment.getProperty("pdf.converter.url") + "convert/office" , requestEntity, byte[].class); - File resultPdf = new File(label + ".pdf"); + File resultPdf = new File(environment.getProperty("temp.temp") + uuid + ".pdf"); FileOutputStream output = new FileOutputStream(resultPdf); IOUtils.write(queueResult, output); output.close(); - Files.deleteIfExists(file.toPath()); + Files.deleteIfExists(file.getFile().toPath()); return resultPdf; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java index 81693e917..9a171ade0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java @@ -21,10 +21,10 @@ import eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field; import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.queryable.QueryableList; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -34,12 +34,10 @@ import org.w3c.dom.Element; import javax.activation.MimetypesFileTypeMap; import javax.xml.xpath.*; -import java.io.IOException; +import java.io.*; import java.nio.file.Files; import java.util.*; -import java.io.*; - @Component public class DatasetProfileManager { @@ -47,11 +45,13 @@ public class DatasetProfileManager { private ApiContext apiContext; private DatabaseRepository databaseRepository; + private Environment environment; @Autowired - public DatasetProfileManager(ApiContext apiContext) { + public DatasetProfileManager(ApiContext apiContext, Environment environment) { this.apiContext = apiContext; this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository(); + this.environment = environment; } public eu.eudat.models.data.admin.composite.DatasetProfile getDatasetProfile(String id) { @@ -142,7 +142,7 @@ public class DatasetProfileManager { public FileEnvelope getXmlDocument(eu.eudat.models.data.user.composite.DatasetProfile datatasetProfile, String label) throws InstantiationException, IllegalAccessException, IOException { ExportXmlBuilderDatasetProfile xmlBuilder = new ExportXmlBuilderDatasetProfile(); - File file = xmlBuilder.build(datatasetProfile); + File file = xmlBuilder.build(datatasetProfile, environment); FileEnvelope fileEnvelope = new FileEnvelope(); fileEnvelope.setFile(file); fileEnvelope.setFilename(label); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java index 6a53063d5..28e7f911b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java @@ -8,6 +8,7 @@ import eu.eudat.models.data.user.components.datasetprofile.FieldSet; import eu.eudat.models.data.user.components.datasetprofile.Section; import eu.eudat.logic.utilities.builders.XmlBuilder; +import org.springframework.core.env.Environment; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -22,9 +23,9 @@ import java.util.UUID; public class ExportXmlBuilderDatasetProfile { - public File build(eu.eudat.models.data.user.composite.DatasetProfile datasetProfile) throws IOException { + public File build(eu.eudat.models.data.user.composite.DatasetProfile datasetProfile, Environment environment) throws IOException { - File xmlFile = new File(UUID.randomUUID() + ".xml"); + File xmlFile = new File(environment.getProperty("temp.temp") + UUID.randomUUID() + ".xml"); BufferedWriter writer = new BufferedWriter(new FileWriter(xmlFile, true)); Document xmlDoc = XmlBuilder.getDocument(); // Element root = xmlDoc.createElement("root"); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/ExportXmlBuilderDmpProfile.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/ExportXmlBuilderDmpProfile.java index 344d4924a..212facc14 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/ExportXmlBuilderDmpProfile.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/ExportXmlBuilderDmpProfile.java @@ -4,6 +4,7 @@ import eu.eudat.logic.utilities.builders.XmlBuilder; import eu.eudat.models.data.entities.xmlmodels.dmpprofiledefinition.DataManagementPlanProfile; import eu.eudat.models.data.listingmodels.DataManagementPlanProfileListingModel; +import org.springframework.core.env.Environment; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -16,9 +17,9 @@ import java.util.UUID; public class ExportXmlBuilderDmpProfile { - public File build(DataManagementPlanProfileListingModel dmpProfile) throws IOException { + public File build(DataManagementPlanProfileListingModel dmpProfile, Environment environment) throws IOException { - File xmlFile = new File(UUID.randomUUID() + ".xml"); + File xmlFile = new File(environment.getProperty("temp.temp") + UUID.randomUUID() + ".xml"); BufferedWriter writer = new BufferedWriter(new FileWriter(xmlFile, true)); Document xmlDoc = XmlBuilder.getDocument(); Element root = xmlDoc.createElement("root");