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.time<time;
}
public boolean before(RoughTime t)
{
return t.time>time;
}
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);
}
}