package gov.nysenate.openleg.model.entity; import com.google.common.collect.ComparisonChain; import java.io.Serializable; import java.util.Comparator; public class CommitteeMember implements Serializable, Comparable<CommitteeMember> { private static final long serialVersionUID = -3988868068553499472L; /** A number that indicates the position this member should appear in listings. */ protected int sequenceNo; /** The member. */ protected SessionMember member; /** The title of the member, e.g Chairperson, Vice-Chair. */ protected CommitteeMemberTitle title; /** True if the member is part of the current majority */ // TODO Add party data to members before expressing this in the view protected boolean majority; /** --- Overrides --- */ @Override public int compareTo(CommitteeMember o) { return ComparisonChain.start() .compare(this.getSequenceNo(), o.getSequenceNo()) .result(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; CommitteeMember that = (CommitteeMember) o; if (majority != that.majority) return false; //if (sequenceNo != that.sequenceNo) return false; if (!member.equals(that.member)) return false; if (title != that.title) return false; return true; } @Override public int hashCode() { int result = sequenceNo; result = 31 * result + member.hashCode(); result = 31 * result + title.hashCode(); result = 31 * result + (majority ? 1 : 0); return result; } /** --- Constructors --- */ public CommitteeMember() {} public CommitteeMember(CommitteeMember other) { this.sequenceNo = other.sequenceNo; this.member = new SessionMember(other.member); this.title = other.title; this.majority = other.majority; } /** --- Functional Getters/Setters --- */ public static Comparator<CommitteeMember> getComparator() { return (l,r) -> l.compareTo(r); } /** --- Basic Getters/Setters --- */ public int getSequenceNo() { return sequenceNo; } public void setSequenceNo(int sequenceNo) { this.sequenceNo = sequenceNo; } public SessionMember getMember() { return member; } public void setMember(SessionMember member) { this.member = member; } public CommitteeMemberTitle getTitle() { return title; } public void setTitle(CommitteeMemberTitle title) { this.title = title; } public boolean isMajority() { return majority; } public void setMajority(boolean majority) { this.majority = majority; } }