diff --git a/dmp-backend/pom.xml b/dmp-backend/pom.xml
index 9e0cbd248..9a5316c13 100644
--- a/dmp-backend/pom.xml
+++ b/dmp-backend/pom.xml
@@ -174,13 +174,13 @@
org.apache.poi
poi-ooxml
- 4.0.0
+ 4.1.1
org.apache.poi
poi
- 4.0.0
+ 4.1.1
diff --git a/dmp-backend/web/src/main/java/eu/eudat/configurations/ElasticSearchConfiguration.java b/dmp-backend/web/src/main/java/eu/eudat/configurations/ElasticSearchConfiguration.java
index e299035e1..49f7de4b4 100644
--- a/dmp-backend/web/src/main/java/eu/eudat/configurations/ElasticSearchConfiguration.java
+++ b/dmp-backend/web/src/main/java/eu/eudat/configurations/ElasticSearchConfiguration.java
@@ -4,11 +4,14 @@ import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager;
import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
import org.apache.http.nio.reactor.IOReactorException;
import org.apache.http.nio.reactor.IOReactorExceptionHandler;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.ssl.SSLContexts;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.slf4j.Logger;
@@ -18,7 +21,17 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.security.KeyStore;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
/**
* Created by ikalyvas on 7/5/2018.
@@ -56,12 +69,41 @@ public class ElasticSearchConfiguration {
}
});
- RestHighLevelClient client = new RestHighLevelClient(
- RestClient.builder(
- new HttpHost(this.environment.getProperty("elasticsearch.host"),
- Integer.parseInt(this.environment.getProperty("elasticsearch.port")), "http"))
- .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
- .setDefaultCredentialsProvider(credentialsProvider).setConnectionManager(new PoolingNHttpClientConnectionManager(ioReactor))));
+ RestHighLevelClient client;
+ if(this.environment.getProperty("elasticsearch.usingssl", Boolean.class)){
+
+ Path caCertificatePath = Paths.get(this.environment.getProperty("elasticsearch.certPath"));
+ CertificateFactory factory =
+ CertificateFactory.getInstance("X.509");
+ Certificate trustedCa;
+ try (InputStream is = Files.newInputStream(caCertificatePath)) {
+ trustedCa = factory.generateCertificate(is);
+ }
+ KeyStore trustStore = KeyStore.getInstance("pkcs12");
+ trustStore.load(null, null);
+ trustStore.setCertificateEntry("ca", trustedCa);
+
+ TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ tmf.init(trustStore);
+
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, tmf.getTrustManagers(), null);
+
+ client = new RestHighLevelClient(
+ RestClient.builder(
+ new HttpHost(this.environment.getProperty("elasticsearch.host"),
+ Integer.parseInt(this.environment.getProperty("elasticsearch.port")), "https"))
+ .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
+ .setDefaultCredentialsProvider(credentialsProvider).setSSLContext(sslContext)));
+ }
+ else {
+ client = new RestHighLevelClient(
+ RestClient.builder(
+ new HttpHost(this.environment.getProperty("elasticsearch.host"),
+ Integer.parseInt(this.environment.getProperty("elasticsearch.port")), "http"))
+ .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
+ .setDefaultCredentialsProvider(credentialsProvider).setConnectionManager(new PoolingNHttpClientConnectionManager(ioReactor))));
+ }
return client;
}catch (IOReactorException ex) {
throw new RuntimeException(ex);
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 bdc9b1826..f4c4070eb 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
@@ -1190,43 +1190,45 @@ public class DataManagementPlanManager {
if (!dmpEntity.isPublic() && dmpEntity.getUsers().stream().filter(userInfo -> userInfo.getUser().getId() == principal.getId()).collect(Collectors.toList()).size() == 0)
throw new UnauthorisedException();
- // DMP info on top of the document.
- wordBuilder.addParagraphContent("Data Management Plan Information", document, ParagraphStyle.HEADER1, BigInteger.ZERO);
- // DMP title custom style.
- wordBuilder.addParagraphContent(dmpEntity.getLabel(), document, ParagraphStyle.HEADER2, BigInteger.ZERO);
- wordBuilder.addParagraphContent(dmpEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO);
+ wordBuilder.fillFirstPage(dmpEntity, document);
- wordBuilder.addParagraphContent("Funder", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
- if (dmpEntity.getGrant().getFunder() != null)
- wordBuilder.addParagraphContent(dmpEntity.getGrant().getFunder().getLabel(), document, ParagraphStyle.TEXT, BigInteger.ZERO);
-
- wordBuilder.addParagraphContent("Grant", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
- wordBuilder.addParagraphContent(dmpEntity.getGrant().getLabel(), document, ParagraphStyle.TEXT, BigInteger.ZERO);
-
- wordBuilder.addParagraphContent("Organisations", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
- if (dmpEntity.getOrganisations().size() > 0) {
- wordBuilder.addParagraphContent(dmpEntity.getOrganisations().stream().map(Organisation::getLabel).collect(Collectors.joining(", "))
- , document, ParagraphStyle.TEXT, BigInteger.ZERO);
- }
-
- wordBuilder.addParagraphContent("Researchers", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
- if (dmpEntity.getResearchers().size() > 0) {
- wordBuilder.addParagraphContent(dmpEntity.getResearchers().stream().map(Researcher::getLabel).collect(Collectors.joining(", "))
- , document, ParagraphStyle.TEXT, BigInteger.ZERO);
- }
-
- /*wordBuilder.addParagraphContent("DMP Profile", document, ParagraphStyle.HEADER2, BigInteger.ZERO);
- if (dmpEntity.getProfile() != null){
- wordBuilder.addParagraphContent(dmpEntity.getProfile().getLabel(), document, ParagraphStyle.TEXT, BigInteger.ZERO);
- }*/
-
- // Page break at the end of the DMP title.
- XWPFParagraph parBreakDMP = document.createParagraph();
- parBreakDMP.setPageBreak(true);
-
- wordBuilder.addParagraphContent("Datasets", document, ParagraphStyle.HEADER1, BigInteger.ZERO);
- // Space below Datasets.
- XWPFParagraph parBreakDatasets = document.createParagraph();
+// // DMP info on top of the document.
+// wordBuilder.addParagraphContent("Data Management Plan Information", document, ParagraphStyle.HEADER1, BigInteger.ZERO);
+// // DMP title custom style.
+// wordBuilder.addParagraphContent(dmpEntity.getLabel(), document, ParagraphStyle.HEADER2, BigInteger.ZERO);
+// wordBuilder.addParagraphContent(dmpEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO);
+//
+// wordBuilder.addParagraphContent("Funder", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
+// if (dmpEntity.getGrant().getFunder() != null)
+// wordBuilder.addParagraphContent(dmpEntity.getGrant().getFunder().getLabel(), document, ParagraphStyle.TEXT, BigInteger.ZERO);
+//
+// wordBuilder.addParagraphContent("Grant", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
+// wordBuilder.addParagraphContent(dmpEntity.getGrant().getLabel(), document, ParagraphStyle.TEXT, BigInteger.ZERO);
+//
+// wordBuilder.addParagraphContent("Organisations", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
+// if (dmpEntity.getOrganisations().size() > 0) {
+// wordBuilder.addParagraphContent(dmpEntity.getOrganisations().stream().map(Organisation::getLabel).collect(Collectors.joining(", "))
+// , document, ParagraphStyle.TEXT, BigInteger.ZERO);
+// }
+//
+// wordBuilder.addParagraphContent("Researchers", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
+// if (dmpEntity.getResearchers().size() > 0) {
+// wordBuilder.addParagraphContent(dmpEntity.getResearchers().stream().map(Researcher::getLabel).collect(Collectors.joining(", "))
+// , document, ParagraphStyle.TEXT, BigInteger.ZERO);
+// }
+//
+// /*wordBuilder.addParagraphContent("DMP Profile", document, ParagraphStyle.HEADER2, BigInteger.ZERO);
+// if (dmpEntity.getProfile() != null){
+// wordBuilder.addParagraphContent(dmpEntity.getProfile().getLabel(), document, ParagraphStyle.TEXT, BigInteger.ZERO);
+// }*/
+//
+// // Page break at the end of the DMP title.
+// XWPFParagraph parBreakDMP = document.createParagraph();
+// parBreakDMP.setPageBreak(true);
+//
+// wordBuilder.addParagraphContent("Datasets", document, ParagraphStyle.HEADER1, BigInteger.ZERO);
+// // Space below Datasets.
+// XWPFParagraph parBreakDatasets = document.createParagraph();
final Boolean isFinalized = dmpEntity.getStatus() == DMP.DMPStatus.FINALISED.getValue();
final Boolean isPublic = dmpEntity.isPublic();
dmpEntity.getDataset().stream()
@@ -1251,73 +1253,79 @@ public class DataManagementPlanManager {
//wordBuilder.addParagraphContent("Title: " + datasetEntity.getLabel(), document, ParagraphStyle.HEADER1, BigInteger.ZERO);
XWPFParagraph datasetLabelParagraph = document.createParagraph();
datasetLabelParagraph.setStyle("Heading2");
+ datasetLabelParagraph.setSpacingBetween(1.0);
XWPFRun runDatasetTitle1 = datasetLabelParagraph.createRun();
runDatasetTitle1.setText("Title: ");
- runDatasetTitle1.setBold(true);
- runDatasetTitle1.setFontSize(12);
+ runDatasetTitle1.setColor("000000");
+ //runDatasetTitle1.setBold(true);
+ //runDatasetTitle1.setFontSize(12);
XWPFRun runDatasetTitle = datasetLabelParagraph.createRun();
runDatasetTitle.setText(datasetEntity.getLabel());
- runDatasetTitle.setColor("2E75B6");
- runDatasetTitle.setBold(true);
- runDatasetTitle.setFontSize(12);
+ //runDatasetTitle.setColor("2E75B6");
+ //runDatasetTitle.setBold(true);
+ //runDatasetTitle.setFontSize(12);
XWPFParagraph datasetTemplateParagraph = document.createParagraph();
datasetTemplateParagraph.setStyle("Heading3");
XWPFRun runDatasetTemplate1 = datasetTemplateParagraph.createRun();
runDatasetTemplate1.setText("Template: ");
- runDatasetTemplate1.setBold(true);
- runDatasetTemplate1.setFontSize(12);
+ runDatasetTemplate1.setColor("000000");
+ //runDatasetTemplate1.setBold(true);
+ //runDatasetTemplate1.setFontSize(12);
XWPFRun runDatasetTemplate = datasetTemplateParagraph.createRun();
runDatasetTemplate.setText(datasetEntity.getProfile().getLabel());
- runDatasetTemplate.setColor("2E75B6");
- runDatasetTemplate.setBold(true);
- runDatasetTemplate.setFontSize(12);
+ //runDatasetTemplate.setColor("2E75B6");
+ //runDatasetTemplate.setBold(true);
+ //runDatasetTemplate.setFontSize(12);
- /*XWPFParagraph externalReferencesParagraph = document.createParagraph();
- externalReferencesParagraph.setStyle("Heading3");
- XWPFRun externalReferencesRun = externalReferencesParagraph.createRun();
- externalReferencesRun.setText("External References");
- externalReferencesRun.setColor("2E75B6");
- externalReferencesRun.setBold(true);
- externalReferencesRun.setFontSize(12);
+ document.createParagraph();
- wordBuilder.addParagraphContent("Data Repositories", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
- if (datasetEntity.getDatasetDataRepositories().size() > 0) {
- wordBuilder.addParagraphContent(datasetEntity.getDatasetDataRepositories().stream().map(DatasetDataRepository::getDataRepository).map(DataRepository::getLabel).collect(Collectors.joining(", "))
- , document, ParagraphStyle.TEXT, BigInteger.ZERO);
- }
- wordBuilder.addParagraphContent("External Datasets", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
- if (datasetEntity.getDatasetExternalDatasets().size() > 0) {
- wordBuilder.addParagraphContent(datasetEntity.getDatasetExternalDatasets().stream().map(DatasetExternalDataset::getExternalDataset).map(ExternalDataset::getLabel).collect(Collectors.joining(", "))
- , document, ParagraphStyle.TEXT, BigInteger.ZERO);
- }
- wordBuilder.addParagraphContent("Registries", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
- if (datasetEntity.getRegistries().size() > 0) {
- wordBuilder.addParagraphContent(datasetEntity.getRegistries().stream().map(Registry::getLabel).collect(Collectors.joining(", "))
- , document, ParagraphStyle.TEXT, BigInteger.ZERO);
- }
- wordBuilder.addParagraphContent("Services", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
- if (datasetEntity.getServices().size() > 0) {
- wordBuilder.addParagraphContent(datasetEntity.getServices().stream().map(DatasetService::getService).map(Service::getLabel).collect(Collectors.joining(", "))
- , document, ParagraphStyle.TEXT, BigInteger.ZERO);
- }
- *//*wordBuilder.addParagraphContent("Tags", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
- if (datasetEntity.().size() > 0) {
- wordBuilder.addParagraphContent(datasetEntity.getServices().stream().map(DatasetService::getService).map(Service::getLabel).collect(Collectors.joining(", "))
- , document, ParagraphStyle.HEADER4, BigInteger.ZERO);
- }*/
-
-
- wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO);
+// /*XWPFParagraph externalReferencesParagraph = document.createParagraph();
+// externalReferencesParagraph.setStyle("Heading3");
+// XWPFRun externalReferencesRun = externalReferencesParagraph.createRun();
+// externalReferencesRun.setText("External References");
+// externalReferencesRun.setColor("2E75B6");
+// externalReferencesRun.setBold(true);
+// externalReferencesRun.setFontSize(12);
+//
+// wordBuilder.addParagraphContent("Data Repositories", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
+// if (datasetEntity.getDatasetDataRepositories().size() > 0) {
+// wordBuilder.addParagraphContent(datasetEntity.getDatasetDataRepositories().stream().map(DatasetDataRepository::getDataRepository).map(DataRepository::getLabel).collect(Collectors.joining(", "))
+// , document, ParagraphStyle.TEXT, BigInteger.ZERO);
+// }
+// wordBuilder.addParagraphContent("External Datasets", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
+// if (datasetEntity.getDatasetExternalDatasets().size() > 0) {
+// wordBuilder.addParagraphContent(datasetEntity.getDatasetExternalDatasets().stream().map(DatasetExternalDataset::getExternalDataset).map(ExternalDataset::getLabel).collect(Collectors.joining(", "))
+// , document, ParagraphStyle.TEXT, BigInteger.ZERO);
+// }
+// wordBuilder.addParagraphContent("Registries", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
+// if (datasetEntity.getRegistries().size() > 0) {
+// wordBuilder.addParagraphContent(datasetEntity.getRegistries().stream().map(Registry::getLabel).collect(Collectors.joining(", "))
+// , document, ParagraphStyle.TEXT, BigInteger.ZERO);
+// }
+// wordBuilder.addParagraphContent("Services", document, ParagraphStyle.HEADER4, BigInteger.ZERO);
+// if (datasetEntity.getServices().size() > 0) {
+// wordBuilder.addParagraphContent(datasetEntity.getServices().stream().map(DatasetService::getService).map(Service::getLabel).collect(Collectors.joining(", "))
+// , document, ParagraphStyle.TEXT, BigInteger.ZERO);
+// }
+// *//*wordBuilder.addParagraphContent("Tags", document, ParagraphStyle.HEADER3, BigInteger.ZERO);
+// if (datasetEntity.().size() > 0) {
+// wordBuilder.addParagraphContent(datasetEntity.getServices().stream().map(DatasetService::getService).map(Service::getLabel).collect(Collectors.joining(", "))
+// , document, ParagraphStyle.HEADER4, BigInteger.ZERO);
+// }*/
+//
+//
+// wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO);
// Dataset Description custom style.
XWPFParagraph datasetDescriptionParagraph = document.createParagraph();
datasetDescriptionParagraph.setStyle("Heading3");
+ datasetDescriptionParagraph.setSpacingBetween(1.5);
XWPFRun datasetDescriptionRun = datasetDescriptionParagraph.createRun();
datasetDescriptionRun.setText("Dataset Description");
- datasetDescriptionRun.setColor("2E75B6");
- datasetDescriptionRun.setBold(true);
- datasetDescriptionRun.setFontSize(12);
+ //datasetDescriptionRun.setColor("2E75B6");
+ //datasetDescriptionRun.setBold(true);
+ datasetDescriptionRun.setFontSize(15);
PagedDatasetProfile pagedDatasetProfile = datasetManager.getPagedProfile(dataset, datasetEntity);
visibilityRuleService.setProperties(properties);
@@ -1329,12 +1337,15 @@ public class DataManagementPlanManager {
}
// Page break at the end of the Dataset.
XWPFParagraph parBreakDataset = document.createParagraph();
+ parBreakDataset.setPageBreak(true);
});
- // Removes the top empty headings.
- for (int i = 0; i < 6; i++) {
- document.removeBodyElement(0);
- }
+// // Removes the top empty headings.
+// for (int i = 0; i < 6; i++) {
+// document.removeBodyElement(0);
+// }
+
+ wordBuilder.fillFooter(dmpEntity, document);
String fileName = "DMP_" + dmpEntity.getGrant().getLabel();
if (versioned) {
diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java b/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java
index 4dc311f74..44b2f1be4 100644
--- a/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java
+++ b/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java
@@ -167,7 +167,16 @@ public class PrefillingMapper {
List licenses = licenseManager.getLicenses("", "");
String finalParsedValue = parsedValue;
licenses = licenses.stream().filter(license -> license.getPid().equals(finalParsedValue)).collect(Collectors.toList());
- properties.put(id, licenses);
+ boolean isMultiAutocomplete = node.isArray() ? node.get(0).get("data").get("multiAutoComplete").booleanValue() : node.get("data").get("multiAutoComplete").booleanValue();
+ if(isMultiAutocomplete){
+ List lic = new ArrayList<>();
+ for(LicenseModel license: licenses){
+ lic.add(mapper.writeValueAsString(license));
+ }
+ properties.put(id, mapper.writeValueAsString(lic));
+ } else {
+ properties.put(id, mapper.writeValueAsString(licenses.get(0)));
+ }
}
catch (NoURLFound | HugeResultSet e){
properties.put(id, parsedValue);
diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java
index f1b1f8e83..6ffa49735 100644
--- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java
+++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java
@@ -1,7 +1,11 @@
package eu.eudat.logic.utilities.documents.word;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
+import eu.eudat.data.entities.DMP;
+import eu.eudat.data.entities.Organisation;
+import eu.eudat.data.entities.Researcher;
import eu.eudat.logic.services.forms.VisibilityRuleService;
import eu.eudat.logic.utilities.documents.types.ParagraphStyle;
import eu.eudat.logic.utilities.interfaces.ApplierWithValue;
@@ -31,6 +35,8 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigInteger;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
@@ -76,7 +82,7 @@ public class WordBuilder {
XWPFParagraph paragraph = mainDocumentPart.createParagraph();
XWPFRun run = paragraph.createRun();
if (item != null)
- run.setText(" " + item);
+ run.setText("" + item);
run.setFontSize(11);
return paragraph;
});
@@ -109,7 +115,7 @@ public class WordBuilder {
XWPFParagraph paragraph = mainDocumentPart.createParagraph();
paragraph.setStyle("Heading2");
XWPFRun run = paragraph.createRun();
- run.setText(" " + item);
+ run.setText("" + item);
// run.setBold(true);
// run.setFontSize(12);
return paragraph;
@@ -118,7 +124,7 @@ public class WordBuilder {
XWPFParagraph paragraph = mainDocumentPart.createParagraph();
paragraph.setStyle("Heading3");
XWPFRun run = paragraph.createRun();
- run.setText(" " + item);
+ run.setText("" + item);
// run.setBold(true);
// run.setFontSize(11);
return paragraph;
@@ -134,14 +140,14 @@ public class WordBuilder {
XWPFParagraph paragraph = mainDocumentPart.createParagraph();
paragraph.setStyle("Heading5");
XWPFRun run = paragraph.createRun();
- run.setText(" " + item);
+ run.setText("" + item);
return paragraph;
});
this.options.put(ParagraphStyle.HEADER6, (mainDocumentPart, item) -> {
XWPFParagraph paragraph = mainDocumentPart.createParagraph();
paragraph.setStyle("Heading6");
XWPFRun run = paragraph.createRun();
- run.setText(" " + item);
+ run.setText("" + item);
return paragraph;
});
this.options.put(ParagraphStyle.FOOTER, (mainDocumentPart, item) -> {
@@ -153,7 +159,7 @@ public class WordBuilder {
this.options.put(ParagraphStyle.COMMENT, (mainDocumentPart, item) -> {
XWPFParagraph paragraph = mainDocumentPart.createParagraph();
XWPFRun run = paragraph.createRun();
- run.setText(" " + item);
+ run.setText("" + item);
run.setItalic(true);
return paragraph;
});
@@ -279,17 +285,19 @@ public class WordBuilder {
for (FieldSet compositeField: compositeFields) {
if (visibilityRuleService.isElementVisible(compositeField.getId()) && hasVisibleFields(compositeField, visibilityRuleService)) {
char c = 'a';
+ boolean hasMultiplicityItems = false;
int paragraphPos = -1;
if (compositeField.getTitle() != null && !compositeField.getTitle().isEmpty() && !createListing) {
- XWPFParagraph paragraph = addParagraphContent(page + "." + section + "." + (compositeField.getOrdinal() +1) + " " + compositeField.getTitle(), mainDocumentPart, ParagraphStyle.HEADER6, numId);
+ XWPFParagraph paragraph = addParagraphContent("\t" + page + "." + section + "." + (compositeField.getOrdinal() +1) + " " + compositeField.getTitle(), mainDocumentPart, ParagraphStyle.HEADER6, numId);
CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
number.setVal(BigInteger.valueOf(indent));
paragraphPos = mainDocumentPart.getPosOfParagraph(paragraph);
if(compositeField.getMultiplicityItems() != null && !compositeField.getMultiplicityItems().isEmpty()){
- addParagraphContent(c + ".\n", mainDocumentPart, ParagraphStyle.HEADER6, numId);
+ addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.HEADER6, numId);
+ hasMultiplicityItems = true;
}
}
- hasValue = createFields(compositeField.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService);
+ hasValue = createFields(compositeField.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService, hasMultiplicityItems);
if(hasValue){
returnedValue = true;
}
@@ -298,16 +306,17 @@ public class WordBuilder {
for (FieldSet multiplicityFieldset : list) {
if(!createListing){
c++;
- addParagraphContent(c + ".\n", mainDocumentPart, ParagraphStyle.HEADER6, numId);
+ addParagraphContent(c + ". ", mainDocumentPart, ParagraphStyle.HEADER6, numId);
+ hasMultiplicityItems = true;
}
- hasValue = createFields(multiplicityFieldset.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService);
+ hasValue = createFields(multiplicityFieldset.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService, hasMultiplicityItems);
if(hasValue){
returnedValue = true;
}
}
}
if (hasValue && compositeField.getHasCommentField() && compositeField.getCommentFieldValue() != null && !compositeField.getCommentFieldValue().isEmpty() && !createListing) {
- XWPFParagraph paragraph = addParagraphContent("Comment: " + compositeField.getCommentFieldValue(), mainDocumentPart, ParagraphStyle.COMMENT, numId);
+ XWPFParagraph paragraph = addParagraphContent("Comment:\n"+compositeField.getCommentFieldValue(), mainDocumentPart, ParagraphStyle.HTML, numId);
CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
number.setVal(BigInteger.valueOf(indent));
}
@@ -319,19 +328,10 @@ public class WordBuilder {
return returnedValue;
}
- private Boolean createFields(List fields, XWPFDocument mainDocumentPart, Integer indent, Boolean createListing, VisibilityRuleService visibilityRuleService) {
+ private Boolean createFields(List fields, XWPFDocument mainDocumentPart, Integer indent, Boolean createListing, VisibilityRuleService visibilityRuleService, boolean hasMultiplicityItems) {
if (createListing) this.addListing(mainDocumentPart, indent, false, false);
boolean hasValue = false;
List tempFields = fields.stream().sorted(Comparator.comparingInt(Field::getOrdinal)).collect(Collectors.toList());
- List formats = tempFields.stream().filter(f -> {
- try {
- String fTemp = this.formatter(f);
- return fTemp != null && !fTemp.isEmpty();
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return false;
- }).collect(Collectors.toList());
for (Field field: tempFields) {
if (visibilityRuleService.isElementVisible(field.getId()) && field.getExport()) {
if (!createListing) {
@@ -346,13 +346,16 @@ public class WordBuilder {
}
}
if(isImage){
- if (!field.getValue().toString().isEmpty()) {
+ if (field.getValue() != null && !field.getValue().toString().isEmpty()) {
XWPFParagraph paragraph = addParagraphContent(mapper.convertValue(field.getValue(), Map.class), mainDocumentPart, ParagraphStyle.IMAGE, numId);
if (paragraph != null) {
CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
number.setVal(BigInteger.valueOf(indent));
hasValue = true;
}
+ if(hasMultiplicityItems){
+ hasMultiplicityItems = false;
+ }
}
}
}
@@ -364,19 +367,69 @@ public class WordBuilder {
} else if (field.getViewStyle().getRenderStyle().equals("combobox") && field.getData() instanceof AutoCompleteData) {
format = getCommaSeparatedFormatsFromJson(format, "label");
}
+ boolean isResearcher = field.getViewStyle().getRenderStyle().equals("researchers");
if(format != null && !format.isEmpty()){
- if(format.charAt(0) == '['){
- format = format.substring(1, format.length() - 1).replaceAll(",", ", ");
- }
- if(formats.size() > 1){
- format = "\t• " + format;
+ Object hasMultiAutoComplete = mapper.convertValue(field.getData(), Map.class).get("multiAutoComplete");
+ boolean isMultiAutoComplete = hasMultiAutoComplete != null && (boolean)hasMultiAutoComplete;
+ boolean arrayStringFormat = format.charAt(0) == '[';
+ if(arrayStringFormat || isMultiAutoComplete){
+ List values = (arrayStringFormat) ? Arrays.asList(format.substring(1, format.length() - 1).split(",[ ]*")) : Arrays.asList(format.split(",[ ]*"));
+ if(values.size() > 1) {
+ boolean orcidResearcher;
+ for (String val : values) {
+ orcidResearcher = false;
+ String orcId = null;
+ if(isResearcher && val.contains("orcid:")){
+ orcId = val.substring(val.indexOf(':') + 1, val.indexOf(')'));
+ val = val.substring(0, val.indexOf(':') + 1);
+ orcidResearcher = true;
+ }
+ format = "• " + val;
+ if(hasMultiplicityItems){
+ mainDocumentPart.getLastParagraph().createRun().setText(format);
+ if(orcidResearcher){
+ XWPFHyperlinkRun run = mainDocumentPart.getLastParagraph().createHyperlinkRun("https://orcid.org/" + orcId);
+ run.setText(orcId);
+ run.setUnderline(UnderlinePatterns.SINGLE);
+ run.setColor("0000FF");
+ mainDocumentPart.getLastParagraph().createRun().setText(")");
+ }
+ hasMultiplicityItems = false;
+ }
+ else{
+ XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId);
+ if(orcidResearcher){
+ XWPFHyperlinkRun run = paragraph.createHyperlinkRun("https://orcid.org/" + orcId);
+ run.setText(orcId);
+ run.setUnderline(UnderlinePatterns.SINGLE);
+ run.setColor("0000FF");
+ paragraph.createRun().setText(")");
+ }
+ if (paragraph != null) {
+ CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
+ number.setVal(BigInteger.valueOf(indent));
+ hasValue = true;
+ }
+ }
+ format = null;
+ }
+ }
+ else if(values.size() == 1){
+ format = values.get(0);
+ }
}
}
- XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId);
- if (paragraph != null) {
- CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
- number.setVal(BigInteger.valueOf(indent));
- hasValue = true;
+ if(hasMultiplicityItems && format != null){
+ mainDocumentPart.getLastParagraph().createRun().setText(format);
+ hasMultiplicityItems = false;
+ }
+ else{
+ XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getViewStyle().getRenderStyle().equals("richTextarea") ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId);
+ if (paragraph != null) {
+ CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl();
+ number.setVal(BigInteger.valueOf(indent));
+ hasValue = true;
+ }
}
}
} catch (IOException e) {
@@ -576,4 +629,97 @@ public class WordBuilder {
}
return result;
}
+
+ public void fillFirstPage(DMP dmpEntity, XWPFDocument document) {
+ for(XWPFParagraph p: document.getParagraphs()){
+ List runs = p.getRuns();
+ if(runs != null){
+ for(XWPFRun r : runs){
+ String text = r.getText(0);
+ if(text != null){
+ if(text.contains("{ARGOS.DMP.VERSION}")){
+ text = text.replace("{ARGOS.DMP.VERSION}", "VERSION " + dmpEntity.getVersion());
+ r.setText(text, 0);
+ }
+ else if(text.contains("{ARGOS.DMP.FUNDER}")){
+ text = text.replace("{ARGOS.DMP.FUNDER}", dmpEntity.getGrant().getFunder().getLabel());
+ r.setText(text, 0);
+ }
+ else if(text.contains("{ARGOS.DMP.GRANT}")){
+ text = text.replace("{ARGOS.DMP.GRANT}", dmpEntity.getGrant().getLabel());
+ r.setText(text, 0);
+ }
+ }
+ }
+ }
+ }
+
+ int researchers = dmpEntity.getResearchers().size();
+ int organizations = dmpEntity.getOrganisations().size();
+ if(researchers > 0 || organizations > 0){
+ XWPFTable tbl = document.getTables().get(0);
+ for(int i = (Integer.max(researchers, organizations) - 1); i > 0; i--)
+ tbl.createRow();
+ Iterator it = tbl.getRows().iterator();
+ it.next(); // skip first row
+ for(Researcher researcher : dmpEntity.getResearchers()){
+ if(it.hasNext()){
+ XWPFRun run = it.next().getCell(0).getParagraphs().get(0).createRun();
+ run.setText(researcher.getLabel());
+ run.setFontSize(17);
+ }
+ }
+ it = tbl.getRows().iterator();
+ it.next();
+ for(Organisation organisation : dmpEntity.getOrganisations()){
+ if(it.hasNext()){
+ XWPFParagraph p = it.next().getCell(1).getParagraphs().get(0);
+ XWPFRun run = p.createRun();
+ run.setText(organisation.getLabel());
+ run.setFontSize(17);
+ p.setAlignment(ParagraphAlignment.RIGHT);
+ }
+ }
+ }
+ }
+
+ public void fillFooter(DMP dmpEntity, XWPFDocument document) {
+ document.getFooterList().forEach(xwpfFooter -> {
+ List runs = xwpfFooter.getParagraphs().get(0).getRuns();
+ if(runs != null){
+ for(XWPFRun r : runs){
+ String text = r.getText(0);
+ if(text != null){
+ if(text.contains("{ARGOS.DMP.TITLE}")){
+ text = text.replace("{ARGOS.DMP.TITLE}", dmpEntity.getLabel());
+ r.setText(text, 0);
+ }
+ if(text.contains("{ARGOS.DMP.LICENSE}")){
+ try{
+ Map license = ((Map) mapper.readValue(dmpEntity.getExtraProperties(), Map.class).get("license"));
+ text = text.replace("{ARGOS.DMP.LICENSE}", license.get("pid"));
+ }
+ catch (JsonProcessingException | NullPointerException e){
+ text = text.replace("{ARGOS.DMP.LICENSE}", "License: -");
+ }
+ r.setText(text, 0);
+ }
+ if(text.contains("{ARGOS.DMP.DOI}")){
+ String doi = dmpEntity.getDoi();
+ if(doi != null)
+ text = text.replace("{ARGOS.DMP.DOI}", doi);
+ else
+ text = text.replace("{ARGOS.DMP.DOI}", "-");
+ r.setText(text, 0);
+ }
+ if(text.contains("{ARGOS.DMP.LAST_MODIFIED}")){
+ DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
+ text = text.replace("{ARGOS.DMP.LAST_MODIFIED}", formatter.format(dmpEntity.getModified()));
+ r.setText(text, 0);
+ }
+ }
+ }
+ }
+ });
+ }
}
diff --git a/dmp-backend/web/src/main/resources/config/application.properties b/dmp-backend/web/src/main/resources/config/application.properties
index e6d2f9a93..dafa101e4 100644
--- a/dmp-backend/web/src/main/resources/config/application.properties
+++ b/dmp-backend/web/src/main/resources/config/application.properties
@@ -36,6 +36,16 @@ spring.mail.test-connection=false
spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.starttls.enable=false
+####################ELASTIIC SEARCH TAGS OVERRIDES CONFIGURATIONS##########
+elasticsearch.host=
+elasticsearch.port=
+elasticsearch.username=
+elasticsearch.password=
+elasticsearch.index=
+elasticsearch.usingssl=false
+elasticsearch.certPath=
+elasticsearch.certKey=
+
####################CONFIGURATION FILES OVERRIDES CONFIGURATIONS##########
configuration.externalUrls=externalUrls/ExternalUrls.xml
configuration.rda=RDACommonStandards.txt
diff --git a/dmp-backend/web/src/main/resources/configurableLoginProviders.json b/dmp-backend/web/src/main/resources/configurableLoginProviders.json
index b3d8114b2..c569f0dd6 100644
--- a/dmp-backend/web/src/main/resources/configurableLoginProviders.json
+++ b/dmp-backend/web/src/main/resources/configurableLoginProviders.json
@@ -27,27 +27,9 @@
},
{
"enabled": false,
- "type": "",
+ "type": "saml2",
"configurableLoginId": "",
- "name": "",
- "spEntityId": "",
- "idpEntityId": "",
- "idpUrl": "",
- "idpArtifactUrl": "",
- "idpMetadataUrl": "",
- "assertionEncrypted": null,
- "keyFormat": "",
- "keyAlias": "",
- "credentialPath": "",
- "archivePassword": "",
- "keyPassword": "",
- "responseSigned": null,
- "assertionSigned": null,
- "usingFormat": "",
- "configurableUserFromAttributes": null,
- "attributeTypes": null,
- "binding": "",
- "logoUrl": ""
+ "name": ""
}
]
}
diff --git a/dmp-backend/web/src/main/resources/documents/h2020.docx b/dmp-backend/web/src/main/resources/documents/h2020.docx
index be91c70f9..3b30f8d94 100644
Binary files a/dmp-backend/web/src/main/resources/documents/h2020.docx and b/dmp-backend/web/src/main/resources/documents/h2020.docx differ
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html
index d8ee36071..2d8594873 100644
--- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html
+++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html
@@ -28,10 +28,14 @@
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' | translate}}
-
-
- {{'DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.COMMENT-HINT' | translate}}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+