package votorola.a.diff.harvest; import java.util.Date; import votorola.g.lang.ThreadSafe; import votorola.g.lang.Warning; /** * Final class to represent points in the archive. This is not necessary generic * enough, so it is not a stable API yet and only used by * {@linkplain PipermailHarvester}. * */ @Warning("non-API") @ThreadSafe final public class Marker implements Comparable { private final String path; private final Date date; /** * Use factories. */ private Marker(final String path, final Date date) { this.path = path; this.date = date; } /** * Construct a new marker. * * @param path * @param date */ @Warning("non-API") public static Marker create(final String path, final Date date) { return new Marker(path, date); } /** * */ @Warning("non-API") public static Marker dummy() { return dummy; } private static Marker dummy = new Marker("", new Date(0)); public String path() { return path; } public Date date() { return date; } /** * If both date and marker are equal, this returns true. * * @return equality */ @Override public boolean equals(final Object o) { if (this == o) { return true; } return (o instanceof Marker) && ((Marker) o).path.equals(path) && ((Marker) o).date.equals(date); } /** * Obey equals contract. */ @Override public int hashCode() { return path.hashCode() * 37 + date.hashCode(); } /** * Compare through date. */ public int compareTo(Marker m) { return m.date.compareTo(date); } }