From f663fc24b7cc43659cb4eb416bdf55db4ff052cc Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Thu, 21 Mar 2024 10:17:39 +0200 Subject: [PATCH] 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; + } +}