blob: e2e0a3d369a223504b08c25332da2f1cd75b61e8 [file] [log] [blame]
margaretha0b63de42017-12-20 18:48:09 +01001package de.ids_mannheim.korap.dto.converter;
2
3import java.util.ArrayList;
margaretha32475f72021-02-01 11:50:38 +01004import java.util.Collections;
margaretha0b63de42017-12-20 18:48:09 +01005import java.util.List;
margaretha18533fd2018-03-28 16:01:06 +02006import java.util.Set;
margaretha0b63de42017-12-20 18:48:09 +01007
margaretha23aae222017-12-22 15:08:23 +01008import org.springframework.stereotype.Component;
margaretha0b63de42017-12-20 18:48:09 +01009
margaretha45667922018-01-25 21:23:03 +010010import de.ids_mannheim.korap.constant.GroupMemberStatus;
margaretha57103a02024-07-17 12:39:50 +020011import de.ids_mannheim.korap.constant.PredefinedRole;
margaretha0b63de42017-12-20 18:48:09 +010012import de.ids_mannheim.korap.dto.UserGroupDto;
13import de.ids_mannheim.korap.dto.UserGroupMemberDto;
14import de.ids_mannheim.korap.entity.Role;
15import de.ids_mannheim.korap.entity.UserGroup;
16import de.ids_mannheim.korap.entity.UserGroupMember;
17
margaretha398f4722019-01-09 19:07:20 +010018/**
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.
margaretha69e8adc2018-03-15 15:14:22 +010023 *
24 * @author margaretha
25 *
26 */
margaretha23aae222017-12-22 15:08:23 +010027@Component
margaretha0b63de42017-12-20 18:48:09 +010028public class UserGroupConverter {
29
30 public UserGroupDto createUserGroupDto (UserGroup group,
margaretha6f288372018-03-08 18:35:23 +010031 List<UserGroupMember> members, GroupMemberStatus userMemberStatus,
margaretha18533fd2018-03-28 16:01:06 +020032 Set<Role> roleSet) {
margaretha0b63de42017-12-20 18:48:09 +010033
34 UserGroupDto dto = new UserGroupDto();
35 dto.setId(group.getId());
36 dto.setName(group.getName());
margarethad8aa1352019-12-19 11:04:41 +010037 dto.setDescription(group.getDescription());
margaretha293ee032018-03-20 20:11:52 +010038 dto.setStatus(group.getStatus());
margaretha0b63de42017-12-20 18:48:09 +010039 dto.setOwner(group.getCreatedBy());
margaretha45667922018-01-25 21:23:03 +010040 dto.setUserMemberStatus(userMemberStatus);
margaretha0b63de42017-12-20 18:48:09 +010041
margaretha18533fd2018-03-28 16:01:06 +020042 if (roleSet != null) {
margaretha57103a02024-07-17 12:39:50 +020043 dto.setUserRoles(convertRoleToPredefinedRoles(roleSet));
margaretha6f288372018-03-08 18:35:23 +010044 }
margaretha6f288372018-03-08 18:35:23 +010045
margaretha0b63de42017-12-20 18:48:09 +010046 if (members != null) {
margaretha35e1ca22023-11-16 22:00:01 +010047 ArrayList<UserGroupMemberDto> memberDtos = new ArrayList<>(
48 members.size());
margaretha0b63de42017-12-20 18:48:09 +010049 for (UserGroupMember member : members) {
50
51 UserGroupMemberDto memberDto = new UserGroupMemberDto();
52 memberDto.setUserId(member.getUserId());
53 memberDto.setStatus(member.getStatus());
margaretha18533fd2018-03-28 16:01:06 +020054 memberDto.setRoles(
margaretha57103a02024-07-17 12:39:50 +020055 convertRoleToPredefinedRoles(member.getRoles()));
margaretha0b63de42017-12-20 18:48:09 +010056 memberDtos.add(memberDto);
57 }
58 dto.setMembers(memberDtos);
59 }
60 else {
61 dto.setMembers(new ArrayList<UserGroupMemberDto>());
62 }
63
64 return dto;
65 }
66
margaretha57103a02024-07-17 12:39:50 +020067 private List<PredefinedRole> convertRoleToPredefinedRoles (Set<Role> roleSet) {
68 List<PredefinedRole> roles = new ArrayList<>(roleSet.size());
margaretha18533fd2018-03-28 16:01:06 +020069 for (Role r : roleSet) {
70 roles.add(r.getName());
71 }
72 Collections.sort(roles);
73 return roles;
74 }
margaretha0b63de42017-12-20 18:48:09 +010075}