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