| 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 | 83cdf7f | 2024-10-23 10:50:29 +0200 | [diff] [blame^] | 30 | List<UserGroupMember> members) { |
| 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 | |
| 39 | if (members != null) { |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 40 | ArrayList<UserGroupMemberDto> memberDtos = new ArrayList<>( |
| 41 | members.size()); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 42 | for (UserGroupMember member : members) { |
| 43 | |
| 44 | UserGroupMemberDto memberDto = new UserGroupMemberDto(); |
| 45 | memberDto.setUserId(member.getUserId()); |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 46 | memberDto.setPrivileges(createPrivilegeList(member.getRoles())); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 47 | memberDtos.add(memberDto); |
| 48 | } |
| 49 | dto.setMembers(memberDtos); |
| 50 | } |
| 51 | else { |
| 52 | dto.setMembers(new ArrayList<UserGroupMemberDto>()); |
| 53 | } |
| 54 | |
| 55 | return dto; |
| 56 | } |
| 57 | |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 58 | private List<PrivilegeType> createPrivilegeList (Set<Role> roles) { |
| 59 | List<PrivilegeType> privileges = new ArrayList<>(roles.size()); |
| 60 | for (Role r : roles) { |
| 61 | privileges.add(r.getPrivilege()); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 62 | } |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 63 | Collections.sort(privileges); |
| 64 | return privileges; |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 65 | } |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 66 | } |