package gov.nysenate.openleg.client.view.bill; import gov.nysenate.openleg.client.view.base.ListView; import gov.nysenate.openleg.client.view.base.MapView; import gov.nysenate.openleg.client.view.base.ViewObject; import gov.nysenate.openleg.client.view.committee.CommitteeIdView; import gov.nysenate.openleg.client.view.entity.MemberView; import gov.nysenate.openleg.model.bill.BillVote; import gov.nysenate.openleg.model.bill.BillVoteCode; import gov.nysenate.openleg.model.bill.BillVoteType; import java.time.LocalDate; import java.util.stream.Collectors; public class BillVoteView implements ViewObject { protected String version; protected BillVoteType voteType; protected LocalDate voteDate; protected CommitteeIdView committee; protected MapView<String, ListView<MemberView>> memberVotes; public BillVoteView(BillVote billVote) { if(billVote != null) { this.version = new BillIdView(billVote.getBillId()).getVersion(); this.voteType = billVote.getVoteType(); this.voteDate = billVote.getVoteDate(); this.committee = billVote.getCommitteeId() != null ? new CommitteeIdView(billVote.getCommitteeId()) : null; this.memberVotes = MapView.of( billVote.getMemberVotes().keySet().stream() .collect(Collectors.toMap(BillVoteCode::name, voteCode -> ListView.of(billVote.getMembersByVote(voteCode).stream() .map(m -> new MemberView(m)) .sorted((o1, o2) -> o1.getShortName().compareTo(o2.getShortName())) .collect(Collectors.toList())))) ); } } public String getVersion() { return version; } public BillVoteType getVoteType() { return voteType; } public LocalDate getVoteDate() { return voteDate; } public CommitteeIdView getCommittee() { return committee; } public MapView<String, ListView<MemberView>> getMemberVotes() { return memberVotes; } @Override public String getViewType() { return "bill-vote"; } }