Fixes Pdf export for DMP and Dataset.
This commit is contained in:
parent
bb666d91e4
commit
30c84de19a
|
@ -82,8 +82,8 @@ public class DMPs extends BaseController {
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = {"{id}"})
|
@RequestMapping(method = RequestMethod.GET, value = {"{id}"})
|
||||||
public @ResponseBody
|
public @ResponseBody
|
||||||
ResponseEntity getSingle(@PathVariable String id,@RequestHeader("Content-Type") String contentType, Principal principal) throws IllegalAccessException, InstantiationException, IOException {
|
ResponseEntity getSingle(@PathVariable String id,@RequestHeader("Content-Type") String contentType, Principal principal) throws IllegalAccessException,InterruptedException, InstantiationException, IOException {
|
||||||
if(contentType.equals("application/xml") || contentType.equals("application/msword")){
|
if(contentType.equals("application/xml") || contentType.equals("application/msword")){ //|| contentType.equals("application/pdf")
|
||||||
DMPDao dmpDao = this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao();
|
DMPDao dmpDao = this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao();
|
||||||
VisibilityRuleService visibilityRuleService = this.getApiContext().getUtilitiesService().getVisibilityRuleService();
|
VisibilityRuleService visibilityRuleService = this.getApiContext().getUtilitiesService().getVisibilityRuleService();
|
||||||
ResponseEntity<byte[]> document = this.dataManagementPlanManager.getDocument(id, contentType);
|
ResponseEntity<byte[]> document = this.dataManagementPlanManager.getDocument(id, contentType);
|
||||||
|
@ -140,26 +140,6 @@ public class DMPs extends BaseController {
|
||||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<Tuple<String, String>>>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable));
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List<Tuple<String, String>>>().status(ApiMessageCode.NO_MESSAGE).payload(dataTable));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@RequestMapping(method = RequestMethod.GET, value = {"/getWord/{id}"})
|
|
||||||
public @ResponseBody
|
|
||||||
ResponseEntity<byte[]> getWordDocument(@PathVariable String id) throws IOException, IllegalAccessException, InstantiationException {
|
|
||||||
File file = this.dataManagementPlanManager.getWordDocument(this.environment, this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), id, this.getApiContext().getUtilitiesService().getVisibilityRuleService());
|
|
||||||
InputStream resource = new FileInputStream(file);
|
|
||||||
System.out.println("Mime Type of " + file.getName() + " is " +
|
|
||||||
new MimetypesFileTypeMap().getContentType(file));
|
|
||||||
HttpHeaders responseHeaders = new HttpHeaders();
|
|
||||||
responseHeaders.setContentLength(file.length());
|
|
||||||
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
|
||||||
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 = org.apache.poi.util.IOUtils.toByteArray(resource);
|
|
||||||
return new ResponseEntity<>(content,
|
|
||||||
responseHeaders,
|
|
||||||
HttpStatus.OK);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = {"/getPDF/{id}"})
|
@RequestMapping(method = RequestMethod.GET, value = {"/getPDF/{id}"})
|
||||||
public @ResponseBody
|
public @ResponseBody
|
||||||
ResponseEntity<byte[]> getPDFDocument(@PathVariable String id, @RequestHeader("Content-Type") String contentType) throws IllegalAccessException, IOException, InstantiationException, InterruptedException {
|
ResponseEntity<byte[]> getPDFDocument(@PathVariable String id, @RequestHeader("Content-Type") String contentType) throws IllegalAccessException, IOException, InstantiationException, InterruptedException {
|
||||||
|
@ -186,7 +166,7 @@ public class DMPs extends BaseController {
|
||||||
public ResponseEntity<ResponseItem> dmpXmlUpload(@RequestParam("file") MultipartFile[] files, Principal principal) throws IOException, JAXBException, Exception {
|
public ResponseEntity<ResponseItem> dmpXmlUpload(@RequestParam("file") MultipartFile[] files, Principal principal) throws IOException, JAXBException, Exception {
|
||||||
this.dataManagementPlanManager.createDmpFromXml(this.getApiContext(), files, principal);
|
this.dataManagementPlanManager.createDmpFromXml(this.getApiContext(), files, principal);
|
||||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List>()
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<List>()
|
||||||
.status(ApiMessageCode.SUCCESS_MESSAGE).message("Bravo Giorgo"));
|
.status(ApiMessageCode.SUCCESS_MESSAGE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -133,10 +134,13 @@ public class DatasetWizardController extends BaseController {
|
||||||
public @ResponseBody
|
public @ResponseBody
|
||||||
ResponseEntity<byte[]> getPDFDocument(@PathVariable String id) throws IllegalAccessException, IOException, InstantiationException, InterruptedException {
|
ResponseEntity<byte[]> getPDFDocument(@PathVariable String id) throws IllegalAccessException, IOException, InstantiationException, InterruptedException {
|
||||||
File file = datasetManager.getWordDocument(this.environment, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService());
|
File file = datasetManager.getWordDocument(this.environment, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService());
|
||||||
File pdffile = datasetManager.convertToPDF(file, environment, file.getName());
|
String fileName = file.getName();
|
||||||
|
if (fileName.endsWith(".docx")){
|
||||||
|
fileName = fileName.substring(0, fileName.length() - 5);
|
||||||
|
}
|
||||||
|
File pdffile = datasetManager.convertToPDF(file, environment, fileName);
|
||||||
InputStream resource = new FileInputStream(pdffile);
|
InputStream resource = new FileInputStream(pdffile);
|
||||||
System.out.println("Mime Type of " + file.getName() + " is " +
|
|
||||||
new MimetypesFileTypeMap().getContentType(file));
|
|
||||||
HttpHeaders responseHeaders = new HttpHeaders();
|
HttpHeaders responseHeaders = new HttpHeaders();
|
||||||
responseHeaders.setContentLength(pdffile.length());
|
responseHeaders.setContentLength(pdffile.length());
|
||||||
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
@ -145,6 +149,8 @@ public class DatasetWizardController extends BaseController {
|
||||||
responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type");
|
responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type");
|
||||||
|
|
||||||
byte[] content = IOUtils.toByteArray(resource);
|
byte[] content = IOUtils.toByteArray(resource);
|
||||||
|
//Files.deleteIfExists(pdffile.toPath());
|
||||||
|
//Files.deleteIfExists(file.toPath());
|
||||||
return new ResponseEntity<>(content,
|
return new ResponseEntity<>(content,
|
||||||
responseHeaders,
|
responseHeaders,
|
||||||
HttpStatus.OK);
|
HttpStatus.OK);
|
||||||
|
|
|
@ -173,13 +173,23 @@ public class DataManagementPlanManager {
|
||||||
});
|
});
|
||||||
String fileName = dmpEntity.getLabel();
|
String fileName = dmpEntity.getLabel();
|
||||||
fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", "");
|
fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", "");
|
||||||
File exportFile = new File( fileName + ".docx");
|
File exportFile = new File(environment.getProperty("configuration.exportUrl") + fileName + ".docx");
|
||||||
FileOutputStream out = new FileOutputStream(exportFile);
|
FileOutputStream out = new FileOutputStream(exportFile);
|
||||||
document.write(out);
|
document.write(out);
|
||||||
out.close();
|
out.close();
|
||||||
|
|
||||||
return exportFile;
|
return exportFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*public File getPdfDocument(String id) throws InstantiationException, IllegalAccessException, InterruptedException, IOException {
|
||||||
|
File file = this.getWordDocument(id);
|
||||||
|
String fileName = file.getName();
|
||||||
|
if (fileName.endsWith(".docx")){
|
||||||
|
fileName = fileName.substring(0, fileName.length() - 5);
|
||||||
|
}
|
||||||
|
return this.datasetManager.convertToPDF(file, environment, fileName);
|
||||||
|
}*/
|
||||||
|
|
||||||
public eu.eudat.models.data.dmp.DataManagementPlan getSingle(String id, Principal principal, DynamicProjectConfiguration dynamicProjectConfiguration) throws InstantiationException, IllegalAccessException {
|
public eu.eudat.models.data.dmp.DataManagementPlan getSingle(String id, Principal principal, DynamicProjectConfiguration dynamicProjectConfiguration) throws InstantiationException, IllegalAccessException {
|
||||||
DMP dataManagementPlanEntity = databaseRepository.getDmpDao().find(UUID.fromString(id));
|
DMP dataManagementPlanEntity = databaseRepository.getDmpDao().find(UUID.fromString(id));
|
||||||
if (dataManagementPlanEntity.getCreator().getId() != principal.getId() && dataManagementPlanEntity.getUsers().stream().filter(userInfo -> userInfo.getId() == principal.getId()).collect(Collectors.toList()).size() == 0)
|
if (dataManagementPlanEntity.getCreator().getId() != principal.getId() && dataManagementPlanEntity.getUsers().stream().filter(userInfo -> userInfo.getId() == principal.getId()).collect(Collectors.toList()).size() == 0)
|
||||||
|
@ -555,7 +565,7 @@ public class DataManagementPlanManager {
|
||||||
return fileEnvelope;
|
return fileEnvelope;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseEntity<byte[]> getDocument(String id, String contentType) throws InstantiationException, IllegalAccessException, IOException{
|
public ResponseEntity<byte[]> getDocument(String id, String contentType) throws InstantiationException, InterruptedException, IllegalAccessException, IOException{
|
||||||
File file;
|
File file;
|
||||||
VisibilityRuleService visibilityRuleService = this.utilitiesService.getVisibilityRuleService();
|
VisibilityRuleService visibilityRuleService = this.utilitiesService.getVisibilityRuleService();
|
||||||
DMPDao dmpDao = databaseRepository.getDmpDao();
|
DMPDao dmpDao = databaseRepository.getDmpDao();
|
||||||
|
@ -566,12 +576,13 @@ public class DataManagementPlanManager {
|
||||||
case "application/msword":
|
case "application/msword":
|
||||||
file = getWordDocument(id);
|
file = getWordDocument(id);
|
||||||
break;
|
break;
|
||||||
|
/*case "application/pdf":
|
||||||
|
file = getPdfDocument(id);
|
||||||
|
break;*/
|
||||||
default:
|
default:
|
||||||
file = getXmlDocument(id).getFile();
|
file = getXmlDocument(id).getFile();
|
||||||
}
|
}
|
||||||
InputStream resource = new FileInputStream(file);
|
InputStream resource = new FileInputStream(file);
|
||||||
System.out.println("Mime Type of " + file.getName() + " is " +
|
|
||||||
new MimetypesFileTypeMap().getContentType(file));
|
|
||||||
HttpHeaders responseHeaders = new HttpHeaders();
|
HttpHeaders responseHeaders = new HttpHeaders();
|
||||||
responseHeaders.setContentLength(file.length());
|
responseHeaders.setContentLength(file.length());
|
||||||
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
|
|
@ -34,6 +34,8 @@ import org.springframework.core.env.Environment;
|
||||||
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.core.io.FileSystemResource;
|
||||||
import org.springframework.http.*;
|
import org.springframework.http.*;
|
||||||
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
|
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
|
||||||
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
|
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
@ -207,7 +209,7 @@ public class DatasetManager {
|
||||||
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
|
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
|
||||||
wordBuilder.build(document, pagedDatasetProfile, visibilityRuleService);
|
wordBuilder.build(document, pagedDatasetProfile, visibilityRuleService);
|
||||||
String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
|
String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
|
||||||
File exportFile = new File(label + ".docx");
|
File exportFile = new File(environment.getProperty("configuration.exportUrl") + label + ".docx");
|
||||||
FileOutputStream out = new FileOutputStream(exportFile);
|
FileOutputStream out = new FileOutputStream(exportFile);
|
||||||
document.write(out);
|
document.write(out);
|
||||||
out.close();
|
out.close();
|
||||||
|
@ -235,45 +237,24 @@ public class DatasetManager {
|
||||||
|
|
||||||
public File convertToPDF(File file, Environment environment, String label) throws IOException, InterruptedException {
|
public File convertToPDF(File file, Environment environment, String label) throws IOException, InterruptedException {
|
||||||
LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
|
LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
|
||||||
map.add("file", new FileSystemResource(file));
|
map.add("files", new FileSystemResource(file));
|
||||||
|
map.add("filename", label + ".pdf");
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
|
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
|
||||||
headers.add("Content-disposition", "attachment; filename=" + label + ".docx");
|
headers.add("Content-disposition", "attachment; filename=" + label + ".pdf");
|
||||||
|
headers.add("Content-type", "application/pdf");
|
||||||
headers.add("Content-type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
|
||||||
|
|
||||||
HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<LinkedMultiValueMap<String, Object>>(
|
HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<LinkedMultiValueMap<String, Object>>(
|
||||||
map, headers);
|
map, headers);
|
||||||
|
|
||||||
Map queueResult = new RestTemplate().postForObject(
|
byte[] queueResult = new RestTemplate().postForObject("http://localhost:3000/convert/office"
|
||||||
environment.getProperty("pdf.converter.url") +
|
, requestEntity, byte[].class);
|
||||||
"api/v1/", requestEntity, Map.class);
|
|
||||||
|
|
||||||
Map mediaResult = new RestTemplate().getForObject(environment.getProperty("pdf.converter.url") +
|
File resultPdf = new File(environment.getProperty("configuration.exportUrl") + label + ".pdf");
|
||||||
"/api/v1/" + queueResult.get("id"), Map.class);
|
FileOutputStream output = new FileOutputStream(resultPdf);
|
||||||
System.out.println("Status: " + mediaResult.get("status"));
|
IOUtils.write(queueResult, output);
|
||||||
while (!mediaResult.get("status").equals("finished")) {
|
|
||||||
Thread.sleep(500);
|
|
||||||
mediaResult = new RestTemplate().getForObject(environment.getProperty("pdf.converter.url") +
|
|
||||||
"api/v1/" + queueResult.get("id"), Map.class);
|
|
||||||
System.out.println("Polling");
|
|
||||||
}
|
|
||||||
RestTemplate restTemplate = new RestTemplate();
|
|
||||||
restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConverter());
|
|
||||||
HttpHeaders headers2 = new HttpHeaders();
|
|
||||||
headers.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));
|
|
||||||
HttpEntity<String> entity = new HttpEntity<String>(headers2);
|
|
||||||
|
|
||||||
ResponseEntity<byte[]> response = restTemplate.exchange(environment.getProperty("pdf.converter.url") +
|
return resultPdf;
|
||||||
mediaResult.get("result_url"), HttpMethod.GET, entity, byte[].class, "1");
|
|
||||||
|
|
||||||
UUID uuid = UUID.randomUUID();
|
|
||||||
File zip = new File(uuid + ".zip");
|
|
||||||
if (response.getStatusCode().equals(HttpStatus.OK)) {
|
|
||||||
FileOutputStream output = new FileOutputStream(zip);
|
|
||||||
IOUtils.write(response.getBody(), output);
|
|
||||||
}
|
|
||||||
return extractFromZip(zip, label + ".pdf");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private File extractFromZip(File file, String filename) throws IOException {
|
private File extractFromZip(File file, String filename) throws IOException {
|
||||||
|
|
|
@ -60,7 +60,7 @@ public class DocumentManager {
|
||||||
visibilityRuleService.setProperties(properties);
|
visibilityRuleService.setProperties(properties);
|
||||||
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
|
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
|
||||||
wordBuilder.build(document, pagedDatasetProfile, visibilityRuleService);
|
wordBuilder.build(document, pagedDatasetProfile, visibilityRuleService);
|
||||||
File exportFile = new File(dataset.getLabel() + ".docx");
|
File exportFile = new File(environment.getProperty("configuration.exportUrl") + dataset.getLabel() + ".docx");
|
||||||
FileOutputStream out = new FileOutputStream(exportFile);
|
FileOutputStream out = new FileOutputStream(exportFile);
|
||||||
document.write(out);
|
document.write(out);
|
||||||
out.close();
|
out.close();
|
||||||
|
|
|
@ -17,7 +17,8 @@ pdf.converter.url=http://localhost:88/
|
||||||
####################CONFIGURATION FILES OVERRIDES CONFIGURATIONS##########
|
####################CONFIGURATION FILES OVERRIDES CONFIGURATIONS##########
|
||||||
configuration.externalUrls=/tmp/ExternalUrls.xml
|
configuration.externalUrls=/tmp/ExternalUrls.xml
|
||||||
configuration.dynamicProjectUrl=/tmp/ProjectConfiguration.xml
|
configuration.dynamicProjectUrl=/tmp/ProjectConfiguration.xml
|
||||||
configuration.h2020template=C:\\Users\\gkolokythas\\Documents\\OpenAIRE-EUDAT-DMP-service-pilot\\dmp-backend\\web\\src\\main\\resources\\documents\\h2020.docx
|
configuration.h2020template=C:\\Users\\gkolokythas\\Documents\\openDmp\\dmp-backend\\web\\src\\main\\resources\\documents\\h2020.docx
|
||||||
|
configuration.exportUrl=C:\\Users\\gkolokythas\\Documents\\openDmp\\dmp-backend\\web\\src\\main\\exportFiles\\
|
||||||
|
|
||||||
#############TWITTER LOGIN CONFIGURATIONS#########
|
#############TWITTER LOGIN CONFIGURATIONS#########
|
||||||
twitter.login.redirect_uri=http://127.0.0.1:4200/login/twitter
|
twitter.login.redirect_uri=http://127.0.0.1:4200/login/twitter
|
||||||
|
|
Loading…
Reference in New Issue