blob: 3ffa646bbabdaf9a5544b0dee833477be1f10447 [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,
margarethaeb328d72024-08-16 11:11:44 +020030 List<UserGroupMember> members, Set<Role> roleSet) {
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
margaretha18533fd2018-03-28 16:01:06 +020039 if (roleSet != null) {
margaretha2b533302024-07-31 13:49:15 +020040 dto.setUserPrivileges(createPrivilegeList(roleSet));
margaretha6f288372018-03-08 18:35:23 +010041 }
margaretha6f288372018-03-08 18:35:23 +010042
margaretha0b63de42017-12-20 18:48:09 +010043 if (members != null) {
margaretha35e1ca22023-11-16 22:00:01 +010044 ArrayList<UserGroupMemberDto> memberDtos = new ArrayList<>(
45 members.size());
margaretha0b63de42017-12-20 18:48:09 +010046 for (UserGroupMember member : members) {
47
48 UserGroupMemberDto memberDto = new UserGroupMemberDto();
49 memberDto.setUserId(member.getUserId());
margaretha2b533302024-07-31 13:49:15 +020050 memberDto.setPrivileges(createPrivilegeList(member.getRoles()));
margaretha0b63de42017-12-20 18:48:09 +010051 memberDtos.add(memberDto);
52 }
53 dto.setMembers(memberDtos);
54 }
55 else {
56 dto.setMembers(new ArrayList<UserGroupMemberDto>());
57 }
58
59 return dto;
60 }
61
margaretha2b533302024-07-31 13:49:15 +020062 private List<PrivilegeType> createPrivilegeList (Set<Role> roles) {
63 List<PrivilegeType> privileges = new ArrayList<>(roles.size());
64 for (Role r : roles) {
65 privileges.add(r.getPrivilege());
margaretha18533fd2018-03-28 16:01:06 +020066 }
margaretha2b533302024-07-31 13:49:15 +020067 Collections.sort(privileges);
68 return privileges;
margaretha18533fd2018-03-28 16:01:06 +020069 }
margaretha0b63de42017-12-20 18:48:09 +010070}