package gov.nysenate.openleg.client.view.entity;
import com.google.common.collect.TreeMultimap;
import gov.nysenate.openleg.model.base.SessionYear;
import gov.nysenate.openleg.model.entity.FullMember;
import gov.nysenate.openleg.model.entity.SessionMember;
import java.util.*;
import java.util.stream.Collectors;
public class FullMemberView extends ExtendedMemberView {
protected Map<Integer, List<SimpleMemberView>> sessionShortNameMap;
public FullMemberView(FullMember member) {
super(member.getLatestSessionMember().orElse(null));
this.sessionShortNameMap = member.getSessionMemberMap().keySet().stream()
.collect(Collectors.toMap(SessionYear::getYear,
session -> member.getSessionMemberMap().get(session).stream()
.map(SimpleMemberView::new)
.collect(Collectors.toList())));
}
/**
* This constructor is used for unverified session members, which will only have a single session member, member and person
* @param member Member
*/
public FullMemberView(SessionMember member) {
super(member);
this.sessionShortNameMap = new HashMap<>();
if (member != null && member.getSessionYear() != null) {
this.sessionShortNameMap.put(member.getSessionYear().getYear(),
Collections.singletonList(new SimpleMemberView(member)));
}
}
public FullMemberView(Collection<SessionMember> members) {
super(members.stream().max(SessionMember::compareTo).orElse(null));
this.sessionShortNameMap = members.stream()
.sorted()
.map(SimpleMemberView::new)
.collect(Collectors.groupingBy(SimpleMemberView::getSessionYear));
}
public Map<Integer, List<SimpleMemberView>> getSessionShortNameMap() {
return sessionShortNameMap;
}
@Override
public String getViewType() {
return "member-sessions";
}
}