blob: 39787994c09791e2878c2325c42e136f752af323 [file] [log] [blame]
package de.ids_mannheim.korap.dto.converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.springframework.stereotype.Component;
import de.ids_mannheim.korap.constant.GroupMemberStatus;
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;
import edu.emory.mathcs.backport.java.util.Collections;
/** 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, GroupMemberStatus userMemberStatus,
Set<Role> roleSet) {
UserGroupDto dto = new UserGroupDto();
dto.setId(group.getId());
dto.setName(group.getName());
dto.setStatus(group.getStatus());
dto.setOwner(group.getCreatedBy());
dto.setUserMemberStatus(userMemberStatus);
if (roleSet != null) {
dto.setUserRoles(convertRoleSetToStringList(roleSet));
}
if (members != null) {
ArrayList<UserGroupMemberDto> memberDtos =
new ArrayList<>(members.size());
for (UserGroupMember member : members) {
UserGroupMemberDto memberDto = new UserGroupMemberDto();
memberDto.setUserId(member.getUserId());
memberDto.setStatus(member.getStatus());
memberDto.setRoles(
convertRoleSetToStringList(member.getRoles()));
memberDtos.add(memberDto);
}
dto.setMembers(memberDtos);
}
else {
dto.setMembers(new ArrayList<UserGroupMemberDto>());
}
return dto;
}
private List<String> convertRoleSetToStringList (Set<Role> roleSet) {
List<String> roles = new ArrayList<>(roleSet.size());
for (Role r : roleSet) {
roles.add(r.getName());
}
Collections.sort(roles);
return roles;
}
}