diff --git a/dmp-backend/core/pom.xml b/dmp-backend/core/pom.xml index 24197ca4e..e7eb0a93a 100644 --- a/dmp-backend/core/pom.xml +++ b/dmp-backend/core/pom.xml @@ -47,7 +47,7 @@ gr.cite.opendmp file-transformer-base - 1.0.0-SNAPSHOT + 0.0.3 gr.cite diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/StorageType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/StorageType.java index 59e0b1bae..3b72aff20 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/StorageType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/StorageType.java @@ -8,7 +8,8 @@ import java.util.Map; public enum StorageType implements DatabaseEnum { Temp((short) 0), - Main((short) 1); + Main((short) 1), + Transformer((short)2); private final Short value; diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFieldFileTransformerBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFieldFileTransformerBuilder.java index 96ff65bc9..7561bb6bc 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFieldFileTransformerBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFieldFileTransformerBuilder.java @@ -10,10 +10,7 @@ import eu.eudat.convention.ConventionService; import eu.eudat.depositinterface.enums.FieldType; import eu.eudat.depositinterface.models.DescriptionFieldDepositModel; import eu.eudat.file.transformer.models.descriptiontemplate.DescriptionTemplateFileTransformerModel; -import eu.eudat.file.transformer.models.descriptiontemplate.definition.FieldFileTransformerModel; -import eu.eudat.file.transformer.models.descriptiontemplate.definition.FieldSetFileTransformerModel; -import eu.eudat.file.transformer.models.descriptiontemplate.definition.PageFileTransformerModel; -import eu.eudat.file.transformer.models.descriptiontemplate.definition.SectionFileTransformerModel; +import eu.eudat.file.transformer.models.descriptiontemplate.definition.*; import eu.eudat.service.fielddatahelper.FieldDataHelperServiceProvider; import gr.cite.tools.exception.MyApplicationException; import gr.cite.tools.logging.LoggerService; @@ -23,10 +20,7 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.List; -import java.util.Optional; +import java.util.*; @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) @@ -35,6 +29,7 @@ public class DescriptionFieldFileTransformerBuilder extends BaseFileTransformerB private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); private DescriptionTemplateFileTransformerModel definition; private final FieldDataHelperServiceProvider fieldDataHelperServiceProvider; + @Autowired public DescriptionFieldFileTransformerBuilder( ConventionService conventionService, FieldDataHelperServiceProvider fieldDataHelperServiceProvider @@ -110,6 +105,10 @@ public class DescriptionFieldFileTransformerBuilder extends BaseFileTransformerB //models.add(new FileTransformerBuilderItemResponse<>(m, d)); } + for (PageFileTransformerModel page : definition.getDefinition().getPages()) { + page.setSections(calculateSectionVisibility(page.getSections())); + } + this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); return List.of(new FileTransformerBuilderItemResponse<>(definition, data.get(0))); @@ -158,4 +157,112 @@ public class DescriptionFieldFileTransformerBuilder extends BaseFileTransformerB return result; } + private List calculateSectionVisibility(List sections) { + List result = new ArrayList<>(); + + for (SectionFileTransformerModel section : sections) { + if (section.getSections() != null && !section.getSections().isEmpty()) { + section.setSections(calculateSectionVisibility(section.getSections())); + } + + if (section.getFieldSets() != null && !section.getFieldSets().isEmpty()) { + section.setFieldSets(calculateFieldSetVisibility(section.getFieldSets())); + } + + if ((section.getSections() != null && !section.getSections().isEmpty()) || (section.getFieldSets() != null && !section.getFieldSets().isEmpty())) { + result.add(section); + } + } + + return result; + } + + private List calculateFieldSetVisibility(List fieldSets) { + List result = new ArrayList<>(); + for (FieldSetFileTransformerModel fieldSet : fieldSets) { + if (fieldSet.getFields() != null && !fieldSet.getFields().isEmpty()) { + fieldSet.setFields(calculateFieldVisibility(fieldSet.getFields())); + if (fieldSet.getFields() != null && !fieldSet.getFields().isEmpty()) { + result.add(fieldSet); + } + } + } + return result; + } + + private List calculateFieldVisibility(List fields) { + List result = new ArrayList<>(); + for (FieldFileTransformerModel field : fields) { + if (field.getVisibilityRules() != null && !field.getVisibilityRules().isEmpty()) { + Integer maxChecks = field.getVisibilityRules().size(); + Integer successfulChecks = 0; + for (RuleFileTransformerModel rule : field.getVisibilityRules()) { + FieldFileTransformerModel targetField = findFieldByPages(definition.getDefinition().getPages(), rule.getTarget()); + if (targetField.getData() != null ) { + successfulChecks = targetField.getData().getValue().equals(rule.getValue()) ? successfulChecks + 1 : successfulChecks; + } + } + if (successfulChecks.equals(maxChecks)) { + result.add(field); + } + } else { + result.add(field); + } + } + return result; + } + + private FieldFileTransformerModel findFieldByPages(List pages, String fieldId) { + FieldFileTransformerModel result = null; + for (PageFileTransformerModel page : pages) { + result = findFieldBySections(page.getSections(), fieldId); + if (result != null) { + break; + } + } + return result; + } + + private FieldFileTransformerModel findFieldBySections(List sections, String fieldId) { + FieldFileTransformerModel result = null; + for (SectionFileTransformerModel section : sections) { + if (section.getSections() != null && !section.getSections().isEmpty()) { + result = findFieldBySections(section.getSections(), fieldId); + if (result != null) { + break; + } + } + + if (section.getFieldSets() != null && !section.getFieldSets().isEmpty()) { + result = findFieldByFieldSets(section.getFieldSets(), fieldId); + if (result != null) { + break; + } + } + } + return result; + } + + private FieldFileTransformerModel findFieldByFieldSets(List fieldSets, String fieldId) { + FieldFileTransformerModel result = null; + for (FieldSetFileTransformerModel fieldSet: fieldSets) { + result = findField(fieldSet.getFields(), fieldId); + if (result != null) { + break; + } + } + return result; + } + + private FieldFileTransformerModel findField(List fields, String fieldId) { + FieldFileTransformerModel result = null; + for (FieldFileTransformerModel field: fields) { + if (field.getId().equals(fieldId)) { + result = field; + break; + } + } + return result; + } + } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFileTransformerBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFileTransformerBuilder.java index 48d43afcd..8eaf4380e 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFileTransformerBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionFileTransformerBuilder.java @@ -6,16 +6,24 @@ import eu.eudat.commons.XmlHandlingService; import eu.eudat.commons.enums.IsActive; import eu.eudat.commons.types.description.PropertyDefinitionEntity; import eu.eudat.convention.ConventionService; -import eu.eudat.data.DescriptionEntity; -import eu.eudat.data.DescriptionTemplateEntity; +import eu.eudat.data.*; import eu.eudat.depositinterface.models.DescriptionDepositModel; import eu.eudat.file.transformer.enums.DescriptionStatus; import eu.eudat.file.transformer.models.description.DescriptionFileTransformerModel; +import eu.eudat.file.transformer.models.description.DescriptionReferenceFileTransformerModel; +import eu.eudat.file.transformer.models.description.DescriptionTagFileTransformerModel; import eu.eudat.file.transformer.models.descriptiontemplate.DescriptionTemplateFileTransformerModel; import eu.eudat.file.transformer.models.dmp.DmpFileTransformerModel; +import eu.eudat.file.transformer.models.dmp.DmpReferenceFileTransformerModel; +import eu.eudat.file.transformer.models.reference.ReferenceFileTransformerModel; +import eu.eudat.file.transformer.models.tag.TagFileTransformerModel; +import eu.eudat.file.transformer.models.user.UserFileTransformerModel; +import eu.eudat.model.DescriptionReference; import eu.eudat.model.DescriptionTemplate; -import eu.eudat.query.DescriptionTemplateQuery; -import eu.eudat.query.DmpQuery; +import eu.eudat.model.DmpReference; +import eu.eudat.model.Tag; +import eu.eudat.model.builder.TagBuilder; +import eu.eudat.query.*; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.query.QueryFactory; import gr.cite.tools.exception.MyApplicationException; @@ -65,8 +73,11 @@ public class DescriptionFileTransformerBuilder extends BaseFileTransformerBuilde if (data == null || data.isEmpty()) return new ArrayList<>(); List definitionMap = this.collectDescriptionTemplates(data); + Map> referenceMap = collectReferences(data); + Map> tagMap = collectTags(data); - DmpFileTransformerModel dmp = this.getDmp(data.get(0).getDmpId()); + + DmpFileTransformerModel dmp = this.getDmp(data.get(0).getDmpId()); List> models = new ArrayList<>(); @@ -84,6 +95,9 @@ public class DescriptionFileTransformerBuilder extends BaseFileTransformerBuilde if (definitionMap != null && definitionMap.stream().anyMatch(dt -> dt.getId().equals(d.getDescriptionTemplateId())) && propertyDefinition != null && !this.conventionService.isListNullOrEmpty(propertyDefinition.getFields())) m.setDescriptionTemplate(this.builderFactory.builder(DescriptionFieldFileTransformerBuilder.class).authorize(this.authorize).setDefinition(definitionMap.stream().filter(dm -> dm.getId().equals(d.getDescriptionTemplateId())).findFirst().get()).build(propertyDefinition.getFields()).get(0)); } + if (referenceMap != null && !referenceMap.isEmpty() && referenceMap.containsKey(d.getId())) m.setDescriptionReferenceFileTransformerModels(referenceMap.get(d.getId())); + if (tagMap != null && !tagMap.isEmpty() && tagMap.containsKey(d.getId())) m.setDescriptionTagFileTransformerModels(tagMap.get(d.getId())); + m.setDmp(dmp); models.add(new FileTransformerBuilderItemResponse<>(m, d)); } @@ -108,4 +122,49 @@ public class DescriptionFileTransformerBuilder extends BaseFileTransformerBuilde return this.builderFactory.builder(DescriptionTemplateFileTransformerBuilder.class).authorize(authorize).build(descriptionTemplateEntities); } + private Map> collectReferences(List data) throws MyApplicationException { + if (data.isEmpty()) return null; + this.logger.debug("checking related - {}", DmpReference.class.getSimpleName()); + + List descriptionReferences = this.queryFactory.query(DescriptionReferenceQuery.class).authorize(this.authorize).descriptionIds(data.stream().map(DescriptionEntity::getId).distinct().collect(Collectors.toList())).collectAs(new BaseFieldSet().ensure(DescriptionReference._description).ensure(DescriptionReference._reference)); + + Map> itemMap = new HashMap<>(); + ReferenceQuery query = this.queryFactory.query(ReferenceQuery.class).authorize(this.authorize).isActive(IsActive.Active).ids(descriptionReferences.stream().map(DescriptionReferenceEntity::getReferenceId).distinct().collect(Collectors.toList())); + Map referenceDepositModelMap = this.builderFactory.builder(ReferenceFileTransformerBuilder.class).authorize(this.authorize).asForeignKey(query, ReferenceEntity::getId); + if (referenceDepositModelMap == null) return null; + for (DescriptionReferenceEntity descriptionReference : descriptionReferences) { + DescriptionReferenceFileTransformerModel descriptionReferenceFileTransformerModel = new DescriptionReferenceFileTransformerModel(); + descriptionReferenceFileTransformerModel.setId(descriptionReference.getId()); + descriptionReferenceFileTransformerModel.setReference(referenceDepositModelMap.getOrDefault(descriptionReference.getReferenceId(), null)); + DescriptionReferenceFileTransformerModel model = descriptionReferenceFileTransformerModel; + if (model == null) continue; + UUID key = descriptionReference.getDescriptionId(); + if (!itemMap.containsKey(key)) itemMap.put(key, new ArrayList<>()); + itemMap.get(key).add(model); + } + return itemMap; + } + + private Map> collectTags(List data) { + if (data.isEmpty()) return null; + + List descriptionTags = this.queryFactory.query(DescriptionTagQuery.class).authorize(this.authorize).descriptionIds(data.stream().map(DescriptionEntity::getId).distinct().toList()).collect(); + + Map> itemMap = new HashMap<>(); + TagQuery query = this.queryFactory.query(TagQuery.class).authorize(this.authorize).isActive(IsActive.Active).ids(descriptionTags.stream().map(DescriptionTagEntity::getTagId).distinct().toList()); + Map tagMap = this.builderFactory.builder(TagFileTransformerBuilder.class).asForeignKey(query, TagEntity::getId); + for (DescriptionTagEntity descriptionTag : descriptionTags) { + DescriptionTagFileTransformerModel descriptionTagFileTransformerModel = new DescriptionTagFileTransformerModel(); + descriptionTagFileTransformerModel.setId(descriptionTag.getId()); + descriptionTagFileTransformerModel.setTagFileTransformerModel(tagMap.getOrDefault(descriptionTag.getTagId(), null)); + DescriptionTagFileTransformerModel model = descriptionTagFileTransformerModel; + if (model == null) continue; + UUID key = descriptionTag.getDescriptionId(); + if (!itemMap.containsKey(key)) itemMap.put(key, new ArrayList<>()); + itemMap.get(key).add(model); + } + + return itemMap; + } + } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionTemplateFileTransformerBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionTemplateFileTransformerBuilder.java index 7c5e0bfa0..bb504f395 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionTemplateFileTransformerBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DescriptionTemplateFileTransformerBuilder.java @@ -3,19 +3,13 @@ package eu.eudat.model.builder.filetransformer; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.JsonHandlingService; import eu.eudat.commons.XmlHandlingService; -import eu.eudat.commons.enums.IsActive; -import eu.eudat.commons.types.description.PropertyDefinitionEntity; import eu.eudat.convention.ConventionService; -import eu.eudat.data.DescriptionEntity; import eu.eudat.data.DescriptionTemplateEntity; -import eu.eudat.file.transformer.models.description.DescriptionFileTransformerModel; import eu.eudat.file.transformer.models.descriptiontemplate.DescriptionTemplateFileTransformerModel; -import eu.eudat.model.DescriptionTemplate; import eu.eudat.query.DescriptionTemplateQuery; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.query.QueryFactory; import gr.cite.tools.exception.MyApplicationException; -import gr.cite.tools.fieldset.BaseFieldSet; import gr.cite.tools.logging.LoggerService; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -23,8 +17,10 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.List; +import java.util.Optional; @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) @@ -68,6 +64,8 @@ public class DescriptionTemplateFileTransformerBuilder extends BaseFileTransform m.setId(d.getId()); m.setLabel(d.getLabel()); m.setDescription(d.getDescription()); + m.setLanguage(d.getLanguage()); + m.setVersion(d.getVersion()); m.setDefinition(this.builderFactory.builder(DescriptionTemplateDefinitionFileTransformerBuilder.class).authorize(authorize).build(collectDescriptionTemplates(d))); models.add(new FileTransformerBuilderItemResponse<>(m, d)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpBlueprintFileTransformerBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpBlueprintFileTransformerBuilder.java index 71e5de04f..9d85492d7 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpBlueprintFileTransformerBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpBlueprintFileTransformerBuilder.java @@ -92,6 +92,7 @@ public class DmpBlueprintFileTransformerBuilder extends BaseFileTransformerBuild SectionFileTransformerModel m = new SectionFileTransformerModel(); m.setId(section.getId()); m.setLabel(section.getLabel()); + m.setOrdinal(section.getOrdinal()); m.setDescription(section.getDescription()); m.setFields(mapFields(section.getFields())); m.setHasTemplates(section.getHasTemplates()); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpFileTransformerBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpFileTransformerBuilder.java index d9e3e177a..d87455315 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpFileTransformerBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/DmpFileTransformerBuilder.java @@ -12,9 +12,12 @@ import eu.eudat.file.transformer.models.dmp.DmpFileTransformerModel; import eu.eudat.file.transformer.models.dmp.DmpReferenceFileTransformerModel; import eu.eudat.file.transformer.models.dmp.DmpUserFileTransformerModel; import eu.eudat.file.transformer.models.dmpblueprint.DmpBlueprintFileTransformerModel; +import eu.eudat.file.transformer.models.dmpblueprint.definition.SectionFileTransformerModel; import eu.eudat.file.transformer.models.entitydoi.EntityDoiFileTransformerModel; +import eu.eudat.file.transformer.models.reference.ReferenceFileTransformerModel; import eu.eudat.file.transformer.models.user.UserFileTransformerModel; import eu.eudat.model.*; +import eu.eudat.model.builder.DmpReferenceBuilder; import eu.eudat.query.*; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.query.Ordering; @@ -109,7 +112,15 @@ public class DmpFileTransformerBuilder extends BaseFileTransformerBuilder { + description.setSectionId(templateSection.getId()); + description.setCreatedBy(m.getCreator()); + }); + } models.add(new FileTransformerBuilderItemResponse<>(m, d)); } @@ -126,11 +137,15 @@ public class DmpFileTransformerBuilder extends BaseFileTransformerBuilder> itemMap = new HashMap<>(); ReferenceQuery query = this.queryFactory.query(ReferenceQuery.class).authorize(this.authorize).isActive(IsActive.Active).ids(dmpReferences.stream().map(DmpReferenceEntity::getReferenceId).distinct().collect(Collectors.toList())); - Map referenceDepositModelMap = this.builderFactory.builder(ReferenceFileTransformerBuilder.class).authorize(this.authorize).asForeignKey(query, ReferenceEntity::getId); + Map referenceDepositModelMap = this.builderFactory.builder(ReferenceFileTransformerBuilder.class).authorize(this.authorize).asForeignKey(query, ReferenceEntity::getId); if (referenceDepositModelMap == null) return null; for (DmpReferenceEntity dmpReference : dmpReferences) { - DmpReferenceFileTransformerModel model =referenceDepositModelMap.getOrDefault(dmpReference.getReferenceId(), null); - if (model == null) continue;; + DmpReferenceFileTransformerModel dmpReferenceFileTransformerModel = new DmpReferenceFileTransformerModel(); + dmpReferenceFileTransformerModel.setId(dmpReference.getId()); + dmpReferenceFileTransformerModel.setData(dmpReference.getData()); + dmpReferenceFileTransformerModel.setReference(referenceDepositModelMap.getOrDefault(dmpReference.getReferenceId(), null)); + DmpReferenceFileTransformerModel model = dmpReferenceFileTransformerModel; + if (model == null) continue; UUID key = dmpReference.getDmpId(); if (!itemMap.containsKey(key)) itemMap.put(key, new ArrayList<>()); itemMap.get(key).add(model); @@ -171,7 +186,7 @@ public class DmpFileTransformerBuilder extends BaseFileTransformerBuilder Map.entry(uuidListEntry.getKey(), uuidListEntry.getValue().get(0))) - .collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue())); + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); } private Map> collectEntityDois(List data) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/ReferenceFileTransformerBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/ReferenceFileTransformerBuilder.java index e8bd09b5b..9c5bda7f7 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/ReferenceFileTransformerBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/ReferenceFileTransformerBuilder.java @@ -7,6 +7,7 @@ import eu.eudat.convention.ConventionService; import eu.eudat.data.ReferenceEntity; import eu.eudat.file.transformer.enums.ReferenceSourceType; import eu.eudat.file.transformer.enums.ReferenceType; +import eu.eudat.file.transformer.models.description.DescriptionReferenceFileTransformerModel; import eu.eudat.file.transformer.models.dmp.DmpReferenceFileTransformerModel; import eu.eudat.file.transformer.models.reference.ReferenceFileTransformerModel; import gr.cite.tools.data.builder.BuilderFactory; @@ -25,7 +26,7 @@ import java.util.Optional; @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) -public class ReferenceFileTransformerBuilder extends BaseFileTransformerBuilder { +public class ReferenceFileTransformerBuilder extends BaseFileTransformerBuilder { private final BuilderFactory builderFactory; private final XmlHandlingService xmlHandlingService; @@ -46,11 +47,11 @@ public class ReferenceFileTransformerBuilder extends BaseFileTransformerBuilder< } @Override - protected List> buildInternal(List data) throws MyApplicationException { + protected List> buildInternal(List data) throws MyApplicationException { this.logger.debug("building for {}", Optional.ofNullable(data).map(List::size).orElse(0)); if (data == null || data.isEmpty()) return new ArrayList<>(); - List> models = new ArrayList<>(); + List> models = new ArrayList<>(); for (ReferenceEntity d : data) { ReferenceFileTransformerModel m = new ReferenceFileTransformerModel(); m.setId(d.getId()); @@ -85,10 +86,7 @@ public class ReferenceFileTransformerBuilder extends BaseFileTransformerBuilder< case Researcher -> m.setType(ReferenceType.Researcher); default -> throw new MyApplicationException("unrecognized type " + d.getType().getValue()); } - - DmpReferenceFileTransformerModel dmpReferenceFileTransformerModel = new DmpReferenceFileTransformerModel(); - dmpReferenceFileTransformerModel.setReference(m); - models.add(new FileTransformerBuilderItemResponse<>(dmpReferenceFileTransformerModel, d)); + models.add(new FileTransformerBuilderItemResponse<>(m, d)); } this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); return models; diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/TagFileTransformerBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/TagFileTransformerBuilder.java new file mode 100644 index 000000000..b69d6b818 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/filetransformer/TagFileTransformerBuilder.java @@ -0,0 +1,59 @@ +package eu.eudat.model.builder.filetransformer; + +import eu.eudat.authorization.AuthorizationFlags; +import eu.eudat.commons.XmlHandlingService; +import eu.eudat.convention.ConventionService; +import eu.eudat.data.TagEntity; +import eu.eudat.file.transformer.models.tag.TagFileTransformerModel; +import gr.cite.tools.data.builder.BuilderFactory; +import gr.cite.tools.exception.MyApplicationException; +import gr.cite.tools.logging.LoggerService; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.List; +import java.util.Optional; + +@Component +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class TagFileTransformerBuilder extends BaseFileTransformerBuilder { + + private final BuilderFactory builderFactory; + private final XmlHandlingService xmlHandlingService; + private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); + + @Autowired + public TagFileTransformerBuilder( + ConventionService conventionService, + BuilderFactory builderFactory, XmlHandlingService xmlHandlingService) { + super(conventionService, new LoggerService(LoggerFactory.getLogger(TagFileTransformerBuilder.class))); + this.builderFactory = builderFactory; + this.xmlHandlingService = xmlHandlingService; + } + + public TagFileTransformerBuilder authorize(EnumSet values) { + this.authorize = values; + return this; + } + + @Override + protected List> buildInternal(List data) throws MyApplicationException { + this.logger.debug("building for {}", Optional.ofNullable(data).map(List::size).orElse(0)); + if (data == null || data.isEmpty()) return new ArrayList<>(); + + List> models = new ArrayList<>(); + for (TagEntity d : data) { + TagFileTransformerModel m = new TagFileTransformerModel(); + m.setId(d.getId()); + m.setLabel(d.getLabel()); + models.add(new FileTransformerBuilderItemResponse<>(m, d)); + } + this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); + return models; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java b/dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java index dd3077b78..2e125f607 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java +++ b/dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java @@ -20,8 +20,8 @@ public class TransformerRepository implements FileTransformerClient { } @Override - public FileEnvelope exportDmp(DmpFileTransformerModel dmpFileTransformerModel, String format) throws InvalidApplicationException, IOException { - return transformerClient.post().uri("/export/dmp", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(dmpFileTransformerModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelope.class)).block(); + public FileEnvelope exportDmp(DmpFileTransformerModel dmpFileTransformerModel) throws InvalidApplicationException, IOException { + return transformerClient.post().uri("/export/dmp").bodyValue(dmpFileTransformerModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelope.class)).block(); } @Override diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java index 1d6dbb626..e7a8bd2b0 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java @@ -4,7 +4,7 @@ import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.authorization.Permission; import eu.eudat.cache.transformer.FileTransformerConfigurationCache; import eu.eudat.commons.JsonHandlingService; -import eu.eudat.commons.enums.DmpUserRole; +import eu.eudat.commons.enums.StorageType; import eu.eudat.configurations.transformer.TransformerProperties; import eu.eudat.convention.ConventionService; import eu.eudat.file.transformer.interfaces.FileTransformerConfiguration; @@ -12,33 +12,21 @@ import eu.eudat.file.transformer.models.description.DescriptionFileTransformerMo import eu.eudat.file.transformer.models.dmp.DmpFileTransformerModel; import eu.eudat.file.transformer.models.misc.FileEnvelope; import eu.eudat.file.transformer.models.misc.FileFormat; -import eu.eudat.model.*; -import eu.eudat.model.builder.DescriptionBuilder; -import eu.eudat.model.builder.DmpBuilder; import eu.eudat.model.builder.filetransformer.DescriptionFileTransformerBuilder; import eu.eudat.model.builder.filetransformer.DmpFileTransformerBuilder; -import eu.eudat.model.descriptionproperties.PropertyDefinition; -import eu.eudat.model.descriptiontemplatedefinition.*; -import eu.eudat.model.descriptiontemplatedefinition.fielddata.AutoCompleteData; -import eu.eudat.model.descriptiontemplatedefinition.fielddata.AutoCompleteSingleData; -import eu.eudat.model.descriptiontemplatedefinition.fielddata.BaseFieldData; -import eu.eudat.model.descriptiontemplatedefinition.fielddata.ComboBoxOption; -import eu.eudat.model.dmpblueprintdefinition.ExtraField; -import eu.eudat.model.dmpblueprintdefinition.SystemField; import eu.eudat.model.file.TransformerCacheModel; import eu.eudat.query.DescriptionQuery; import eu.eudat.query.DmpQuery; import eu.eudat.query.EntityDoiQuery; import eu.eudat.repository.TransformerRepository; import eu.eudat.service.entitydoi.EntityDoiService; +import eu.eudat.service.storage.StorageFileService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.commons.web.oidc.filter.webflux.TokenExchangeCacheService; import gr.cite.commons.web.oidc.filter.webflux.TokenExchangeFilterFunction; import gr.cite.commons.web.oidc.filter.webflux.TokenExchangeModel; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.query.QueryFactory; -import gr.cite.tools.fieldset.BaseFieldSet; -import gr.cite.tools.fieldset.FieldSet; import jakarta.persistence.EntityManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,7 +43,6 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI; -import java.nio.file.Path; import java.util.*; @Service @@ -75,10 +62,11 @@ public class FileTransformerService { private final JsonHandlingService jsonHandlingService; private final QueryFactory queryFactory; private final BuilderFactory builderFactory; + private final StorageFileService storageFileService; @Autowired - public FileTransformerService(TransformerProperties transformerProperties, TokenExchangeCacheService tokenExchangeCacheService, FileTransformerConfigurationCache fileTransformerConfigurationCache, WebClient.Builder builder, EntityManager entityManager, AuthorizationService authorizationService, ConventionService conventionService, Environment environment, DmpQuery dmpQuery, EntityDoiQuery doiQuery, EntityDoiService doiService, ApplicationContext applicationContext, JsonHandlingService jsonHandlingService, QueryFactory queryFactory, BuilderFactory builderFactory) { + public FileTransformerService(TransformerProperties transformerProperties, TokenExchangeCacheService tokenExchangeCacheService, FileTransformerConfigurationCache fileTransformerConfigurationCache, WebClient.Builder builder, EntityManager entityManager, AuthorizationService authorizationService, ConventionService conventionService, Environment environment, DmpQuery dmpQuery, EntityDoiQuery doiQuery, EntityDoiService doiService, ApplicationContext applicationContext, JsonHandlingService jsonHandlingService, QueryFactory queryFactory, BuilderFactory builderFactory, StorageFileService storageFileService) { this.transformerProperties = transformerProperties; this.tokenExchangeCacheService = tokenExchangeCacheService; this.fileTransformerConfigurationCache = fileTransformerConfigurationCache; @@ -91,6 +79,7 @@ public class FileTransformerService { this.jsonHandlingService = jsonHandlingService; this.queryFactory = queryFactory; this.builderFactory = builderFactory; + this.storageFileService = storageFileService; this.clients = new HashMap<>(); } @@ -142,173 +131,15 @@ public class FileTransformerService { //GK: First get the right client TransformerRepository repository = getRepository(format); //GK: Second get the Target Data Management Plan - /*FieldSet fieldSet = new BaseFieldSet(Dmp._id, - Dmp._accessType, - Dmp._dmpReferences, - Dmp._blueprint, - Dmp._dmpUsers, - Dmp._createdAt, - Dmp._creator, - Dmp._description, - Dmp._descriptions, - Dmp._entityDois, - Dmp._finalizedAt, - Dmp._groupId, - Dmp._isActive, - Dmp._label, - Dmp._properties, - Dmp._language, - Dmp._publicAfter, - Dmp._status, - Dmp._updatedAt, - Dmp._version, - Dmp._versionStatus, - Dmp._dmpReferences + "." + DmpReference._id, - Dmp._dmpReferences + "." + DmpReference._data, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._id, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._description, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._abbreviation, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._definition, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._label, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._source, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._sourceType, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._type, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._isActive, - Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._reference, - Dmp._creator + "." + User._id, - Dmp._creator + "." + User._additionalInfo + "." + UserAdditionalInfo._avatarUrl, - Dmp._creator + "." + User._additionalInfo + "." + UserAdditionalInfo._culture, - Dmp._creator + "." + User._additionalInfo + "." + UserAdditionalInfo._language, - Dmp._creator + "." + User._additionalInfo + "." + UserAdditionalInfo._timezone, - Dmp._creator + "." + User._additionalInfo + "." + UserAdditionalInfo._roleOrganization, - Dmp._creator + "." + User._additionalInfo + "." + UserAdditionalInfo._organization, - Dmp._creator + "." + User._createdAt, - Dmp._creator + "." + User._isActive, - Dmp._creator + "." + User._name, - Dmp._creator + "." + User._roles + "." + UserRole._id, - Dmp._creator + "." + User._roles + "." + UserRole._role, - Dmp._descriptions + "." + Description._id, - Dmp._descriptions + "." + Description._label, - Dmp._descriptions + "." + Description._properties, - Dmp._descriptions + "." + Description._description, - Dmp._descriptions + "." + Description._status, - Dmp._descriptions + "." + Description._descriptionTags, - Dmp._descriptions + "." + Description._descriptionTemplate, - Dmp._descriptions + "." + Description._descriptionReferences, - Dmp._descriptions + "." + Description._isActive, - Dmp._descriptions + "." + Description._properties + "." + PropertyDefinition._fields + "." + eu.eudat.model.descriptionproperties.Field._key, - Dmp._descriptions + "." + Description._properties + "." + PropertyDefinition._fields + "." + eu.eudat.model.descriptionproperties.Field._value, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._id, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._id, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._description, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._abbreviation, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._definition, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._label, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._source, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._sourceType, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._type, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._isActive, - Dmp._descriptions + "." + Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._reference, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._id, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._description, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._label, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._language, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._status, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._isActive, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._groupId, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._type, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._version, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._id, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._description, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._sections, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._title, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._page, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._ordinal, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._defaultVisibility, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._extendedDescription, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._max, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._min, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._placeholder, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._tableView, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._numbering, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._id, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._title, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._description, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._ordinal, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._numbering, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._max, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._min, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._tableView, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._placeholder, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._hasCommentField, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._additionalInformation, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._extendedDescription, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._id, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._ordinal, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._numbering, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + BaseFieldData._label, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + BaseFieldData._fieldType, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._multiAutoComplete, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._label, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._uri, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._source, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._value, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._defaultValue, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._includeInExport, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._schematics, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._validations, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._visibilityRules + "." + Rule._target, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._visibilityRules + "." + Rule._value, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._pages + "." + Page._id, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._pages + "." + Page._ordinal, - Dmp._descriptions + "." + Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._pages + "." + Page._title, - Dmp._descriptions + "." + Description._descriptionTags + "." + DescriptionTag._id, - Dmp._descriptions + "." + Description._descriptionTags + "." + DescriptionTag._tag + "." + Tag._id, - Dmp._descriptions + "." + Description._descriptionTags + "." + DescriptionTag._tag + "." + Tag._label, - Dmp._descriptions + "." + Description._dmpDescriptionTemplate + "." + DmpDescriptionTemplate._sectionId, - Dmp._blueprint + "." + DmpBlueprint._id, - Dmp._blueprint + "." + DmpBlueprint._label, - Dmp._blueprint + "." + DmpBlueprint._definition, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._id, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._description, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._label, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._ordinal, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + eu.eudat.model.dmpblueprintdefinition.Field._id, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + eu.eudat.model.dmpblueprintdefinition.Field._description, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + eu.eudat.model.dmpblueprintdefinition.Field._ordinal, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + eu.eudat.model.dmpblueprintdefinition.Field._label, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + eu.eudat.model.dmpblueprintdefinition.Field._placeholder, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + eu.eudat.model.dmpblueprintdefinition.Field._category, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + eu.eudat.model.dmpblueprintdefinition.Field._required, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + SystemField._systemFieldType, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._fields + "." + ExtraField._dataType, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._descriptionTemplates + "." + eu.eudat.model.dmpblueprintdefinition.DescriptionTemplate._id, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._descriptionTemplates + "." + eu.eudat.model.dmpblueprintdefinition.DescriptionTemplate._label, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._descriptionTemplates + "." + eu.eudat.model.dmpblueprintdefinition.DescriptionTemplate._descriptionTemplateId, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._descriptionTemplates + "." + eu.eudat.model.dmpblueprintdefinition.DescriptionTemplate._maxMultiplicity, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._descriptionTemplates + "." + eu.eudat.model.dmpblueprintdefinition.DescriptionTemplate._minMultiplicity, - Dmp._blueprint + "." + DmpBlueprint._definition + "." + eu.eudat.model.dmpblueprintdefinition.Definition._sections + "." + eu.eudat.model.dmpblueprintdefinition.Section._hasTemplates, - Dmp._entityDois + "." + EntityDoi._doi, - Dmp._entityDois + "." + EntityDoi._id, - Dmp._entityDois + "." + EntityDoi._entityType, - Dmp._dmpUsers + "." + DmpUser._id, - Dmp._dmpUsers + "." + DmpUser._user + "." + User._id, - Dmp._dmpUsers + "." + DmpUser._user + "." + User._additionalInfo, - Dmp._dmpUsers + "." + DmpUser._user + "." + User._createdAt, - Dmp._dmpUsers + "." + DmpUser._user + "." + User._isActive, - Dmp._dmpUsers + "." + DmpUser._user + "." + User._name, - Dmp._dmpUsers + "." + DmpUser._user + "." + User._roles + "." + UserRole._id, - Dmp._dmpUsers + "." + DmpUser._user + "." + User._roles + "." + UserRole._role, - Dmp._dmpUsers + "." + DmpUser._role - );*/ DmpQuery query = this.queryFactory.query(DmpQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).ids(dmpId); DmpFileTransformerModel dmpFileTransformerModel = this.builderFactory.builder(DmpFileTransformerBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(query.first()); - FileEnvelope fileEnvelope = repository.exportDmp(dmpFileTransformerModel, format); + dmpFileTransformerModel.setVariant(format); + FileEnvelope fileEnvelope = repository.exportDmp(dmpFileTransformerModel); eu.eudat.model.file.FileEnvelope result = new eu.eudat.model.file.FileEnvelope(); + byte[] data = storageFileService.readByFileRefAsBytesSafe(fileEnvelope.getFile(), StorageType.Transformer); File temp = new File(environment.getProperty("path.path") + UUID.randomUUID()); try (FileOutputStream fos = new FileOutputStream(temp)) { - fos.write(fileEnvelope.getFile()); + fos.write(data); } result.setFile(temp); result.setFilename(fileEnvelope.getFilename()); @@ -322,125 +153,15 @@ public class FileTransformerService { //GK: First get the right client TransformerRepository repository = getRepository(format); //GK: Second get the Target Data Management Plan - /*FieldSet fieldSet = new BaseFieldSet( - Description._dmp + "." + Dmp._id, - Description._dmp + "." + Dmp._createdAt, - Description._dmp + "." + Dmp._finalizedAt, - Description._dmp + "." + Dmp._groupId, - Description._dmp + "." + Dmp._isActive, - Description._dmp + "." + Dmp._label, - Description._dmp + "." + Dmp._language, - Description._dmp + "." + Dmp._publicAfter, - Description._dmp + "." + Dmp._status, - Description._dmp + "." + Dmp._updatedAt, - Description._dmp + "." + Dmp._version, - Description._dmp + "." + Dmp._properties, - Description._dmp + "." + Dmp._versionStatus, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._id, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._data, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._id, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._description, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._abbreviation, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._definition, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._label, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._source, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._sourceType, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._type, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._isActive, - Description._dmp + "." + Dmp._dmpReferences + "." + DmpReference._reference + "." + Reference._reference, - Description._id, - Description._label, - Description._properties, - Description._description, - Description._status, - Description._descriptionTags, - Description._descriptionTemplate, - Description._descriptionReferences, - Description._isActive, - Description._properties + "." + PropertyDefinition._fields + "." + eu.eudat.model.descriptionproperties.Field._key, - Description._properties + "." + PropertyDefinition._fields + "." + eu.eudat.model.descriptionproperties.Field._value, - Description._descriptionReferences + "." + DescriptionReference._id, - Description._descriptionReferences + "." + DescriptionReference._reference, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._id, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._description, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._abbreviation, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._definition, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._label, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._source, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._sourceType, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._type, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._isActive, - Description._descriptionReferences + "." + DescriptionReference._reference + "." + Reference._reference, - Description._descriptionTemplate + "." + DescriptionTemplate._id, - Description._descriptionTemplate + "." + DescriptionTemplate._description, - Description._descriptionTemplate + "." + DescriptionTemplate._label, - Description._descriptionTemplate + "." + DescriptionTemplate._language, - Description._descriptionTemplate + "." + DescriptionTemplate._status, - Description._descriptionTemplate + "." + DescriptionTemplate._isActive, - Description._descriptionTemplate + "." + DescriptionTemplate._groupId, - Description._descriptionTemplate + "." + DescriptionTemplate._type, - Description._descriptionTemplate + "." + DescriptionTemplate._version, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._pages, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._id, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._description, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._sections, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._title, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._page, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._ordinal, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._defaultVisibility, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._extendedDescription, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._max, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._min, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._placeholder, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._multiplicity + "." + Multiplicity._tableView, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._numbering, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._id, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._title, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._description, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._ordinal, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._numbering, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._max, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._min, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._tableView, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._multiplicity + "." + Multiplicity._placeholder, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._hasCommentField, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._additionalInformation, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._extendedDescription, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._id, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._ordinal, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._numbering, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + BaseFieldData._label, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + BaseFieldData._fieldType, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._multiAutoComplete, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._label, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._uri, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._source, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._data + "." + AutoCompleteData._autoCompleteSingleDataList + "." + AutoCompleteSingleData._autoCompleteOptions + "." + ComboBoxOption._value, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._defaultValue, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._includeInExport, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._schematics, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._validations, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._visibilityRules, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._visibilityRules + "." + Rule._target, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._sections + "." + Section._fieldSets + "." + eu.eudat.model.descriptiontemplatedefinition.FieldSet._fields + "." + Field._visibilityRules + "." + Rule._value, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._pages + "." + Page._id, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._pages + "." + Page._ordinal, - Description._descriptionTemplate + "." + DescriptionTemplate._definition + "." + Definition._pages + "." + Page._title, - Description._descriptionTags + "." + DescriptionTag._id, - Description._descriptionTags + "." + DescriptionTag._tag + "." + Tag._id, - Description._descriptionTags + "." + DescriptionTag._tag + "." + Tag._label, - Description._dmp + "." + Dmp._entityDois + "." + EntityDoi._doi, - Description._dmp + "." + Dmp._entityDois + "." + EntityDoi._id, - Description._dmp + "." + Dmp._entityDois + "." + EntityDoi._entityType - );*/ DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).ids(descriptionId); DescriptionFileTransformerModel descriptionFileTransformerModel = this.builderFactory.builder(DescriptionFileTransformerBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(query.first()); + descriptionFileTransformerModel.setCreatedBy(descriptionFileTransformerModel.getDmp().getCreator()); FileEnvelope fileEnvelope = repository.exportDescription(descriptionFileTransformerModel, format); eu.eudat.model.file.FileEnvelope result = new eu.eudat.model.file.FileEnvelope(); + byte[] data = this.storageFileService.readByFileRefAsBytesSafe(fileEnvelope.getFile(), StorageType.Transformer); File temp = new File(environment.getProperty("path.path") + UUID.randomUUID()); try (FileOutputStream fos = new FileOutputStream(temp)) { - fos.write(fileEnvelope.getFile()); + fos.write(data); } result.setFile(temp); result.setFilename(fileEnvelope.getFilename()); diff --git a/dmp-backend/web/src/main/resources/config/storage-devel.yml b/dmp-backend/web/src/main/resources/config/storage-devel.yml index 76e2c374a..1e2173850 100644 --- a/dmp-backend/web/src/main/resources/config/storage-devel.yml +++ b/dmp-backend/web/src/main/resources/config/storage-devel.yml @@ -6,6 +6,8 @@ storage: basePath: ./storage/temp - type: Main basePath: ./storage/main + - type: Transformer + basePath: ${TRANSFORMER_BASE_PATH} static-files: externalUrls: dmp-backend/web/src/main/resources/externalUrls/ExternalUrls.xml semantics: Semantics.json diff --git a/dmp-backend/web/src/main/resources/config/transformer.yml b/dmp-backend/web/src/main/resources/config/transformer.yml index 6416b0de4..683221506 100644 --- a/dmp-backend/web/src/main/resources/config/transformer.yml +++ b/dmp-backend/web/src/main/resources/config/transformer.yml @@ -6,6 +6,18 @@ transformer: client-id: ${IDP_APIKEY_CLIENT_ID:} client-secret: ${IDP_APIKEY_CLIENT_SECRET:} scope: ${IDP_APIKEY_SCOPE:} + - url: http://localhost:8086 + codes: [ json ] + issuer-url: ${IDP_ISSUER_URI_TOKEN:} + client-id: ${IDP_APIKEY_CLIENT_ID:} + client-secret: ${IDP_APIKEY_CLIENT_SECRET:} + scope: ${IDP_APIKEY_SCOPE:} + - url: http://localhost:8087 + codes: [ xml ] + issuer-url: ${IDP_ISSUER_URI_TOKEN:} + client-id: ${IDP_APIKEY_CLIENT_ID:} + client-secret: ${IDP_APIKEY_CLIENT_SECRET:} + scope: ${IDP_APIKEY_SCOPE:} temp: temp: ${TEMP_STORAGE} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/file/file-format.model.ts b/dmp-frontend/src/app/core/model/file/file-format.model.ts index e3243e117..98f9ff5e5 100644 --- a/dmp-frontend/src/app/core/model/file/file-format.model.ts +++ b/dmp-frontend/src/app/core/model/file/file-format.model.ts @@ -1,5 +1,5 @@ export interface FileFormat { format: string; - formatName: string; + hasLogo: boolean; icon: string; } diff --git a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts index 85acc4801..e7db03436 100644 --- a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts +++ b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts @@ -25,15 +25,15 @@ export class FileTransformerHttpService extends BaseService { return this.http.get(url).pipe(catchError((error: any) => throwError(error))); } - exportDmp(dmpId: Guid): Observable { + exportDmp(dmpId: Guid, format: string): Observable { //TODO: implement const url = `${this.apiBase}/export-dmp`; - return this.http.post(url, null).pipe(catchError((error: any) => throwError(error))); + return this.http.post(url, {id: dmpId, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); } - exportDescription(item: any): Observable { + exportDescription(id: Guid, format: string): Observable { //TODO: implement const url = `${this.apiBase}/export-description`; - return this.http.post(url, item).pipe(catchError((error: any) => throwError(error))); + return this.http.post(url, {id: id, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); } } diff --git a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts index e1dfbf4c0..4248de020 100644 --- a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts +++ b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts @@ -3,12 +3,18 @@ import { FileFormat } from '@app/core/model/file/file-format.model'; import { BaseService } from '@common/base/base.service'; import { catchError, takeUntil } from 'rxjs/operators'; import { FileTransformerHttpService } from './file-transformer.http.service'; +import { Guid } from '@common/types/guid'; +import * as FileSaver from 'file-saver'; +import { MatomoService } from '../matomo/matomo-service'; +import { FileUtils } from '../utilities/file-utils.service'; @Injectable() export class FileTransformerService extends BaseService { constructor( - private fileTransformerHttpService: FileTransformerHttpService + private fileTransformerHttpService: FileTransformerHttpService, + private matomoService: MatomoService, + private fileUtils: FileUtils ) { super(); } private _initialized: boolean = false; @@ -34,4 +40,36 @@ export class FileTransformerService extends BaseService { this._initialized = true; }); } + + exportDmp(id: Guid, format: string) { + this._loading = true; + this.fileTransformerHttpService.exportDmp(id, format).pipe(takeUntil(this._destroyed), catchError((error) => { + this._loading = false; + return null; + })).subscribe(result => { + if (result !== null) { + const blob = new Blob([result.body], { type: 'application/octet-stream' }); + const filename = this.fileUtils.getFilenameFromContentDispositionHeader(result.headers.get('Content-Disposition')); + + FileSaver.saveAs(blob, filename); + this.matomoService.trackDownload('dmps', format, id.toString()); + } + }); + } + + exportDescription(id: Guid, format: string) { + this._loading = true; + this.fileTransformerHttpService.exportDescription(id, format).pipe(takeUntil(this._destroyed), catchError((error) => { + this._loading = false; + return null; + })).subscribe(result => { + if (result !== null) { + const blob = new Blob([result.body], { type: 'application/octet-stream' }); + const filename = this.fileUtils.getFilenameFromContentDispositionHeader(result.headers.get('Content-Disposition')); + + FileSaver.saveAs(blob, filename); + this.matomoService.trackDownload('descriptions', format, id.toString()); + } + }); + } } diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html index 5f3495173..dc5d56ba9 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html @@ -70,19 +70,19 @@ diff --git a/dmp-frontend/src/app/ui/description/editor/description-editor.component.html b/dmp-frontend/src/app/ui/description/editor/description-editor.component.html index e1bc4b90d..f50349bc3 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-editor.component.html +++ b/dmp-frontend/src/app/ui/description/editor/description-editor.component.html @@ -34,15 +34,15 @@ @@ -126,17 +126,17 @@
-
- \ No newline at end of file + diff --git a/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field/form-field.component.ts b/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field/form-field.component.ts index 023b40ee6..74f2dc6bb 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field/form-field.component.ts +++ b/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field/form-field.component.ts @@ -716,7 +716,7 @@ export class DescriptionFormFieldComponent extends BaseComponent implements OnIn // this.filesToUpload = null; // messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.LARGE-FILE-OR-UNACCEPTED-TYPE')); // messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.MAX-FILE-SIZE', { 'maxfilesize': this.form.get("data").value.maxFileSizeInMB })); - // messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.ACCEPTED-FILE-TYPES') + this.form.get("data").value.types.map(type => type.value).join(", ")); + // messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.ACCEPTED-FILE-TRANSFOMER') + this.form.get("data").value.types.map(type => type.value).join(", ")); // } // if (messages && messages.length > 0) { diff --git a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html index 0f7f4badb..cd0b57a03 100644 --- a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html +++ b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html @@ -38,9 +38,9 @@
- - \ No newline at end of file + diff --git a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html index 10fdb6144..c2d51c832 100644 --- a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html +++ b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html @@ -117,9 +117,9 @@ {{ 'DESCRIPTION-OVERVIEW.ACTIONS.EXPORT' | translate }}

- diff --git a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html index 568017f76..44d3a0bfb 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html @@ -38,9 +38,9 @@ more_horiz - @@ -54,4 +54,4 @@ delete{{ 'DMP-LISTING.ACTIONS.DELETE' | translate }} - \ No newline at end of file + diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html index febec2652..ce029b58d 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html @@ -166,9 +166,9 @@

- @@ -204,4 +204,4 @@ - \ No newline at end of file + diff --git a/dmp-frontend/src/assets/i18n/de.json b/dmp-frontend/src/assets/i18n/de.json index 850037eb1..cf82e452a 100644 --- a/dmp-frontend/src/assets/i18n/de.json +++ b/dmp-frontend/src/assets/i18n/de.json @@ -175,7 +175,7 @@ "LANGUAGE": "Sprache", "SIGN-IN": "Sign in to account" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "There is no selected file to upload", "LARGE-FILE-OR-UNACCEPTED-TYPE": "The file is too large or its type is not supported.", "MAX-FILE-SIZE": "Uploaded files should be up to {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Supported media types are: " + "ACCEPTED-FILE-TRANSFOMER": "Supported media types are: " }, "UPLOAD": { "UPLOAD-XML": "Importieren", diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index a6eae7118..e71d5dec5 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -176,7 +176,7 @@ "TENANTS": "Tenants", "REFERENCES": "References" }, - "FILE-TYPES": { + "FILE-TRANSFORMER": { "PDF": "PDF", "XML": "XML", "JSON": "RDA JSON", @@ -849,7 +849,7 @@ "NO-FILES-SELECTED": "There is no selected file to upload", "LARGE-FILE-OR-UNACCEPTED-TYPE": "The file is too large or its type is not supported.", "MAX-FILE-SIZE": "Uploaded files should be up to {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Supported media types are: " + "ACCEPTED-FILE-TRANSFOMER": "Supported media types are: " }, "UPLOAD": { "UPLOAD-XML": "Import", @@ -2847,4 +2847,4 @@ "FINALIZED": "Finalized", "DELETED": "Deleted" } -} \ No newline at end of file +} diff --git a/dmp-frontend/src/assets/i18n/es.json b/dmp-frontend/src/assets/i18n/es.json index b62f2a323..6c739315f 100644 --- a/dmp-frontend/src/assets/i18n/es.json +++ b/dmp-frontend/src/assets/i18n/es.json @@ -175,7 +175,7 @@ "LANGUAGE": "Idioma", "SIGN-IN": "Identificarse con su cuenta" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "RDA JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "There is no selected file to upload", "LARGE-FILE-OR-UNACCEPTED-TYPE": "The file is too large or its type is not supported.", "MAX-FILE-SIZE": "Uploaded files should be up to {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Supported media types are: " + "ACCEPTED-FILE-TRANSFOMER": "Supported media types are: " }, "UPLOAD": { "UPLOAD-XML": "Importar", diff --git a/dmp-frontend/src/assets/i18n/gr.json b/dmp-frontend/src/assets/i18n/gr.json index e0dd83b04..e6379505f 100644 --- a/dmp-frontend/src/assets/i18n/gr.json +++ b/dmp-frontend/src/assets/i18n/gr.json @@ -175,7 +175,7 @@ "LANGUAGE": "Γλώσσα", "SIGN-IN": "Σύνδεση στο λογαριασμό" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "Δεν υπάρχουν επιλεγμένα αρχεία για μεταφόρτωση", "LARGE-FILE-OR-UNACCEPTED-TYPE": "Το αρχείο είναι πολύ μεγάλο ή ο τύπος του δεν υποστηρίζεται.", "MAX-FILE-SIZE": "Τα αρχεία πρέπει να είναι έως {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Οι υποστηριζόμενοι τύποι πολυμέσων είναι: " + "ACCEPTED-FILE-TRANSFOMER": "Οι υποστηριζόμενοι τύποι πολυμέσων είναι: " }, "UPLOAD": { "UPLOAD-XML": "Εισαγωγή", diff --git a/dmp-frontend/src/assets/i18n/hr.json b/dmp-frontend/src/assets/i18n/hr.json index 56107e47d..29eaac943 100644 --- a/dmp-frontend/src/assets/i18n/hr.json +++ b/dmp-frontend/src/assets/i18n/hr.json @@ -175,7 +175,7 @@ "LANGUAGE": "Jezik", "SIGN-IN": "Prijava" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "RDA JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "Nije izabrana niti jedna datoteka", "LARGE-FILE-OR-UNACCEPTED-TYPE": "Datoteka je prevelika ili format nije podržan.", "MAX-FILE-SIZE": "Veličina odabranih datoteka ne smije biti veća od {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Podržani formati datoteka su: " + "ACCEPTED-FILE-TRANSFOMER": "Podržani formati datoteka su: " }, "UPLOAD": { "UPLOAD-XML": "Uvezi", diff --git a/dmp-frontend/src/assets/i18n/pl.json b/dmp-frontend/src/assets/i18n/pl.json index 63f678ff1..4e66a6aa2 100644 --- a/dmp-frontend/src/assets/i18n/pl.json +++ b/dmp-frontend/src/assets/i18n/pl.json @@ -175,7 +175,7 @@ "LANGUAGE": "Język", "SIGN-IN": "Zaloguj się na konto" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "RDA JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "Nie zaznaczono pliku do przesłania", "LARGE-FILE-OR-UNACCEPTED-TYPE": "Plik jest za duży lub jego typ nie jest obsługiwany.", "MAX-FILE-SIZE": "Przesyłane pliki powinny mieć do {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Obsługiwane typy nośników to: " + "ACCEPTED-FILE-TRANSFOMER": "Obsługiwane typy nośników to: " }, "UPLOAD": { "UPLOAD-XML": "Importuj", diff --git a/dmp-frontend/src/assets/i18n/pt.json b/dmp-frontend/src/assets/i18n/pt.json index 94a985895..f25461fb2 100644 --- a/dmp-frontend/src/assets/i18n/pt.json +++ b/dmp-frontend/src/assets/i18n/pt.json @@ -175,7 +175,7 @@ "LANGUAGE": "Idioma", "SIGN-IN": "Entrar na conta" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "RDA JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "There is no selected file to upload", "LARGE-FILE-OR-UNACCEPTED-TYPE": "The file is too large or its type is not supported.", "MAX-FILE-SIZE": "Uploaded files should be up to {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Supported media types are: " + "ACCEPTED-FILE-TRANSFOMER": "Supported media types are: " }, "UPLOAD": { "UPLOAD-XML": "Importar", diff --git a/dmp-frontend/src/assets/i18n/sk.json b/dmp-frontend/src/assets/i18n/sk.json index 596acd804..f67c3a2f5 100644 --- a/dmp-frontend/src/assets/i18n/sk.json +++ b/dmp-frontend/src/assets/i18n/sk.json @@ -175,7 +175,7 @@ "LANGUAGE": "Jazyk", "SIGN-IN": "Prihlásiť sa do účtu" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "There is no selected file to upload", "LARGE-FILE-OR-UNACCEPTED-TYPE": "The file is too large or its type is not supported.", "MAX-FILE-SIZE": "Uploaded files should be up to {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Supported media types are: " + "ACCEPTED-FILE-TRANSFOMER": "Supported media types are: " }, "UPLOAD": { "UPLOAD-XML": "Importovať", diff --git a/dmp-frontend/src/assets/i18n/sr.json b/dmp-frontend/src/assets/i18n/sr.json index 4d83eabd0..2944ce3fd 100644 --- a/dmp-frontend/src/assets/i18n/sr.json +++ b/dmp-frontend/src/assets/i18n/sr.json @@ -175,7 +175,7 @@ "LANGUAGE": "Jezik", "SIGN-IN": "Prijavljivanje korisnika" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "RDA JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "There is no selected file to upload", "LARGE-FILE-OR-UNACCEPTED-TYPE": "The file is too large or its type is not supported.", "MAX-FILE-SIZE": "Uploaded files should be up to {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Supported media types are: " + "ACCEPTED-FILE-TRANSFOMER": "Supported media types are: " }, "UPLOAD": { "UPLOAD-XML": "Uvezite", diff --git a/dmp-frontend/src/assets/i18n/tr.json b/dmp-frontend/src/assets/i18n/tr.json index 15648b3c1..06628424b 100644 --- a/dmp-frontend/src/assets/i18n/tr.json +++ b/dmp-frontend/src/assets/i18n/tr.json @@ -175,7 +175,7 @@ "LANGUAGE": "Dil", "SIGN-IN": "Oturum aç" }, - "FILE-TYPES": { + "FILE-TRANSFOMER": { "PDF": "PDF", "XML": "XML", "JSON": "RDA JSON", @@ -776,7 +776,7 @@ "NO-FILES-SELECTED": "There is no selected file to upload", "LARGE-FILE-OR-UNACCEPTED-TYPE": "The file is too large or its type is not supported.", "MAX-FILE-SIZE": "Uploaded files should be up to {{maxfilesize}} MB.", - "ACCEPTED-FILE-TYPES": "Supported media types are: " + "ACCEPTED-FILE-TRANSFOMER": "Supported media types are: " }, "UPLOAD": { "UPLOAD-XML": "İçeri Aktar",