| 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; |
| 4 | import java.util.List; |
| 5 | |
| margaretha | 23aae22 | 2017-12-22 15:08:23 +0100 | [diff] [blame] | 6 | import org.springframework.stereotype.Component; |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 7 | |
| margaretha | 4566792 | 2018-01-25 21:23:03 +0100 | [diff] [blame] | 8 | import de.ids_mannheim.korap.constant.GroupMemberStatus; |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 9 | import de.ids_mannheim.korap.dto.UserGroupDto; |
| 10 | import de.ids_mannheim.korap.dto.UserGroupMemberDto; |
| 11 | import de.ids_mannheim.korap.entity.Role; |
| 12 | import de.ids_mannheim.korap.entity.UserGroup; |
| 13 | import de.ids_mannheim.korap.entity.UserGroupMember; |
| 14 | |
| margaretha | 69e8adc | 2018-03-15 15:14:22 +0100 | [diff] [blame] | 15 | /** Manages conversion of {@link UserGroup} objects to their data access objects (DTO), |
| 16 | * e.g. UserGroupDto. DTO structure defines controllers output, namely the structure of |
| 17 | * JSON objects in HTTP responses. |
| 18 | * |
| 19 | * @author margaretha |
| 20 | * |
| 21 | */ |
| margaretha | 23aae22 | 2017-12-22 15:08:23 +0100 | [diff] [blame] | 22 | @Component |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 23 | public class UserGroupConverter { |
| 24 | |
| 25 | public UserGroupDto createUserGroupDto (UserGroup group, |
| margaretha | 6f28837 | 2018-03-08 18:35:23 +0100 | [diff] [blame] | 26 | List<UserGroupMember> members, GroupMemberStatus userMemberStatus, |
| 27 | List<Role> userRoles) { |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 28 | |
| 29 | UserGroupDto dto = new UserGroupDto(); |
| 30 | dto.setId(group.getId()); |
| 31 | dto.setName(group.getName()); |
| 32 | dto.setOwner(group.getCreatedBy()); |
| margaretha | 4566792 | 2018-01-25 21:23:03 +0100 | [diff] [blame] | 33 | dto.setUserMemberStatus(userMemberStatus); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 34 | |
| margaretha | 6f28837 | 2018-03-08 18:35:23 +0100 | [diff] [blame] | 35 | List<String> roles = new ArrayList<>(userRoles.size()); |
| 36 | for (Role r : userRoles) { |
| 37 | roles.add(r.getName()); |
| 38 | } |
| 39 | dto.setUserRoles(roles); |
| 40 | |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 41 | if (members != null) { |
| 42 | ArrayList<UserGroupMemberDto> memberDtos = |
| 43 | new ArrayList<>(members.size()); |
| 44 | for (UserGroupMember member : members) { |
| 45 | |
| 46 | UserGroupMemberDto memberDto = new UserGroupMemberDto(); |
| 47 | memberDto.setUserId(member.getUserId()); |
| 48 | memberDto.setStatus(member.getStatus()); |
| margaretha | 69e8adc | 2018-03-15 15:14:22 +0100 | [diff] [blame] | 49 | List<String> memberRoles = |
| 50 | new ArrayList<>(member.getRoles().size()); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 51 | for (Role r : member.getRoles()) { |
| margaretha | 6f28837 | 2018-03-08 18:35:23 +0100 | [diff] [blame] | 52 | memberRoles.add(r.getName()); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 53 | } |
| margaretha | 6f28837 | 2018-03-08 18:35:23 +0100 | [diff] [blame] | 54 | memberDto.setRoles(memberRoles); |
| margaretha | 0b63de4 | 2017-12-20 18:48:09 +0100 | [diff] [blame] | 55 | memberDtos.add(memberDto); |
| 56 | } |
| 57 | dto.setMembers(memberDtos); |
| 58 | } |
| 59 | else { |
| 60 | dto.setMembers(new ArrayList<UserGroupMemberDto>()); |
| 61 | } |
| 62 | |
| 63 | return dto; |
| 64 | } |
| 65 | |
| 66 | } |