diff --git a/dmp-backend/core/pom.xml b/dmp-backend/core/pom.xml
index 7af53fb4c..9dcacf260 100644
--- a/dmp-backend/core/pom.xml
+++ b/dmp-backend/core/pom.xml
@@ -50,12 +50,12 @@
gr.cite.opendmp
common-models
- 0.0.5
+ 0.0.7
gr.cite.opendmp
file-transformer-base
- 0.0.6
+ 0.0.10
gr.cite
diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/DescriptionTemplateTypeCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/DescriptionTemplateTypeCommonModelBuilder.java
new file mode 100644
index 000000000..fddb513dd
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/DescriptionTemplateTypeCommonModelBuilder.java
@@ -0,0 +1,52 @@
+package eu.eudat.model.builder.commonmodels;
+
+import eu.eudat.authorization.AuthorizationFlags;
+import eu.eudat.commonmodels.models.DescriptionTemplateTypeModel;
+import eu.eudat.convention.ConventionService;
+import eu.eudat.data.DescriptionTemplateTypeEntity;
+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 DescriptionTemplateTypeCommonModelBuilder extends BaseCommonModelBuilder {
+
+ private EnumSet authorize = EnumSet.of(AuthorizationFlags.None);
+
+ @Autowired
+ public DescriptionTemplateTypeCommonModelBuilder(
+ ConventionService conventionService) {
+ super(conventionService, new LoggerService(LoggerFactory.getLogger(DescriptionTemplateTypeCommonModelBuilder.class)));
+ }
+
+ public DescriptionTemplateTypeCommonModelBuilder 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 (DescriptionTemplateTypeEntity d : data) {
+ DescriptionTemplateTypeModel m = new DescriptionTemplateTypeModel();
+ m.setId(d.getId());
+ m.setName(d.getName());
+ models.add(new CommonModelBuilderItemResponse<>(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/commonmodels/description/PropertyDefinitionFieldSetItemModelCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/PropertyDefinitionFieldSetItemModelCommonModelBuilder.java
index e8d7af56b..74eacfc87 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/PropertyDefinitionFieldSetItemModelCommonModelBuilder.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/PropertyDefinitionFieldSetItemModelCommonModelBuilder.java
@@ -66,7 +66,7 @@ public class PropertyDefinitionFieldSetItemModelCommonModelBuilder extends BaseC
if (d.getFields() != null && !d.getFields().isEmpty()) {
m.setFields(new HashMap<>());
for (String key : d.getFields().keySet()){
- FieldEntity fieldEntity = fieldSetEntity != null ? fieldSetEntity.getAllField().stream().findFirst().orElse(null) : null;
+ FieldEntity fieldEntity = fieldSetEntity != null ? fieldSetEntity.getFieldById(key).stream().findFirst().orElse(null) : null;
m.getFields().put(key, this.builderFactory.builder(FieldCommonModelBuilder.class).useSharedStorage(useSharedStorage).authorize(this.authorize).withFieldEntity(fieldEntity).build(d.getFields().get(key)));
}
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/DescriptionTemplateCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/DescriptionTemplateCommonModelBuilder.java
index 4350b8b76..80710a5e8 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/DescriptionTemplateCommonModelBuilder.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/DescriptionTemplateCommonModelBuilder.java
@@ -1,16 +1,17 @@
package eu.eudat.model.builder.commonmodels.descriptiontemplate;
import eu.eudat.authorization.AuthorizationFlags;
+import eu.eudat.commonmodels.models.DescriptionTemplateTypeModel;
import eu.eudat.commonmodels.models.descriptiotemplate.DescriptionTemplateModel;
-import eu.eudat.commons.JsonHandlingService;
import eu.eudat.commons.XmlHandlingService;
import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity;
-import eu.eudat.commons.types.dmp.DmpPropertiesEntity;
import eu.eudat.convention.ConventionService;
import eu.eudat.data.DescriptionTemplateEntity;
+import eu.eudat.data.DescriptionTemplateTypeEntity;
import eu.eudat.model.builder.commonmodels.BaseCommonModelBuilder;
import eu.eudat.model.builder.commonmodels.CommonModelBuilderItemResponse;
-import eu.eudat.model.builder.commonmodels.dmp.DmpPropertiesCommonModelBuilder;
+import eu.eudat.model.builder.commonmodels.DescriptionTemplateTypeCommonModelBuilder;
+import eu.eudat.query.DescriptionTemplateTypeQuery;
import gr.cite.tools.data.builder.BuilderFactory;
import gr.cite.tools.data.query.QueryFactory;
import gr.cite.tools.exception.MyApplicationException;
@@ -22,6 +23,7 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.*;
+import java.util.stream.Collectors;
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@@ -31,12 +33,14 @@ public class DescriptionTemplateCommonModelBuilder extends BaseCommonModelBuilde
private final XmlHandlingService xmlHandlingService;
private final BuilderFactory builderFactory;
+ private final QueryFactory queryFactory;
@Autowired
public DescriptionTemplateCommonModelBuilder(
- ConventionService conventionService, XmlHandlingService xmlHandlingService, BuilderFactory builderFactory) {
+ ConventionService conventionService, XmlHandlingService xmlHandlingService, BuilderFactory builderFactory, QueryFactory queryFactory) {
super(conventionService, new LoggerService(LoggerFactory.getLogger(DescriptionTemplateCommonModelBuilder.class)));
this.xmlHandlingService = xmlHandlingService;
this.builderFactory = builderFactory;
+ this.queryFactory = queryFactory;
}
public DescriptionTemplateCommonModelBuilder authorize(EnumSet values) {
@@ -49,6 +53,7 @@ public class DescriptionTemplateCommonModelBuilder extends BaseCommonModelBuilde
this.logger.debug("building for {}", Optional.ofNullable(data).map(List::size).orElse(0));
if (data == null || data.isEmpty()) return new ArrayList<>();
+ Map typeMap = this.collectDescriptionTemplateTypes(data);
List> models = new ArrayList<>();
for (DescriptionTemplateEntity d : data) {
DescriptionTemplateModel m = new DescriptionTemplateModel();
@@ -63,6 +68,7 @@ public class DescriptionTemplateCommonModelBuilder extends BaseCommonModelBuilde
DefinitionEntity definition = this.xmlHandlingService.fromXmlSafe(DefinitionEntity.class, d.getDefinition());
m.setDefinition(this.builderFactory.builder(DefinitionCommonModelBuilder.class).authorize(this.authorize).build(definition));
}
+ if (typeMap != null && d.getTypeId() != null && typeMap.containsKey(d.getTypeId())) m.setType(typeMap.get(d.getTypeId()));
models.add(new CommonModelBuilderItemResponse<>(m, d));
@@ -73,4 +79,19 @@ public class DescriptionTemplateCommonModelBuilder extends BaseCommonModelBuilde
return models;
}
+
+
+
+ private Map collectDescriptionTemplateTypes(List data) throws MyApplicationException {
+ if (data.isEmpty())
+ return null;
+ this.logger.debug("checking related - {}", DescriptionTemplateTypeModel.class.getSimpleName());
+
+ Map itemMap;
+ DescriptionTemplateTypeQuery q = this.queryFactory.query(DescriptionTemplateTypeQuery.class).authorize(this.authorize).ids(data.stream().map(DescriptionTemplateEntity::getTypeId).distinct().collect(Collectors.toList()));
+ itemMap = this.builderFactory.builder(DescriptionTemplateTypeCommonModelBuilder.class).authorize(this.authorize).asForeignKey(q, DescriptionTemplateTypeEntity::getId);
+
+ return itemMap;
+ }
+
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/fielddata/ReferenceTypeDataCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/fielddata/ReferenceTypeDataCommonModelBuilder.java
index a2e86e7d5..c4f14cebb 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/fielddata/ReferenceTypeDataCommonModelBuilder.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/descriptiontemplate/fielddata/ReferenceTypeDataCommonModelBuilder.java
@@ -36,6 +36,7 @@ public class ReferenceTypeDataCommonModelBuilder extends BaseFieldDataCommonMode
@Override
protected void buildChild(ReferenceTypeDataEntity d, ReferenceTypeDataModel m) {
+ m.setMultipleSelect(d.getMultipleSelect());
if (d.getReferenceTypeId() != null) m.setReferenceType(this.builderFactory.builder(ReferenceTypeCommonModelBuilder.class).build(this.queryFactory.query(ReferenceTypeQuery.class).ids(d.getReferenceTypeId()).first())); //TODO: Optimize
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java
index 44d9bd58f..e1627afdd 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java
@@ -238,7 +238,7 @@ public class VisibilityServiceImpl implements VisibilityService {
Boolean currentValue = this.visibility.getOrDefault(fieldKey, null);
if (currentValue == null){
this.visibility.put(fieldKey, true);
- this.setDefaultSectionVisibility(sectionEntity);
+ this.setDefaultSectionVisibility(subSectionEntity);
}
}
}
@@ -356,8 +356,7 @@ public class VisibilityServiceImpl implements VisibilityService {
}
else if (eu.eudat.commons.enums.FieldType.isTextListType(fieldType) && field.getTextListValue() != null && !field.getTextListValue().isEmpty()) {
return rule.getTextListValue() != null &&
- new HashSet<>(field.getTextListValue()).containsAll(rule.getTextListValue()) &&
- new HashSet<>(rule.getTextListValue()).containsAll(field.getTextListValue());
+ new HashSet<>(field.getTextListValue()).containsAll(rule.getTextListValue());
}
else if (eu.eudat.commons.enums.FieldType.isReferenceType(fieldType)) {
return rule.getTextListValue() != null &&
diff --git a/dmp-backend/web/pom.xml b/dmp-backend/web/pom.xml
index b5a4fa0ef..481d5ba04 100644
--- a/dmp-backend/web/pom.xml
+++ b/dmp-backend/web/pom.xml
@@ -199,7 +199,7 @@
gr.cite.opendmp
file-transformer-base
- 0.0.6
+ 0.0.10
diff --git a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java
index 693d8d88d..aad362238 100644
--- a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java
+++ b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java
@@ -119,9 +119,10 @@ public class DescriptionTemplateXmlMigrationService {
if (persist == null)
return data;
if (!this.conventionService.isListNullOrEmpty(persist.getPages())) {
+ Map> sectionPerPage = mapSectionsToPage(persist);
data.setPages(new ArrayList<>());
for (Page pagePersist : persist.getPages()) {
- data.getPages().add(this.buildPageEntity(pagePersist, persist.getSections(), referenceTypeEntityMap));
+ data.getPages().add(this.buildPageEntity(pagePersist, sectionPerPage.get(pagePersist.getId()), referenceTypeEntityMap));
}
}
@@ -458,7 +459,7 @@ public class DescriptionTemplateXmlMigrationService {
- private @NotNull PageEntity buildPageEntity(Page persist, List allSections, Map referenceTypeEntityMap) throws URISyntaxException {
+ private @NotNull PageEntity buildPageEntity(Page persist, List sections, Map referenceTypeEntityMap) throws URISyntaxException {
PageEntity data = new PageEntity();
if (persist == null)
return data;
@@ -467,7 +468,6 @@ public class DescriptionTemplateXmlMigrationService {
data.setOrdinal(persist.getOrdinal());
data.setTitle(persist.getTitle());
- List sections = allSections.stream().filter(x-> this.isInPage(x, persist)).toList();
if (!this.conventionService.isListNullOrEmpty(sections)) {
data.setSections(new ArrayList<>());
for (Section sectionPersist : sections) {
@@ -477,16 +477,35 @@ public class DescriptionTemplateXmlMigrationService {
return data;
}
+
+ private Map> mapSectionsToPage(ViewStyleModel persist){
+ List mappedSectionsIds = new ArrayList<>();
+ Map> sectionPerPage = new HashMap<>();
+ if (persist == null || persist.getPages() == null || persist.getSections() == null) return sectionPerPage;
+
+ for (Page page :persist.getPages()){
+ sectionPerPage.put(page.getId(), new ArrayList<>());
+ for (Section section : persist.getSections()){
+ if (this.isInPage(section, page)){
+ if (mappedSectionsIds.contains(section.getId())) throw new MyApplicationException("Multiple page section found for page " + page.getId() + " section " + section.getId());
+ mappedSectionsIds.add(section.getId());
+ sectionPerPage.get(page.getId()).add(section);
+ }
+ }
+ }
+
+ for (Section section : persist.getSections()){
+ if (!mappedSectionsIds.contains(section.getId())) throw new MyApplicationException("Orphan section found " + section.getId());
+ }
+
+ return sectionPerPage;
+ }
+
private boolean isInPage(Section section, Page page){
try {
return UUID.fromString(section.getPage()).equals(UUID.fromString(page.getId()));
} catch (Exception e){
- if (section.getPage().toLowerCase(Locale.ROOT).equals(page.getId().toLowerCase(Locale.ROOT))) return true;
- try {
- return Integer.parseInt(section.getPage().replace("page_", "")) == page.getOrdinal();
- } catch (Exception e1){
- return section.getPage().toLowerCase(Locale.ROOT).equals(page.getId().toLowerCase(Locale.ROOT));
- }
+ return section.getPage().toLowerCase(Locale.ROOT).equals(page.getId().toLowerCase(Locale.ROOT));
}
}