package gov.nysenate.openleg.model.agenda;
import com.google.common.collect.ComparisonChain;
import gov.nysenate.openleg.model.entity.CommitteeId;
import java.io.Serializable;
import java.util.Objects;
/**
* Identifies a specific committee within an agenda.
*/
public class CommitteeAgendaId implements Serializable, Comparable<CommitteeAgendaId>
{
private static final long serialVersionUID = 6484855429442267908L;
private AgendaId agendaId;
private CommitteeId committeeId;
/** --- Constructors --- */
public CommitteeAgendaId(AgendaId agendaId, CommitteeId committeeId) {
this.agendaId = agendaId;
this.committeeId = committeeId;
}
@Override
public String toString() {
return agendaId + "-" + committeeId;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
final CommitteeAgendaId other = (CommitteeAgendaId) obj;
return Objects.equals(this.agendaId, other.agendaId) && Objects.equals(this.committeeId, other.committeeId);
}
@Override
public int hashCode() {
return Objects.hash(agendaId, committeeId);
}
@Override
public int compareTo(CommitteeAgendaId o) {
return ComparisonChain.start()
.compare(this.agendaId, o.agendaId)
.compare(this.committeeId, o.committeeId)
.result();
}
/** --- Basic Getters/Setters --- */
public AgendaId getAgendaId() {
return agendaId;
}
public CommitteeId getCommitteeId() {
return committeeId;
}
}