package gov.nysenate.openleg.model.agenda;
import com.google.common.base.Objects;
import com.google.common.collect.ComparisonChain;
import gov.nysenate.openleg.model.base.Version;
import gov.nysenate.openleg.model.entity.CommitteeId;
import java.io.Serializable;
public class CommitteeAgendaAddendumId extends CommitteeAgendaId implements Serializable {
private static final long serialVersionUID = -2042033194755249828L;
protected Version addendum;
public CommitteeAgendaAddendumId(AgendaId agendaId, CommitteeId committeeId, Version addendum) {
super(agendaId, committeeId);
this.addendum = addendum;
}
/** --- Overridden Methods --- */
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
CommitteeAgendaAddendumId that = (CommitteeAgendaAddendumId) o;
return Objects.equal(addendum, that.addendum);
}
@Override
public int hashCode() {
return Objects.hashCode(super.hashCode(), addendum);
}
@Override
public String toString() {
return super.toString() + "-" + addendum.name();
}
@Override
public int compareTo(CommitteeAgendaId o) {
int superResult = super.compareTo(o);
if (superResult == 0 && o instanceof CommitteeAgendaAddendumId) {
return ComparisonChain.start()
.compare(this.addendum, ((CommitteeAgendaAddendumId) o).addendum)
.result();
}
return superResult;
}
/** --- Getters --- */
public Version getAddendum() {
return addendum;
}
}