| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 1 | package de.ids_mannheim.korap.dto.converter; |
| 2 | |
| 3 | import java.util.ArrayList; |
| margaretha | 32475f7 | 2021-02-01 11:50:38 +0100 | [diff] [blame] | 4 | import java.util.Collections; |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 5 | import java.util.List; |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 6 | import java.util.Set; |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 7 | |
| margaretha | 23aae22 | 2017-12-22 15:08:23 +0100 | [diff] [blame] | 8 | import org.springframework.stereotype.Component; |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 9 | |
| margaretha | 4566792 | 2018-01-25 21:23:03 +0100 | [diff] [blame] | 10 | import de.ids_mannheim.korap.constant.GroupMemberStatus; |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 11 | import de.ids_mannheim.korap.constant.PredefinedRole; |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 12 | import de.ids_mannheim.korap.dto.UserGroupDto; |
| 13 | import de.ids_mannheim.korap.dto.UserGroupMemberDto; |
| 14 | import de.ids_mannheim.korap.entity.Role; |
| 15 | import de.ids_mannheim.korap.entity.UserGroup; |
| 16 | import de.ids_mannheim.korap.entity.UserGroupMember; |
| 17 | |
| margaretha | 398f472 | 2019-01-09 19:07:20 +0100 | [diff] [blame] | 18 | /** |
| 19 | * UserGroupConverter manages conversion of {@link UserGroup} objects |
| 20 | * to their data access objects (DTO), e.g. UserGroupDto. DTO |
| 21 | * structure defines controllers output, namely the structure of JSON |
| 22 | * objects in HTTP responses. |
| margaretha | 69e8adc | 2018-03-15 15:14:22 +0100 | [diff] [blame] | 23 | * |
| 24 | * @author margaretha |
| 25 | * |
| 26 | */ |
| margaretha | 23aae22 | 2017-12-22 15:08:23 +0100 | [diff] [blame] | 27 | @Component |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 28 | public class UserGroupConverter { |
| 29 | |
| 30 | public UserGroupDto createUserGroupDto (UserGroup group, |
| margaretha | 6f28837 | 2018-03-08 18:35:23 +0100 | [diff] [blame] | 31 | List<UserGroupMember> members, GroupMemberStatus userMemberStatus, |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 32 | Set<Role> roleSet) { |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 33 | |
| 34 | UserGroupDto dto = new UserGroupDto(); |
| 35 | dto.setId(group.getId()); |
| 36 | dto.setName(group.getName()); |
| margaretha | d8aa135 | 2019-12-19 11:04:41 +0100 | [diff] [blame] | 37 | dto.setDescription(group.getDescription()); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 38 | dto.setStatus(group.getStatus()); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 39 | dto.setOwner(group.getCreatedBy()); |
| margaretha | 4566792 | 2018-01-25 21:23:03 +0100 | [diff] [blame] | 40 | dto.setUserMemberStatus(userMemberStatus); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 41 | |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 42 | if (roleSet != null) { |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 43 | dto.setUserRoles(convertRoleToPredefinedRoles(roleSet)); |
| margaretha | 6f28837 | 2018-03-08 18:35:23 +0100 | [diff] [blame] | 44 | } |
| margaretha | 6f28837 | 2018-03-08 18:35:23 +0100 | [diff] [blame] | 45 | |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 46 | if (members != null) { |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 47 | ArrayList<UserGroupMemberDto> memberDtos = new ArrayList<>( |
| 48 | members.size()); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 49 | for (UserGroupMember member : members) { |
| 50 | |
| 51 | UserGroupMemberDto memberDto = new UserGroupMemberDto(); |
| 52 | memberDto.setUserId(member.getUserId()); |
| 53 | memberDto.setStatus(member.getStatus()); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 54 | memberDto.setRoles( |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 55 | convertRoleToPredefinedRoles(member.getRoles())); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 56 | memberDtos.add(memberDto); |
| 57 | } |
| 58 | dto.setMembers(memberDtos); |
| 59 | } |
| 60 | else { |
| 61 | dto.setMembers(new ArrayList<UserGroupMemberDto>()); |
| 62 | } |
| 63 | |
| 64 | return dto; |
| 65 | } |
| 66 | |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 67 | private List<PredefinedRole> convertRoleToPredefinedRoles (Set<Role> roleSet) { |
| 68 | List<PredefinedRole> roles = new ArrayList<>(roleSet.size()); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 69 | for (Role r : roleSet) { |
| 70 | roles.add(r.getName()); |
| 71 | } |
| 72 | Collections.sort(roles); |
| 73 | return roles; |
| 74 | } |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 75 | } |