From 709fecf1f19ef0fb0a869e8b60db913b44f837b7 Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Thu, 21 Mar 2024 10:16:55 +0200 Subject: [PATCH 1/2] add visibility to models --- dmp-backend/core/pom.xml | 2 +- .../description/DescriptionCommonModelBuilder.java | 8 +++++--- .../eu/eudat/service/visibility/VisibilityService.java | 4 ++++ .../eudat/service/visibility/VisibilityServiceImpl.java | 6 ++++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/dmp-backend/core/pom.xml b/dmp-backend/core/pom.xml index d176c6f75..7af53fb4c 100644 --- a/dmp-backend/core/pom.xml +++ b/dmp-backend/core/pom.xml @@ -50,7 +50,7 @@ gr.cite.opendmp common-models - 0.0.4 + 0.0.5 gr.cite.opendmp diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java index d723833f4..b9bd932af 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java @@ -21,6 +21,7 @@ import eu.eudat.model.builder.commonmodels.CommonModelBuilderItemResponse; import eu.eudat.model.builder.commonmodels.dmp.DmpCommonModelBuilder; import eu.eudat.model.builder.commonmodels.descriptiontemplate.DescriptionTemplateCommonModelBuilder; import eu.eudat.query.*; +import eu.eudat.service.visibility.VisibilityService; import eu.eudat.service.visibility.VisibilityServiceImpl; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.query.QueryFactory; @@ -101,10 +102,11 @@ public class DescriptionCommonModelBuilder extends BaseCommonModelBuilder(m, d)); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityService.java b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityService.java index 81830cecd..a7f7a1d03 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityService.java @@ -1,5 +1,9 @@ package eu.eudat.service.visibility; +import java.util.Map; + public interface VisibilityService { boolean isVisible(String id, Integer ordinal); + + Map getVisibilityStates(); } 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 5267c14e3..c1289bdfc 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 @@ -45,6 +45,12 @@ public class VisibilityServiceImpl implements VisibilityService { FieldKey fieldKey = new FieldKey(id, ordinal); return this.visibility.getOrDefault(fieldKey, false); } + + @Override + public Map getVisibilityStates() { + this.calculateVisibility(); + return visibility; + } private void calculateVisibility(){ if (visibility != null) return; From f663fc24b7cc43659cb4eb416bdf55db4ff052cc Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Thu, 21 Mar 2024 10:17:39 +0200 Subject: [PATCH 2/2] add visibility to models --- .../VisibilityStateModelBuilder.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/VisibilityStateModelBuilder.java diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/VisibilityStateModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/VisibilityStateModelBuilder.java new file mode 100644 index 000000000..66877e88e --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/VisibilityStateModelBuilder.java @@ -0,0 +1,56 @@ +package eu.eudat.model.builder.commonmodels.description; + +import eu.eudat.authorization.AuthorizationFlags; +import eu.eudat.commonmodels.models.description.VisibilityStateModel; +import eu.eudat.convention.ConventionService; +import eu.eudat.model.builder.commonmodels.BaseCommonModelBuilder; +import eu.eudat.model.builder.commonmodels.CommonModelBuilderItemResponse; +import eu.eudat.service.visibility.FieldKey; +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.*; + +@Component("commonmodels.VisibilityStateModelBuilder") +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class VisibilityStateModelBuilder extends BaseCommonModelBuilder> { + private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); + @Autowired + public VisibilityStateModelBuilder( + ConventionService conventionService + ) { + super(conventionService, new LoggerService(LoggerFactory.getLogger(VisibilityStateModelBuilder.class))); + } + + public VisibilityStateModelBuilder 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 (Map.Entry d : data) { + VisibilityStateModel m = new VisibilityStateModel(); + if (d.getKey() != null) { + m.setFieldId(d.getKey().getFieldId()); + m.setOrdinal(d.getKey().getOrdinal()); + } + m.setVisible(d.getValue()); + + models.add(new CommonModelBuilderItemResponse<>(m, d)); + } + + this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); + + return models; + } +}