Refactors the parsing of the template document used on DMP and Dataset docx and pdf export.
This commit is contained in:
parent
2b5830e53b
commit
967d4bfe40
|
@ -13,6 +13,7 @@ import eu.eudat.exceptions.datamanagementplan.DMPNewVersionException;
|
|||
import eu.eudat.exceptions.datamanagementplan.DMPWithDatasetsDeleteException;
|
||||
import eu.eudat.logic.managers.DataManagementPlanManager;
|
||||
import eu.eudat.logic.managers.DatasetManager;
|
||||
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;
|
||||
|
@ -59,15 +60,17 @@ public class DMPs extends BaseController {
|
|||
private Environment environment;
|
||||
private DataManagementPlanManager dataManagementPlanManager;
|
||||
private DatasetManager datasetManager;
|
||||
private ConfigLoader configLoader;
|
||||
|
||||
@Autowired
|
||||
public DMPs(ApiContext apiContext, DynamicGrantConfiguration dynamicGrantConfiguration, Environment environment,
|
||||
DataManagementPlanManager dataManagementPlanManager, DatasetManager datasetManager) {
|
||||
DataManagementPlanManager dataManagementPlanManager, DatasetManager datasetManager, ConfigLoader configLoader) {
|
||||
super(apiContext);
|
||||
this.dynamicGrantConfiguration = dynamicGrantConfiguration;
|
||||
this.environment = environment;
|
||||
this.dataManagementPlanManager = dataManagementPlanManager;
|
||||
this.datasetManager = datasetManager;
|
||||
this.configLoader = configLoader;
|
||||
}
|
||||
|
||||
/*@Transactional
|
||||
|
@ -90,7 +93,7 @@ public class DMPs extends BaseController {
|
|||
ResponseEntity getSingle(@PathVariable String id, @RequestHeader("Content-Type") String contentType,
|
||||
@ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) throws IllegalAccessException, InstantiationException, IOException {
|
||||
if (contentType.equals("application/xml") || contentType.equals("application/msword")) {
|
||||
return this.dataManagementPlanManager.getDocument(id, contentType, principal);
|
||||
return this.dataManagementPlanManager.getDocument(id, contentType, principal, this.configLoader);
|
||||
} else {
|
||||
eu.eudat.models.data.dmp.DataManagementPlan dataManagementPlan = this.dataManagementPlanManager.getSingle(id, principal, this.dynamicGrantConfiguration);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DataManagementPlan>().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlan));
|
||||
|
@ -188,7 +191,7 @@ public class DMPs extends BaseController {
|
|||
public @ResponseBody
|
||||
ResponseEntity<byte[]> 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);
|
||||
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);
|
||||
InputStream resource = new FileInputStream(pdffile);
|
||||
|
@ -263,7 +266,7 @@ public class DMPs extends BaseController {
|
|||
@RequestMapping(method = RequestMethod.POST, value = {"/createZenodoDoi/{id}"})
|
||||
public ResponseEntity<ResponseItem<String>> createZenodoDoi(@PathVariable String id, Principal principal) {
|
||||
try {
|
||||
String zenodoDOI = this.dataManagementPlanManager.createZenodoDoi(UUID.fromString(id), principal);
|
||||
String zenodoDOI = this.dataManagementPlanManager.createZenodoDoi(UUID.fromString(id), principal, configLoader);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<String>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Successfully created DOI for Data Datamanagement Plan in question.").payload(zenodoDOI));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package eu.eudat.controllers;
|
||||
|
||||
import eu.eudat.data.dao.entities.DatasetDao;
|
||||
import eu.eudat.data.entities.Dataset;
|
||||
import eu.eudat.data.query.items.item.dataset.DatasetWizardAutocompleteRequest;
|
||||
import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileWizardAutocompleteRequest;
|
||||
|
@ -8,6 +7,7 @@ import eu.eudat.exceptions.datasetwizard.DatasetWizardCannotUnlockException;
|
|||
import eu.eudat.logic.managers.DatasetManager;
|
||||
import eu.eudat.logic.managers.DatasetWizardManager;
|
||||
import eu.eudat.logic.managers.UserManager;
|
||||
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;
|
||||
|
@ -48,13 +48,15 @@ public class DatasetWizardController extends BaseController {
|
|||
private Environment environment;
|
||||
private DatasetManager datasetManager;
|
||||
private UserManager userManager;
|
||||
private ConfigLoader configLoader;
|
||||
|
||||
@Autowired
|
||||
public DatasetWizardController(ApiContext apiContext, Environment environment, DatasetManager datasetManager, UserManager userManager) {
|
||||
public DatasetWizardController(ApiContext apiContext, Environment environment, DatasetManager datasetManager, UserManager userManager, ConfigLoader configLoader) {
|
||||
super(apiContext);
|
||||
this.environment = environment;
|
||||
this.datasetManager = datasetManager;
|
||||
this.userManager = userManager;
|
||||
this.configLoader = configLoader;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, value = {"/userDmps"}, produces = "application/json")
|
||||
|
@ -80,7 +82,7 @@ public class DatasetWizardController extends BaseController {
|
|||
return this.datasetManager.getDocument(id, visibilityRuleService, contentType);
|
||||
}
|
||||
else if (contentType.equals("application/msword")) {
|
||||
File file = datasetManager.getWordDocument(this.environment, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService());
|
||||
File file = datasetManager.getWordDocument(this.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService());
|
||||
InputStream resource = new FileInputStream(file);
|
||||
HttpHeaders responseHeaders = new HttpHeaders();
|
||||
responseHeaders.setContentLength(file.length());
|
||||
|
@ -133,7 +135,7 @@ public class DatasetWizardController extends BaseController {
|
|||
@RequestMapping(method = RequestMethod.GET, value = {"/getPDF/{id}"})
|
||||
public @ResponseBody
|
||||
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.configLoader, id, this.getApiContext().getUtilitiesService().getVisibilityRuleService());
|
||||
String fileName = file.getName();
|
||||
if (fileName.endsWith(".docx")){
|
||||
fileName = fileName.substring(0, fileName.length() - 5);
|
||||
|
|
|
@ -16,6 +16,7 @@ import eu.eudat.exceptions.datamanagementplan.DMPNewVersionException;
|
|||
import eu.eudat.exceptions.datamanagementplan.DMPWithDatasetsDeleteException;
|
||||
import eu.eudat.exceptions.security.UnauthorisedException;
|
||||
import eu.eudat.logic.builders.entity.UserInfoBuilder;
|
||||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleService;
|
||||
import eu.eudat.logic.services.operations.DatabaseRepository;
|
||||
|
@ -175,13 +176,11 @@ public class DataManagementPlanManager {
|
|||
return;
|
||||
}
|
||||
|
||||
public File getWordDocument(String id, Principal principal) throws IOException {
|
||||
public File getWordDocument(String id, Principal principal, ConfigLoader configLoader) throws IOException {
|
||||
WordBuilder wordBuilder = new WordBuilder();
|
||||
VisibilityRuleService visibilityRuleService = this.utilitiesService.getVisibilityRuleService();
|
||||
DatasetWizardModel dataset = new DatasetWizardModel();
|
||||
String fileUrl = environment.getProperty("configuration.h2020template");
|
||||
InputStream is = new URL(Paths.get(fileUrl).toUri().toURL().toString()).openStream();
|
||||
XWPFDocument document = new XWPFDocument(is);
|
||||
XWPFDocument document = configLoader.getDocument();
|
||||
|
||||
eu.eudat.data.entities.DMP dmpEntity = databaseRepository.getDmpDao().find(UUID.fromString(id));
|
||||
if (!dmpEntity.isPublic() && dmpEntity.getUsers().stream().filter(userInfo -> userInfo.getUser().getId() == principal.getId()).collect(Collectors.toList()).size() == 0)
|
||||
|
@ -975,14 +974,14 @@ public class DataManagementPlanManager {
|
|||
return new ResponseEntity<>(content, responseHeaders, HttpStatus.OK);
|
||||
}
|
||||
|
||||
public ResponseEntity<byte[]> getDocument(String id, String contentType, Principal principal) throws InstantiationException, IllegalAccessException, IOException {
|
||||
public ResponseEntity<byte[]> getDocument(String id, String contentType, Principal principal, ConfigLoader configLoader) throws InstantiationException, IllegalAccessException, IOException {
|
||||
File file;
|
||||
switch (contentType) {
|
||||
case "application/xml":
|
||||
file = getXmlDocument(id, principal).getFile();
|
||||
break;
|
||||
case "application/msword":
|
||||
file = getWordDocument(id, principal);
|
||||
file = getWordDocument(id, principal, configLoader);
|
||||
break;
|
||||
default:
|
||||
file = getXmlDocument(id, principal).getFile();
|
||||
|
@ -1150,7 +1149,7 @@ public class DataManagementPlanManager {
|
|||
return (dmp.getUsers().stream().filter(userDMP -> userDMP.getRole().equals(UserDMP.UserDMPRoles.OWNER.getValue())).findFirst().get().getUser().getId()).equals(principal.getId());
|
||||
}
|
||||
|
||||
public String createZenodoDoi(UUID id, Principal principal) throws Exception {
|
||||
public String createZenodoDoi(UUID id, Principal principal, ConfigLoader configLoader) throws Exception {
|
||||
DMP dmp = this.apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(id);
|
||||
if (!isUserOwnerOfDmp(dmp, principal))
|
||||
throw new Exception("User is not authorized to invoke this action");
|
||||
|
@ -1184,7 +1183,7 @@ public class DataManagementPlanManager {
|
|||
fileHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
|
||||
LinkedMultiValueMap<String, Object> addFileMap = new LinkedMultiValueMap<>();
|
||||
|
||||
File file = getWordDocument(id.toString(), principal);
|
||||
File file = getWordDocument(id.toString(), principal, configLoader);
|
||||
addFileMap.add("filename", file.getName());
|
||||
FileSystemResource fileSystemResource = new FileSystemResource(file);
|
||||
addFileMap.add("file", fileSystemResource);
|
||||
|
|
|
@ -12,6 +12,7 @@ import eu.eudat.elastic.criteria.DatasetCriteria;
|
|||
import eu.eudat.elastic.repository.DatasetRepository;
|
||||
import eu.eudat.logic.builders.BuilderFactory;
|
||||
import eu.eudat.logic.builders.entity.UserInfoBuilder;
|
||||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleService;
|
||||
import eu.eudat.logic.services.operations.DatabaseRepository;
|
||||
|
@ -246,12 +247,10 @@ public class DatasetManager {
|
|||
return pagedDatasetProfile;
|
||||
}
|
||||
|
||||
public File getWordDocument(Environment environment, String id, VisibilityRuleService visibilityRuleService) throws InstantiationException, IllegalAccessException, IOException {
|
||||
public File getWordDocument(ConfigLoader configLoader, String id, VisibilityRuleService visibilityRuleService) throws IOException {
|
||||
WordBuilder wordBuilder = new WordBuilder();
|
||||
DatasetWizardModel dataset = new DatasetWizardModel();
|
||||
String fileUrl = environment.getProperty("configuration.h2020template");
|
||||
InputStream is = new URL(Paths.get(fileUrl).toUri().toURL().toString()).openStream();
|
||||
XWPFDocument document = new XWPFDocument(is);
|
||||
XWPFDocument document = configLoader.getDocument();
|
||||
eu.eudat.data.entities.Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
|
||||
wordBuilder.addParagraphContent(datasetEntity.getLabel(), document, ParagraphStyle.HEADER1, BigInteger.ZERO);
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.eudat.logic.managers;
|
||||
|
||||
import eu.eudat.data.dao.entities.DatasetDao;
|
||||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.logic.services.ApiContext;
|
||||
import eu.eudat.logic.services.forms.VisibilityRuleService;
|
||||
import eu.eudat.logic.utilities.documents.helpers.FileEnvelope;
|
||||
|
@ -12,7 +13,6 @@ import eu.eudat.models.data.user.composite.PagedDatasetProfile;
|
|||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.http.*;
|
||||
|
@ -39,17 +39,18 @@ public class DocumentManager {
|
|||
|
||||
private ApiContext context;
|
||||
private DatasetManager datasetManager;
|
||||
public DocumentManager(ApiContext context, DatasetManager datasetManager) {
|
||||
private ConfigLoader configLoader;
|
||||
|
||||
public DocumentManager(ApiContext context, DatasetManager datasetManager, ConfigLoader configLoader) {
|
||||
this.context = context;
|
||||
this.datasetManager = datasetManager;
|
||||
this.configLoader = configLoader;
|
||||
}
|
||||
|
||||
public File getWordDocument(Environment environment, DatasetDao datatasetRepository, String id, VisibilityRuleService visibilityRuleService) throws InstantiationException, IllegalAccessException, IOException {
|
||||
public File getWordDocument(ConfigLoader configLoader, DatasetDao datatasetRepository, String id, VisibilityRuleService visibilityRuleService) throws InstantiationException, IllegalAccessException, IOException {
|
||||
WordBuilder wordBuilder = new WordBuilder();
|
||||
DatasetWizardModel dataset = new DatasetWizardModel();
|
||||
String fileUrl = environment.getProperty("configuration.h2020template");
|
||||
InputStream is = new URL(Paths.get(fileUrl).toUri().toURL().toString()).openStream();
|
||||
XWPFDocument document = new XWPFDocument(is);
|
||||
XWPFDocument document = configLoader.getDocument();
|
||||
eu.eudat.data.entities.Dataset datasetEntity = datatasetRepository.find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
|
||||
Map<String, Object> properties = new HashMap<>();
|
||||
if (datasetEntity.getProperties() != null) {
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
package eu.eudat.logic.proxy.config.configloaders;
|
||||
|
||||
import eu.eudat.logic.proxy.config.ExternalUrls;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ConfigLoader {
|
||||
ExternalUrls getExternalUrls();
|
||||
List<String> getRdaProperties();
|
||||
XWPFDocument getDocument();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.eudat.logic.proxy.config.configloaders;
|
||||
|
||||
import eu.eudat.logic.proxy.config.ExternalUrls;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
@ -22,6 +23,7 @@ public class DevelConfigLoader implements ConfigLoader {
|
|||
|
||||
private ExternalUrls externalUrls;
|
||||
private List<String> rdaProperties;
|
||||
private XWPFDocument document;
|
||||
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
|
@ -72,6 +74,18 @@ public class DevelConfigLoader implements ConfigLoader {
|
|||
rdaProperties = rdaList;
|
||||
}
|
||||
|
||||
private void setDocument() {
|
||||
String filePath = environment.getProperty("configuration.h2020template");
|
||||
String current = null;
|
||||
try {
|
||||
current = new java.io.File(".").getCanonicalPath();
|
||||
InputStream is = new URL("file:///" + current + filePath).openStream();
|
||||
this.document = new XWPFDocument(is);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public ExternalUrls getExternalUrls() {
|
||||
this.setExternalUrls();
|
||||
return externalUrls;
|
||||
|
@ -81,4 +95,9 @@ public class DevelConfigLoader implements ConfigLoader {
|
|||
this.setRdaProperties();
|
||||
return rdaProperties;
|
||||
}
|
||||
|
||||
public XWPFDocument getDocument() {
|
||||
this.setDocument();
|
||||
return document;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.eudat.logic.proxy.config.configloaders;
|
||||
|
||||
import eu.eudat.logic.proxy.config.ExternalUrls;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
@ -23,6 +24,7 @@ public class ProductionConfigLoader implements ConfigLoader {
|
|||
|
||||
private ExternalUrls externalUrls;
|
||||
private List<String> rdaProperties;
|
||||
private XWPFDocument document;
|
||||
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
|
@ -71,6 +73,18 @@ public class ProductionConfigLoader implements ConfigLoader {
|
|||
rdaProperties = rdaList;
|
||||
}
|
||||
|
||||
private void setDocument() {
|
||||
String filePath = environment.getProperty("configuration.h2020template");
|
||||
String current = null;
|
||||
try {
|
||||
current = new java.io.File(".").getCanonicalPath();
|
||||
InputStream is = new URL(Paths.get(filePath).toUri().toURL().toString()).openStream();
|
||||
this.document = new XWPFDocument(is);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public ExternalUrls getExternalUrls() {
|
||||
this.setExternalUrls();
|
||||
return externalUrls;
|
||||
|
@ -80,4 +94,9 @@ public class ProductionConfigLoader implements ConfigLoader {
|
|||
this.setRdaProperties();
|
||||
return rdaProperties;
|
||||
}
|
||||
|
||||
public XWPFDocument getDocument() {
|
||||
this.setDocument();
|
||||
return document;
|
||||
}
|
||||
}
|
|
@ -18,7 +18,7 @@ pdf.converter.url=http://localhost:88/
|
|||
configuration.externalUrls=/web/src/main/resources/ExternalUrls.xml
|
||||
configuration.rda=/web/src/main/resources/RDACommonStandards.txt
|
||||
configuration.loginProviders=C:/Users/gkolokythas/Documents/openDmp/dmp-backend/web/src/main/resources/LoginProviders.xml
|
||||
configuration.h2020template=C:/Users/gkolokythas/Documents/openDmp/dmp-backend/web/src/main/resources/documents/h2020.docx
|
||||
configuration.h2020template=/web/src/main/resources/documents/h2020.docx
|
||||
|
||||
|
||||
#############TWITTER LOGIN CONFIGURATIONS#########
|
||||
|
|
Loading…
Reference in New Issue