diff --git a/dmp-backend/pom.xml b/dmp-backend/pom.xml index 2a0c2a96b..65d13d770 100644 --- a/dmp-backend/pom.xml +++ b/dmp-backend/pom.xml @@ -185,6 +185,19 @@ commons-lang3 3.5 + + + org.apache.poi + poi-ooxml + 3.17 + + + + org.apache.poi + poi + 3.17 + + @@ -247,6 +260,12 @@ provided + + + profile + production + + \ No newline at end of file diff --git a/dmp-backend/src/main/java/eu/eudat/controllers/DatasetWizardController.java b/dmp-backend/src/main/java/eu/eudat/controllers/DatasetWizardController.java index d2fbcbcbf..989406bbf 100644 --- a/dmp-backend/src/main/java/eu/eudat/controllers/DatasetWizardController.java +++ b/dmp-backend/src/main/java/eu/eudat/controllers/DatasetWizardController.java @@ -13,11 +13,17 @@ import eu.eudat.models.security.Principal; import eu.eudat.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.transaction.Transactional; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; import java.util.List; @@ -81,4 +87,22 @@ public class DatasetWizardController extends BaseController { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.DEFAULT_ERROR_MESSAGE).message(ex.getMessage())); } } + + @RequestMapping(method = RequestMethod.GET, value = {"/getWordDocument/{id}"}, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) + public @ResponseBody + ResponseEntity getWordDocument(@PathVariable String id) { + try { + File file = new DatasetManager().getWordDocument(this.getApiContext().getDatabaseRepository().getDatasetDao(), id); + InputStreamResource resource = new InputStreamResource(new FileInputStream(file)); + + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, + "attachment;filename=" + file.getName()) + .contentType(MediaType.APPLICATION_PDF).contentLength(file.length()) + .body(resource); + } catch (Exception ex) { + ex.printStackTrace(); + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } + } } diff --git a/dmp-backend/src/main/java/eu/eudat/documents/types/ParagraphStyle.java b/dmp-backend/src/main/java/eu/eudat/documents/types/ParagraphStyle.java new file mode 100644 index 000000000..bd38cdbd1 --- /dev/null +++ b/dmp-backend/src/main/java/eu/eudat/documents/types/ParagraphStyle.java @@ -0,0 +1,41 @@ +package eu.eudat.documents.types; + +/** + * Created by ikalyvas on 2/26/2018. + */ +public enum ParagraphStyle { + TEXT(0), HEADER1(1), HEADER2(2), HEADER3(3), HEADER4(4), TITLE(5), FOOTER(6), COMMENT(7); + + private Integer value; + + private ParagraphStyle(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + public static ParagraphStyle fromInteger(Integer value) { + switch (value) { + case 0: + return TEXT; + case 1: + return HEADER1; + case 2: + return HEADER2; + case 3: + return HEADER3; + case 4: + return HEADER4; + case 5: + return TITLE; + case 6: + return FOOTER; + case 7: + return COMMENT; + default: + throw new RuntimeException("Unsupported ParagraphStyle Code"); + } + } +} diff --git a/dmp-backend/src/main/java/eu/eudat/documents/types/TextStyle.java b/dmp-backend/src/main/java/eu/eudat/documents/types/TextStyle.java new file mode 100644 index 000000000..ad42d9eec --- /dev/null +++ b/dmp-backend/src/main/java/eu/eudat/documents/types/TextStyle.java @@ -0,0 +1,31 @@ +package eu.eudat.documents.types; + +/** + * Created by ikalyvas on 2/27/2018. + */ +public enum TextStyle { + ITALIC(0), BOLD(1), CAPS(2); + + private Integer value; + + private TextStyle(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + public static TextStyle fromInteger(Integer value) { + switch (value) { + case 0: + return ITALIC; + case 1: + return BOLD; + case 2: + return CAPS; + default: + throw new RuntimeException("Unsupported TextStyle Code"); + } + } +} diff --git a/dmp-backend/src/main/java/eu/eudat/documents/word/WordBuilder.java b/dmp-backend/src/main/java/eu/eudat/documents/word/WordBuilder.java new file mode 100644 index 000000000..ee390b215 --- /dev/null +++ b/dmp-backend/src/main/java/eu/eudat/documents/word/WordBuilder.java @@ -0,0 +1,193 @@ +package eu.eudat.documents.word; + +import eu.eudat.documents.types.ParagraphStyle; +import eu.eudat.documents.types.TextStyle; +import eu.eudat.models.user.components.datasetprofile.Field; +import eu.eudat.models.user.components.datasetprofile.FieldSet; +import eu.eudat.models.user.components.datasetprofile.Section; +import eu.eudat.models.user.composite.DatasetProfilePage; +import eu.eudat.models.user.composite.PagedDatasetProfile; +import eu.eudat.utilities.interfaces.Applier; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLvl; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STNumberFormat; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by ikalyvas on 2/26/2018. + */ +public class WordBuilder { + + private Map> options = new HashMap<>(); + private CTAbstractNum cTAbstractNum; + private BigInteger numId; + + public WordBuilder() { + this.cTAbstractNum = CTAbstractNum.Factory.newInstance(); + this.cTAbstractNum.setAbstractNumId(BigInteger.valueOf(1)); + } + + private void buildOptions() { + this.options.put(ParagraphStyle.TEXT, (mainDocumentPart, item) -> { + XWPFParagraph paragraph = mainDocumentPart.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(item); + run.setFontSize(11); + return paragraph; + }); + this.options.put(ParagraphStyle.TITLE, (mainDocumentPart, item) -> { + XWPFParagraph paragraph = mainDocumentPart.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(item); + run.setBold(true); + run.setFontSize(14); + return paragraph; + }); + this.options.put(ParagraphStyle.HEADER1, (mainDocumentPart, item) -> { + XWPFParagraph paragraph = mainDocumentPart.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(item); + run.setBold(true); + run.setFontSize(12); + run.setUnderline(UnderlinePatterns.SINGLE); + return paragraph; + }); + this.options.put(ParagraphStyle.HEADER2, (mainDocumentPart, item) -> { + XWPFParagraph paragraph = mainDocumentPart.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(item); + run.setBold(true); + run.setFontSize(12); + run.setUnderline(UnderlinePatterns.SINGLE); + return paragraph; + }); + this.options.put(ParagraphStyle.HEADER3, (mainDocumentPart, item) -> { + XWPFParagraph paragraph = mainDocumentPart.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(item); + run.setBold(true); + run.setFontSize(11); + run.setUnderline(UnderlinePatterns.SINGLE); + return paragraph; + }); + this.options.put(ParagraphStyle.FOOTER, (mainDocumentPart, item) -> { + XWPFParagraph paragraph = mainDocumentPart.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(item); + return paragraph; + }); + } + + public File build(PagedDatasetProfile pagedDatasetProfile) throws IOException { + XWPFDocument document = new XWPFDocument(); + + this.buildOptions(); + createPages(pagedDatasetProfile.getPages(), document, true); + XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum); + XWPFNumbering numbering = document.createNumbering(); + BigInteger abstractNumID = numbering.addAbstractNum(abstractNum); + this.numId = numbering.addNum(abstractNumID); + createPages(pagedDatasetProfile.getPages(), document, false); + File exportFile = new File("welcome.docx"); + FileOutputStream out = new FileOutputStream(exportFile); + document.write(out); + out.close(); + return exportFile; + } + + public void createPages(List datasetProfilePages, XWPFDocument mainDocumentPart, Boolean createListing) { + //if (createListing) this.addListing(mainDocumentPart, 0, false, true); + datasetProfilePages.forEach(item -> { + createSections(item.getSections(), mainDocumentPart, ParagraphStyle.TITLE, 0, createListing); + }); + } + + public void createSections(List
sections, XWPFDocument mainDocumentPart, ParagraphStyle style, Integer indent, Boolean createListing) { + if (createListing) this.addListing(mainDocumentPart, indent, false, true); + BigInteger listing = numId; + sections.forEach(section -> { + if (!createListing) { + XWPFParagraph paragraph = addParagraphContent(section.getTitle(), mainDocumentPart, style, listing); + CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); + number.setVal(BigInteger.valueOf(indent)); + } + createSections(section.getSections(), mainDocumentPart, ParagraphStyle.HEADER2, 1, createListing); + createCompositeFields(section.getCompositeFields(), mainDocumentPart, 2, createListing); + }); + } + + public void createCompositeFields(List
compositeFields, XWPFDocument mainDocumentPart, Integer indent, Boolean createListing) { + if (createListing) this.addListing(mainDocumentPart, indent, true, true); + compositeFields.forEach(compositeField -> { + if (compositeField.getTitle() != null && !compositeField.getTitle().isEmpty() && !createListing) { + XWPFParagraph paragraph = addParagraphContent(compositeField.getTitle(), mainDocumentPart, ParagraphStyle.HEADER3, numId); + CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); + number.setVal(BigInteger.valueOf(indent)); + } + createFields(compositeField.getFields(), mainDocumentPart, 3, createListing); + }); + } + + public void createFields(List fields, XWPFDocument mainDocumentPart, Integer indent, Boolean createListing) { + if (createListing) this.addListing(mainDocumentPart, indent, false, false); + fields.forEach(field -> { + if (!createListing) { + XWPFParagraph paragraph = addParagraphContent(field.getValue(), mainDocumentPart, ParagraphStyle.TEXT, numId); + CTDecimalNumber number = paragraph.getCTP().getPPr().getNumPr().addNewIlvl(); + number.setVal(BigInteger.valueOf(indent)); + } + }); + } + + + public XWPFParagraph addParagraphContent(String text, XWPFDocument mainDocumentPart, ParagraphStyle style, BigInteger numId) { + XWPFParagraph paragraph = this.options.get(style).apply(mainDocumentPart, text); + if (numId != null) paragraph.setNumID(numId); + return paragraph; + } + + + public void addStyling(List styles, String color) { + + } + + public void addListing(XWPFDocument document, int indent, Boolean question, Boolean hasIndication) { + + //this.cTAbstractNum.setAbstractNumId(BigInteger.valueOf(indent)); + CTLvl cTLvl = this.cTAbstractNum.addNewLvl(); + + String textLevel = ""; + for (int i = 0; i <= indent; i++) { + textLevel += "%" + (i + 1) + "."; + } + if (question) { + cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL); + cTLvl.addNewLvlText().setVal("Q " + textLevel); + cTLvl.addNewStart().setVal(BigInteger.valueOf(1)); + } else if (!question && hasIndication) { + cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL); + cTLvl.addNewLvlText().setVal(textLevel); + cTLvl.addNewStart().setVal(BigInteger.valueOf(1)); + } + if (!question && !hasIndication) { + cTLvl.addNewNumFmt().setVal(STNumberFormat.NONE); + } + + /*if (this.numId == null) { + XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum); + XWPFNumbering numbering = document.createNumbering(); + BigInteger abstractNumID = numbering.addAbstractNum(abstractNum); + this.numId = numbering.addNum(abstractNumID); + }*/ + } + +} diff --git a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/DatabaseViewStyleDefinition.java b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/DatabaseViewStyleDefinition.java index 0b9ac753f..bec2b99e2 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/DatabaseViewStyleDefinition.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/DatabaseViewStyleDefinition.java @@ -1,6 +1,6 @@ package eu.eudat.entities.xmlmodels.datasetprofiledefinition; -import eu.eudat.utilities.DatabaseDefinition; +import eu.eudat.utilities.interfaces.DatabaseDefinition; public interface DatabaseViewStyleDefinition extends DatabaseDefinition { diff --git a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Field.java b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Field.java index 09a088c8a..f3afdf415 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Field.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Field.java @@ -4,7 +4,7 @@ import eu.eudat.models.components.commons.DefaultValue; import eu.eudat.models.components.commons.ViewStyle; import eu.eudat.models.components.commons.Visibility; import eu.eudat.models.components.commons.datafield.FieldData; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import eu.eudat.utilities.builders.ModelBuilder; import eu.eudat.utilities.builders.XmlBuilder; import org.w3c.dom.Document; diff --git a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/FieldSet.java b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/FieldSet.java index 7cc836e55..374d807d9 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/FieldSet.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/FieldSet.java @@ -1,7 +1,7 @@ package eu.eudat.entities.xmlmodels.datasetprofiledefinition; import eu.eudat.models.components.commons.Multiplicity; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import eu.eudat.utilities.builders.XmlBuilder; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Page.java b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Page.java index f83103f5e..09098622b 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Page.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Page.java @@ -1,6 +1,6 @@ package eu.eudat.entities.xmlmodels.datasetprofiledefinition; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Section.java b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Section.java index 2aa89ad14..6dc7f73d7 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Section.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/Section.java @@ -1,6 +1,6 @@ package eu.eudat.entities.xmlmodels.datasetprofiledefinition; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import eu.eudat.utilities.builders.XmlBuilder; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/ViewStyleModel.java b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/ViewStyleModel.java index 20d86974d..df1d5352b 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/ViewStyleModel.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/datasetprofiledefinition/ViewStyleModel.java @@ -1,6 +1,6 @@ package eu.eudat.entities.xmlmodels.datasetprofiledefinition; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import eu.eudat.utilities.builders.XmlBuilder; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/modeldefinition/DatabaseModelDefinition.java b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/modeldefinition/DatabaseModelDefinition.java index 328ebccd6..064aa019b 100644 --- a/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/modeldefinition/DatabaseModelDefinition.java +++ b/dmp-backend/src/main/java/eu/eudat/entities/xmlmodels/modeldefinition/DatabaseModelDefinition.java @@ -1,6 +1,6 @@ package eu.eudat.entities.xmlmodels.modeldefinition; -import eu.eudat.utilities.DatabaseDefinition; +import eu.eudat.utilities.interfaces.DatabaseDefinition; public interface DatabaseModelDefinition extends DatabaseDefinition { diff --git a/dmp-backend/src/main/java/eu/eudat/managers/DatasetManager.java b/dmp-backend/src/main/java/eu/eudat/managers/DatasetManager.java index d4c19a400..e5c6e4e05 100644 --- a/dmp-backend/src/main/java/eu/eudat/managers/DatasetManager.java +++ b/dmp-backend/src/main/java/eu/eudat/managers/DatasetManager.java @@ -2,6 +2,7 @@ package eu.eudat.managers; import eu.eudat.builders.entity.UserInfoBuilder; import eu.eudat.dao.entities.*; +import eu.eudat.documents.word.WordBuilder; import eu.eudat.entities.UserInfo; import eu.eudat.models.HintedModelFactory; import eu.eudat.models.criteria.DataRepositoryCriteria; @@ -18,6 +19,9 @@ import eu.eudat.queryable.QueryableList; import eu.eudat.services.ApiContext; import org.json.JSONObject; +import javax.xml.bind.JAXBException; +import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -50,6 +54,12 @@ public class DatasetManager { public DatasetWizardModel getSingle(DatasetDao datatasetRepository, String id) throws InstantiationException, IllegalAccessException { DatasetWizardModel dataset = new DatasetWizardModel(); eu.eudat.entities.Dataset datasetEntity = datatasetRepository.find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class)); + dataset.setDatasetProfileDefinition(getPagedProfile(dataset, datasetEntity)); + dataset.fromDataModel(datasetEntity); + return dataset; + } + + private PagedDatasetProfile getPagedProfile(DatasetWizardModel dataset, eu.eudat.entities.Dataset datasetEntity) { eu.eudat.models.user.composite.DatasetProfile datasetprofile = UserManager.generateDatasetProfileModel(datasetEntity.getProfile()); datasetprofile.setStatus(dataset.getStatus()); if (datasetEntity.getProperties() != null) { @@ -59,9 +69,15 @@ public class DatasetManager { } PagedDatasetProfile pagedDatasetProfile = new PagedDatasetProfile(); pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile); - dataset.setDatasetProfileDefinition(pagedDatasetProfile); - dataset.fromDataModel(datasetEntity); - return dataset; + return pagedDatasetProfile; + } + + public File getWordDocument(DatasetDao datatasetRepository, String id) throws InstantiationException, IllegalAccessException, IOException { + WordBuilder wordBuilder = new WordBuilder(); + DatasetWizardModel dataset = new DatasetWizardModel(); + eu.eudat.entities.Dataset datasetEntity = datatasetRepository.find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class)); + PagedDatasetProfile pagedDatasetProfile = getPagedProfile(dataset,datasetEntity); + return wordBuilder.build(pagedDatasetProfile); } public static eu.eudat.entities.Dataset createOrUpdate(ApiContext apiContext, DatasetWizardModel profile, Principal principal) throws Exception { diff --git a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Field.java b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Field.java index b82ba7efc..39520b541 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Field.java +++ b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Field.java @@ -3,7 +3,7 @@ package eu.eudat.models.admin.components.datasetprofile; import eu.eudat.models.components.commons.DefaultValue; import eu.eudat.models.components.commons.ViewStyle; import eu.eudat.models.components.commons.Visibility; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; import eu.eudat.utilities.builders.ModelBuilder; import org.apache.commons.lang3.RandomStringUtils; diff --git a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/FieldSet.java b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/FieldSet.java index 640e8faba..470f0712a 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/FieldSet.java +++ b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/FieldSet.java @@ -1,7 +1,7 @@ package eu.eudat.models.admin.components.datasetprofile; import eu.eudat.models.components.commons.Multiplicity; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; import eu.eudat.utilities.builders.ModelBuilder; import org.apache.commons.lang3.RandomStringUtils; diff --git a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Page.java b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Page.java index 997c1c6a8..53f828992 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Page.java +++ b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Page.java @@ -1,6 +1,6 @@ package eu.eudat.models.admin.components.datasetprofile; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; public class Page implements Comparable, ViewStyleDefinition { diff --git a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Section.java b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Section.java index 76a675614..a6d26462a 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Section.java +++ b/dmp-backend/src/main/java/eu/eudat/models/admin/components/datasetprofile/Section.java @@ -1,6 +1,6 @@ package eu.eudat.models.admin.components.datasetprofile; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; import eu.eudat.utilities.builders.ModelBuilder; import org.apache.commons.lang3.RandomStringUtils; diff --git a/dmp-backend/src/main/java/eu/eudat/models/components/commons/Rule.java b/dmp-backend/src/main/java/eu/eudat/models/components/commons/Rule.java index 388804ae9..cb772479e 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/components/commons/Rule.java +++ b/dmp-backend/src/main/java/eu/eudat/models/components/commons/Rule.java @@ -1,7 +1,7 @@ package eu.eudat.models.components.commons; import eu.eudat.entities.xmlmodels.modeldefinition.DatabaseModelDefinition; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/models/components/commons/Visibility.java b/dmp-backend/src/main/java/eu/eudat/models/components/commons/Visibility.java index 7c7ec7b1d..afc7a0a8c 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/components/commons/Visibility.java +++ b/dmp-backend/src/main/java/eu/eudat/models/components/commons/Visibility.java @@ -1,6 +1,6 @@ package eu.eudat.models.components.commons; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; diff --git a/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/ComboBoxData.java b/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/ComboBoxData.java index 3713538d9..d2d672745 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/ComboBoxData.java +++ b/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/ComboBoxData.java @@ -1,6 +1,6 @@ package eu.eudat.models.components.commons.datafield; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/FieldData.java b/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/FieldData.java index 7f8c45874..540d23217 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/FieldData.java +++ b/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/FieldData.java @@ -1,6 +1,6 @@ package eu.eudat.models.components.commons.datafield; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/RadioBoxData.java b/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/RadioBoxData.java index 6f4ef8e68..caf206bde 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/RadioBoxData.java +++ b/dmp-backend/src/main/java/eu/eudat/models/components/commons/datafield/RadioBoxData.java @@ -1,6 +1,6 @@ package eu.eudat.models.components.commons.datafield; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; diff --git a/dmp-backend/src/main/java/eu/eudat/models/dmp/AssociatedProfile.java b/dmp-backend/src/main/java/eu/eudat/models/dmp/AssociatedProfile.java index 1f346e161..c93e5f527 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/dmp/AssociatedProfile.java +++ b/dmp-backend/src/main/java/eu/eudat/models/dmp/AssociatedProfile.java @@ -1,6 +1,6 @@ package eu.eudat.models.dmp; -import eu.eudat.utilities.XmlSerializable; +import eu.eudat.utilities.interfaces.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Field.java b/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Field.java index 1b3018648..216540f98 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Field.java +++ b/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Field.java @@ -6,7 +6,7 @@ import eu.eudat.models.components.commons.ViewStyle; import eu.eudat.models.components.commons.Visibility; import eu.eudat.models.properties.PropertiesGenerator; import eu.eudat.models.user.composite.PropertiesModelBuilder; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; import eu.eudat.utilities.builders.ModelBuilder; import java.util.LinkedList; diff --git a/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/FieldSet.java b/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/FieldSet.java index 2e8f47999..05e2bc4f9 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/FieldSet.java +++ b/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/FieldSet.java @@ -3,7 +3,7 @@ package eu.eudat.models.user.components.datasetprofile; import eu.eudat.models.components.commons.Multiplicity; import eu.eudat.models.properties.PropertiesGenerator; import eu.eudat.models.user.composite.PropertiesModelBuilder; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; import eu.eudat.utilities.builders.ModelBuilder; import java.util.*; diff --git a/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Section.java b/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Section.java index 0ee1a896a..8cef0e185 100644 --- a/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Section.java +++ b/dmp-backend/src/main/java/eu/eudat/models/user/components/datasetprofile/Section.java @@ -2,7 +2,7 @@ package eu.eudat.models.user.components.datasetprofile; import eu.eudat.models.properties.PropertiesGenerator; import eu.eudat.models.user.composite.PropertiesModelBuilder; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; import eu.eudat.utilities.builders.ModelBuilder; import java.util.Collections; diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/builders/ModelBuilder.java b/dmp-backend/src/main/java/eu/eudat/utilities/builders/ModelBuilder.java index b14edbd41..6f9280d7f 100644 --- a/dmp-backend/src/main/java/eu/eudat/utilities/builders/ModelBuilder.java +++ b/dmp-backend/src/main/java/eu/eudat/utilities/builders/ModelBuilder.java @@ -3,8 +3,8 @@ package eu.eudat.utilities.builders; import eu.eudat.entities.xmlmodels.datasetprofiledefinition.DatabaseViewStyleDefinition; import eu.eudat.entities.xmlmodels.modeldefinition.DatabaseModelDefinition; import eu.eudat.models.components.commons.datafield.*; -import eu.eudat.utilities.ModelDefinition; -import eu.eudat.utilities.ViewStyleDefinition; +import eu.eudat.utilities.interfaces.ModelDefinition; +import eu.eudat.utilities.interfaces.ViewStyleDefinition; import org.w3c.dom.Element; import java.util.LinkedList; diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/Applier.java b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/Applier.java new file mode 100644 index 000000000..d5332d97f --- /dev/null +++ b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/Applier.java @@ -0,0 +1,8 @@ +package eu.eudat.utilities.interfaces; + +/** + * Created by ikalyvas on 2/27/2018. + */ +public interface Applier { + R apply(A applier, V value); +} diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/Cloneable.java b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/Cloneable.java similarity index 70% rename from dmp-backend/src/main/java/eu/eudat/utilities/Cloneable.java rename to dmp-backend/src/main/java/eu/eudat/utilities/interfaces/Cloneable.java index be9debb68..f1eadd147 100644 --- a/dmp-backend/src/main/java/eu/eudat/utilities/Cloneable.java +++ b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/Cloneable.java @@ -1,4 +1,4 @@ -package eu.eudat.utilities; +package eu.eudat.utilities.interfaces; /** * Created by ikalyvas on 2/5/2018. diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/DatabaseDefinition.java b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/DatabaseDefinition.java similarity index 51% rename from dmp-backend/src/main/java/eu/eudat/utilities/DatabaseDefinition.java rename to dmp-backend/src/main/java/eu/eudat/utilities/interfaces/DatabaseDefinition.java index 1faceb554..ea3896ace 100644 --- a/dmp-backend/src/main/java/eu/eudat/utilities/DatabaseDefinition.java +++ b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/DatabaseDefinition.java @@ -1,4 +1,4 @@ -package eu.eudat.utilities; +package eu.eudat.utilities.interfaces; public interface DatabaseDefinition { diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/ModelDefinition.java b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ModelDefinition.java similarity index 84% rename from dmp-backend/src/main/java/eu/eudat/utilities/ModelDefinition.java rename to dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ModelDefinition.java index 9382870aa..897c4c113 100644 --- a/dmp-backend/src/main/java/eu/eudat/utilities/ModelDefinition.java +++ b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ModelDefinition.java @@ -1,4 +1,4 @@ -package eu.eudat.utilities; +package eu.eudat.utilities.interfaces; import eu.eudat.entities.xmlmodels.modeldefinition.DatabaseModelDefinition; diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/ModelSerializer.java b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ModelSerializer.java similarity index 89% rename from dmp-backend/src/main/java/eu/eudat/utilities/ModelSerializer.java rename to dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ModelSerializer.java index 2e3f51f33..193b00fa9 100644 --- a/dmp-backend/src/main/java/eu/eudat/utilities/ModelSerializer.java +++ b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ModelSerializer.java @@ -1,4 +1,4 @@ -package eu.eudat.utilities; +package eu.eudat.utilities.interfaces; import eu.eudat.entities.xmlmodels.datasetprofiledefinition.DatabaseViewStyleDefinition; diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/ViewStyleDefinition.java b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ViewStyleDefinition.java similarity index 86% rename from dmp-backend/src/main/java/eu/eudat/utilities/ViewStyleDefinition.java rename to dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ViewStyleDefinition.java index 8ed8d50f6..1c54ae8bb 100644 --- a/dmp-backend/src/main/java/eu/eudat/utilities/ViewStyleDefinition.java +++ b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/ViewStyleDefinition.java @@ -1,4 +1,4 @@ -package eu.eudat.utilities; +package eu.eudat.utilities.interfaces; import eu.eudat.entities.xmlmodels.datasetprofiledefinition.DatabaseViewStyleDefinition; diff --git a/dmp-backend/src/main/java/eu/eudat/utilities/XmlSerializable.java b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/XmlSerializable.java similarity index 80% rename from dmp-backend/src/main/java/eu/eudat/utilities/XmlSerializable.java rename to dmp-backend/src/main/java/eu/eudat/utilities/interfaces/XmlSerializable.java index ed15fc896..0cdf47c63 100644 --- a/dmp-backend/src/main/java/eu/eudat/utilities/XmlSerializable.java +++ b/dmp-backend/src/main/java/eu/eudat/utilities/interfaces/XmlSerializable.java @@ -1,4 +1,4 @@ -package eu.eudat.utilities; +package eu.eudat.utilities.interfaces; import org.w3c.dom.Document; diff --git a/dmp-backend/src/main/resources/application.properties b/dmp-backend/src/main/resources/application.properties index df8f7db46..8bbcb4a80 100644 --- a/dmp-backend/src/main/resources/application.properties +++ b/dmp-backend/src/main/resources/application.properties @@ -51,8 +51,8 @@ autouser.root.email=root@dmp.com autouser.root.password=root autouser.root.username=root ################################################################################# -b2access.externallogin.user_info_url = https://unity.eudat-aai.fz-juelich.de:443/oauth2/userinfo -b2access.externallogin.access_token_url = https://unity.eudat-aai.fz-juelich.de:443/oauth2/token +b2access.externallogin.user_info_url = https://b2access-integration.fz-juelich.de:443/oauth2/userinfo +b2access.externallogin.access_token_url = https://b2access-integration.fz-juelich.de:443/oauth2/token b2access.externallogin.redirect_uri = http://dmp.eudat.org:4200/api/oauth/authorized/b2access b2access.externallogin.clientid = eudatdmptool b2access.externallogin.clientSecret = A3b*1*92 \ No newline at end of file diff --git a/dmp-frontend/src/app/app.module.ts b/dmp-frontend/src/app/app.module.ts index 1cb7fc964..999d41b11 100644 --- a/dmp-frontend/src/app/app.module.ts +++ b/dmp-frontend/src/app/app.module.ts @@ -71,9 +71,9 @@ import { B2AccessLoginComponent } from './user-management/login/b2access/b2acces b2accessConfiguration: { clientId: "eudatdmptool", clientSecret: "A3b*1*92", - oauthUrl: "https://unity.eudat-aai.fz-juelich.de/oauth2-as/oauth2-authz", + oauthUrl: "https://b2access-integration.fz-juelich.de:443/oauth2-as/oauth2-authz", redirectUri: "http://dmp.eudat.org:4200/api/oauth/authorized/b2access", - accessTokenUri: "https://unity.eudat-aai.fz-juelich.de:443/oauth2/token" + accessTokenUri: "https://b2access-integration.fz-juelich.de:443/oauth2/token" } }), HttpModule, diff --git a/dmp-frontend/src/app/homepage/homepage.component.html b/dmp-frontend/src/app/homepage/homepage.component.html index 122795c98..3524b760a 100644 --- a/dmp-frontend/src/app/homepage/homepage.component.html +++ b/dmp-frontend/src/app/homepage/homepage.component.html @@ -7,6 +7,7 @@ title={{dashboardStatisticsData.totalProjectCount}} headerIcon="list" category="Projects" + [hasFootContent]="this.isAuthenticated()" footContent="Open Projects" routelLink= '/projects' footerIcon="open_in_new" @@ -19,6 +20,7 @@ title={{dashboardStatisticsData.totalDataManagementPlanCount}} headerIcon="mode_edit" category="DMPs" + [hasFootContent]="this.isAuthenticated()" footContent="Open DMPs" routelLink= '/dmps' footerIcon="open_in_new" @@ -31,6 +33,7 @@ title={{dashboardStatisticsData.totalDataSetCount}} headerIcon="subject" category="Datasets" + [hasFootContent]="this.isAuthenticated()" footContent="Open Datasets" routelLink= '/datasets' footerIcon="open_in_new" diff --git a/dmp-frontend/src/app/homepage/homepage.component.ts b/dmp-frontend/src/app/homepage/homepage.component.ts index 2aa54361b..0d474a5e7 100644 --- a/dmp-frontend/src/app/homepage/homepage.component.ts +++ b/dmp-frontend/src/app/homepage/homepage.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, Input } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; import { DashboardService } from '../../app/services/dashboard/dashboard.service'; import { DashboardStatisticsModel } from '../models/dashboard/DashboardStatisticsModel'; @@ -30,22 +30,22 @@ export class HomepageComponent implements OnInit { ngOnInit() { - if(!this.isAuthenticated()){ + if (!this.isAuthenticated()) { this.dashBoardService.getStatistics().subscribe(results => { //let data = results['payload']; this.dashboardStatisticsData = JsonSerializer.fromJSONObject(results, DashboardStatisticsModel); }) - }else{ + } else { this.dashBoardService.getStatisticsSpecificuser().subscribe(results => { this.dashboardStatisticsData = JsonSerializer.fromJSONObject(results, DashboardStatisticsModel); }) } - + } public isAuthenticated(): boolean { - return !(!this.authentication.current()) - } + return !(!this.authentication.current()) + } } \ No newline at end of file diff --git a/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.html b/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.html index 70143615a..336dea1af 100644 --- a/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.html +++ b/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.html @@ -6,7 +6,7 @@

{{ category }}

{{ title }}

- diff --git a/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.ts b/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.ts index eeac73093..09e3afd75 100644 --- a/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.ts +++ b/dmp-frontend/src/app/shared/components/figurecard/figurecard.component.ts @@ -15,6 +15,7 @@ export class FigurecardComponent implements OnInit { @Input() linearColor: string; @Input() boxShadow: string; @Input() routelLink: string; + @Input() hasFootContent = true; constructor(private router:Router) { }