package gov.nysenate.openleg.model.bill; import gov.nysenate.openleg.model.entity.SessionMember; import java.io.Serializable; import java.util.Objects; /** * Represents the bill's sponsor. Typically this would just be a reference to a Member * but there are special cases where the bill is sponsored by the RULES committee or * it's a budget bill and has no sponsor. */ public class BillSponsor implements Serializable { private static final long serialVersionUID = -9140631420743063575L; /** Typically a bill will have a single member that sponsored it. */ private SessionMember member; /** Indicates if bill is a budget bill (no member). */ private boolean budget = false; /** Indicates if bill is introduced through RULES. (no member). */ private boolean rules = false; /** --- Constructors --- */ public BillSponsor() {} public BillSponsor(SessionMember member) { this.member = member; } /** --- Functional Getters/Setters --- */ public boolean hasMember() { return (member != null); } /** --- Overrides --- */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; final BillSponsor other = (BillSponsor) obj; return Objects.equals(this.member, other.member) && Objects.equals(this.budget, other.budget) && Objects.equals(this.rules, other.rules); } @Override public int hashCode() { return Objects.hash(member, budget, rules); } @Override public String toString() { return (((rules) ? "RULES " : "") + ((budget) ? "BUDGET BILL " : "") + ((hasMember()) ? ((rules) ? "(" + member.getLbdcShortName() + ")" : member.getLbdcShortName()) : "") ).trim(); } /** --- Basic Getters/Setters --- */ public SessionMember getMember() { return member; } public void setMember(SessionMember member) { this.member = member; } public boolean isBudget() { return budget; } public void setBudget(boolean budget) { this.budget = budget; } public boolean isRules() { return rules; } public void setRules(boolean rules) { this.rules = rules; } }