blob: 7fbaa1010448f635b9e9130b1ce977c583cfbd1e [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
margaretha2b533302024-07-31 13:49:15 +020010import de.ids_mannheim.korap.constant.PrivilegeType;
margaretha0b63de42017-12-20 18:48:09 +010011import de.ids_mannheim.korap.dto.UserGroupDto;
12import de.ids_mannheim.korap.dto.UserGroupMemberDto;
13import de.ids_mannheim.korap.entity.Role;
14import de.ids_mannheim.korap.entity.UserGroup;
15import de.ids_mannheim.korap.entity.UserGroupMember;
16
margaretha398f4722019-01-09 19:07:20 +010017/**
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.
margaretha69e8adc2018-03-15 15:14:22 +010022 *
23 * @author margaretha
24 *
25 */
margaretha23aae222017-12-22 15:08:23 +010026@Component
margaretha0b63de42017-12-20 18:48:09 +010027public class UserGroupConverter {
28
29 public UserGroupDto createUserGroupDto (UserGroup group,
margaretha83cdf7f2024-10-23 10:50:29 +020030 List<UserGroupMember> members) {
margaretha0b63de42017-12-20 18:48:09 +010031
32 UserGroupDto dto = new UserGroupDto();
33 dto.setId(group.getId());
34 dto.setName(group.getName());
margarethad8aa1352019-12-19 11:04:41 +010035 dto.setDescription(group.getDescription());
margaretha293ee032018-03-20 20:11:52 +010036 dto.setStatus(group.getStatus());
margaretha0b63de42017-12-20 18:48:09 +010037 dto.setOwner(group.getCreatedBy());
margaretha0b63de42017-12-20 18:48:09 +010038
39 if (members != null) {
margaretha35e1ca22023-11-16 22:00:01 +010040 ArrayList<UserGroupMemberDto> memberDtos = new ArrayList<>(
41 members.size());
margaretha0b63de42017-12-20 18:48:09 +010042 for (UserGroupMember member : members) {
43
44 UserGroupMemberDto memberDto = new UserGroupMemberDto();
45 memberDto.setUserId(member.getUserId());
margaretha2b533302024-07-31 13:49:15 +020046 memberDto.setPrivileges(createPrivilegeList(member.getRoles()));
margaretha0b63de42017-12-20 18:48:09 +010047 memberDtos.add(memberDto);
48 }
49 dto.setMembers(memberDtos);
50 }
51 else {
52 dto.setMembers(new ArrayList<UserGroupMemberDto>());
53 }
54
55 return dto;
56 }
57
margaretha2b533302024-07-31 13:49:15 +020058 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());
margaretha18533fd2018-03-28 16:01:06 +020062 }
margaretha2b533302024-07-31 13:49:15 +020063 Collections.sort(privileges);
64 return privileges;
margaretha18533fd2018-03-28 16:01:06 +020065 }
margaretha0b63de42017-12-20 18:48:09 +010066}