blob: f959264a08f3990258575f4c30834d57401c7ee4 [file] [log] [blame]
package de.ids_mannheim.korap.dto.converter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.springframework.stereotype.Component;
import de.ids_mannheim.korap.constant.PrivilegeType;
import de.ids_mannheim.korap.dto.UserGroupDto;
import de.ids_mannheim.korap.dto.UserGroupMemberDto;
import de.ids_mannheim.korap.entity.Role;
import de.ids_mannheim.korap.entity.UserGroup;
import de.ids_mannheim.korap.entity.UserGroupMember;
/**
* UserGroupConverter manages conversion of {@link UserGroup} objects
* to their data access objects (DTO), e.g. UserGroupDto. DTO
* structure defines controllers output, namely the structure of JSON
* objects in HTTP responses.
*
* @author margaretha
*
*/
@Component
public class UserGroupConverter {
public UserGroupDto createUserGroupDto (UserGroup group,
List<UserGroupMember> members) {
UserGroupDto dto = new UserGroupDto();
dto.setId(group.getId());
dto.setName(group.getName());
dto.setDescription(group.getDescription());
dto.setStatus(group.getStatus());
dto.setOwner(group.getCreatedBy());
if (members != null) {
ArrayList<UserGroupMemberDto> memberDtos = new ArrayList<>(
members.size());
for (UserGroupMember member : members) {
UserGroupMemberDto memberDto = new UserGroupMemberDto();
memberDto.setUserId(member.getUserId());
memberDto.setRoles(createUniqueRoles(member.getRoles()));
memberDto.setPrivileges(createPrivilegeList(member.getRoles()));
memberDtos.add(memberDto);
}
dto.setMembers(memberDtos);
}
else {
dto.setMembers(new ArrayList<UserGroupMemberDto>());
}
return dto;
}
private Set<String> createUniqueRoles (Set<Role> roles) {
Set<String> uniqueRoles = new HashSet<String>();
for (Role r : roles) {
uniqueRoles.add(r.getName().name());
}
return uniqueRoles;
}
private List<PrivilegeType> createPrivilegeList (Set<Role> roles) {
List<PrivilegeType> privileges = new ArrayList<>(roles.size());
for (Role r : roles) {
privileges.add(r.getPrivilege());
}
Collections.sort(privileges);
return privileges;
}
}