blob: 9dd4df967fe15a0020be660b98cf9ebb1ab049c8 [file] [log] [blame]
margaretha0b63de42017-12-20 18:48:09 +01001package de.ids_mannheim.korap.dto.converter;
2
3import java.util.ArrayList;
4import java.util.List;
5
margaretha23aae222017-12-22 15:08:23 +01006import org.springframework.stereotype.Component;
margaretha0b63de42017-12-20 18:48:09 +01007
margaretha45667922018-01-25 21:23:03 +01008import de.ids_mannheim.korap.constant.GroupMemberStatus;
margaretha0b63de42017-12-20 18:48:09 +01009import de.ids_mannheim.korap.dto.UserGroupDto;
10import de.ids_mannheim.korap.dto.UserGroupMemberDto;
11import de.ids_mannheim.korap.entity.Role;
12import de.ids_mannheim.korap.entity.UserGroup;
13import de.ids_mannheim.korap.entity.UserGroupMember;
14
margaretha69e8adc2018-03-15 15:14:22 +010015/** 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 */
margaretha23aae222017-12-22 15:08:23 +010022@Component
margaretha0b63de42017-12-20 18:48:09 +010023public class UserGroupConverter {
24
25 public UserGroupDto createUserGroupDto (UserGroup group,
margaretha6f288372018-03-08 18:35:23 +010026 List<UserGroupMember> members, GroupMemberStatus userMemberStatus,
27 List<Role> userRoles) {
margaretha0b63de42017-12-20 18:48:09 +010028
29 UserGroupDto dto = new UserGroupDto();
30 dto.setId(group.getId());
31 dto.setName(group.getName());
32 dto.setOwner(group.getCreatedBy());
margaretha45667922018-01-25 21:23:03 +010033 dto.setUserMemberStatus(userMemberStatus);
margaretha0b63de42017-12-20 18:48:09 +010034
margaretha6f288372018-03-08 18:35:23 +010035 List<String> roles = new ArrayList<>(userRoles.size());
36 for (Role r : userRoles) {
37 roles.add(r.getName());
38 }
39 dto.setUserRoles(roles);
40
margaretha0b63de42017-12-20 18:48:09 +010041 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());
margaretha69e8adc2018-03-15 15:14:22 +010049 List<String> memberRoles =
50 new ArrayList<>(member.getRoles().size());
margaretha0b63de42017-12-20 18:48:09 +010051 for (Role r : member.getRoles()) {
margaretha6f288372018-03-08 18:35:23 +010052 memberRoles.add(r.getName());
margaretha0b63de42017-12-20 18:48:09 +010053 }
margaretha6f288372018-03-08 18:35:23 +010054 memberDto.setRoles(memberRoles);
margaretha0b63de42017-12-20 18:48:09 +010055 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}