package timeflow.data.time; import java.util.Calendar; import java.util.Date; public class RoughTime implements Comparable { public static final long UNKNOWN=Long.MIN_VALUE; private TimeUnit units; private long time; public RoughTime(TimeUnit units) { time=UNKNOWN; this.units=units; } public RoughTime(long time, TimeUnit units) { this.time=time; this.units=units; } public boolean isDefined() { return time!=UNKNOWN; } public long getTime() { return time; } public void setTime(long time) { this.time=time; } public Date toDate() { return new Date(time); } public boolean after(RoughTime t) { return t.timetime; } public RoughTime plus(int numUnits) { return plus(units, numUnits); } public RoughTime plus(TimeUnit unit, int times) { RoughTime r=copy(); unit.addTo(r,times); return r; } public String toString() { if (isKnown()) return new Date(time).toString(); return "unknown"; } public boolean isKnown() { return time!=UNKNOWN; } public boolean equals(Object o) { if (!(o instanceof RoughTime)) return false; RoughTime t=(RoughTime)o; return t.units==units && t.time==time; } public RoughTime copy() { RoughTime t=new RoughTime(time, units); return t; } public void setUnits(TimeUnit units) { this.units=units; } public TimeUnit getUnits() { return units; } public String format() { return units.formatFull(time); } public static int compare(RoughTime t1, RoughTime t2) { if (t1==t2) return 0; if (t1==null) return -1; if (t2==null) return 1; long dt= t1.time-t2.time; if (dt==0) return 0; if (dt>0) return 1; return -1; } @Override public int compareTo(Object o) { return compare(this, (RoughTime)o); } }