From 9cf91aab50177058cd3bffa261d2033b8f505f00 Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Fri, 3 Nov 2023 15:53:18 +0200 Subject: [PATCH] DescriptionTemplate refactor --- .../persist/DescriptionTemplatePersist.java | 10 +++--- .../NewVersionDescriptionTemplatePersist.java | 8 +++-- .../UserDescriptionTemplatePersist.java | 36 +++++++++++++++++++ .../DescriptionTemplateServiceImpl.java | 17 ++++----- 4 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/persist/UserDescriptionTemplatePersist.java diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionTemplatePersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionTemplatePersist.java index e26da6fcc..ee5f15bde 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionTemplatePersist.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionTemplatePersist.java @@ -2,6 +2,7 @@ package eu.eudat.model.persist; import eu.eudat.commons.enums.DescriptionTemplateStatus; +import eu.eudat.commons.enums.UserDescriptionTemplateRole; import eu.eudat.commons.validation.FieldNotNullIfOtherSet; import eu.eudat.commons.validation.ValidEnum; import eu.eudat.commons.validation.ValidId; @@ -45,8 +46,8 @@ public class DescriptionTemplatePersist { @Valid private DefinitionPersist definition = null; - private List users = null; - + @Valid + private List users = null; private String hash; @@ -114,12 +115,13 @@ public class DescriptionTemplatePersist { this.definition = definition; } - public List getUsers() { + public List getUsers() { return users; } - public void setUsers(List users) { + public void setUsers(List users) { this.users = users; } } + diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/NewVersionDescriptionTemplatePersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/NewVersionDescriptionTemplatePersist.java index 8ba731b4b..e99902c99 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/persist/NewVersionDescriptionTemplatePersist.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/NewVersionDescriptionTemplatePersist.java @@ -44,7 +44,9 @@ public class NewVersionDescriptionTemplatePersist { @NotNull(message = "{validation.empty}") @Valid private DefinitionPersist definition = null; - private List users = null; + + @Valid + private List users = null; private String hash; @@ -112,11 +114,11 @@ public class NewVersionDescriptionTemplatePersist { this.definition = definition; } - public List getUsers() { + public List getUsers() { return users; } - public void setUsers(List users) { + public void setUsers(List users) { this.users = users; } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/UserDescriptionTemplatePersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/UserDescriptionTemplatePersist.java new file mode 100644 index 000000000..cc5fb3ade --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/UserDescriptionTemplatePersist.java @@ -0,0 +1,36 @@ +package eu.eudat.model.persist; + +import eu.eudat.commons.enums.UserDescriptionTemplateRole; +import eu.eudat.commons.validation.FieldNotNullIfOtherSet; +import eu.eudat.commons.validation.ValidEnum; +import eu.eudat.commons.validation.ValidId; +import jakarta.validation.constraints.NotNull; + +import java.util.UUID; + +@FieldNotNullIfOtherSet(message = "{validation.hashempty}") +public class UserDescriptionTemplatePersist { + + @NotNull(message = "{validation.empty}") + @ValidId(message = "{validation.invalidid}") + private UUID userId = null; + + @ValidEnum(message = "{validation.empty}") + private UserDescriptionTemplateRole role; + + public UUID getUserId() { + return userId; + } + + public void setUserId(UUID userId) { + this.userId = userId; + } + + public UserDescriptionTemplateRole getRole() { + return role; + } + + public void setRole(UserDescriptionTemplateRole role) { + this.role = role; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java index f75f94683..b7c39e420 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java @@ -28,6 +28,7 @@ import eu.eudat.model.descriptiontemplatedefinition.Page; import eu.eudat.model.descriptiontemplatedefinition.Section; import eu.eudat.model.persist.DescriptionTemplatePersist; import eu.eudat.model.persist.NewVersionDescriptionTemplatePersist; +import eu.eudat.model.persist.UserDescriptionTemplatePersist; import eu.eudat.model.persist.descriptiontemplatedefinition.*; import eu.eudat.model.persist.descriptiontemplatedefinition.fielddata.BaseFieldDataPersist; import eu.eudat.query.DescriptionTemplateQuery; @@ -171,26 +172,26 @@ public class DescriptionTemplateServiceImpl implements DescriptionTemplateServic return this.builderFactory.builder(DescriptionTemplateBuilder.class).authorize(AuthorizationFlags.OwnerOrPermission).build(BaseFieldSet.build(fields, DescriptionTemplate._id), data); } - private void persistUsers(UUID id, List users) throws InvalidApplicationException { + private void persistUsers(UUID id, List users) throws InvalidApplicationException { if (users == null) users = new ArrayList<>(); List items = this.queryFactory.query(UserDescriptionTemplateQuery.class).isActive(IsActive.Active).descriptionTemplateIds(id).collect(); - for (UUID userId : users) { - UserDescriptionTemplateEntity data = items.stream().filter(x -> x.getUser() == userId).findFirst().orElse(null); + List updatedCreatedIds = new ArrayList<>(); + for (UserDescriptionTemplatePersist user : users) { + UserDescriptionTemplateEntity data = items.stream().filter(x -> x.getUser() == user.getUserId() && x.getRole() == user.getRole()).findFirst().orElse(null); if (data == null){ data = new UserDescriptionTemplateEntity(); data.setId(UUID.randomUUID()); data.setIsActive(IsActive.Active); data.setCreatedAt(Instant.now()); data.setDescriptionTemplate(id); - data.setUser(userId); - data.setUser(userId); - data.setRole(UserDescriptionTemplateRole.Member); + data.setUser(user.getUserId()); + data.setRole(user.getRole()); this.entityManager.persist(data); this.sendJoinMail(data); } + updatedCreatedIds.add(data.getId()); } - List finalUsers = users; - List toDelete = items.stream().filter(x-> finalUsers.stream().noneMatch(y-> y.equals(x.getUser()))).collect(Collectors.toList()); + List toDelete = items.stream().filter(x-> updatedCreatedIds.stream().noneMatch(y-> y.equals(x.getId()))).collect(Collectors.toList()); this.deleterFactory.deleter(UserDescriptionTemplateDeleter.class).delete(toDelete); }