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/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;
+ }
+}
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;