package gov.nysenate.openleg.model.agenda;
import com.google.common.collect.ComparisonChain;
import java.io.Serializable;
import java.util.Objects;
/**
* AgendaId is a simple wrapper used to uniquely identify an Agenda instance.
*/
public class AgendaId implements Serializable, Comparable<AgendaId>
{
private static final long serialVersionUID = -8234649498537551140L;
/** The agenda's calendar number. Starts at 1 at the beginning of each calendar year. */
private long number;
/** The year this agenda was active in. */
private int year;
/** --- Constructors --- */
public AgendaId(Long number, int year) {
this.number = number;
this.year = year;
}
public AgendaId(Integer number, int year) {
this.number = number;
this.year = year;
}
/** --- Overrides --- */
@Override
public String toString() {
return year + "-" + number;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
final AgendaId other = (AgendaId) obj;
return Objects.equals(this.number, other.number) &&
Objects.equals(this.year, other.year);
}
@Override
public int hashCode() {
return Objects.hash(number, year);
}
@Override
public int compareTo(AgendaId o) {
return ComparisonChain.start()
.compare(this.getYear(), o.getYear())
.compare(this.getNumber(), o.getNumber())
.result();
}
/** --- Basic Getters/Setters --- */
public Long getNumber() {
return number;
}
public int getYear() {
return year;
}
}