package com.sap.runlet.abstractinterpreter.util; import java.util.Date; /** * A date subclass that uses nanosecond resolution for the internal timestamp so as * to provide better comparison resolution than {@link java.util.Date}. * * @author Axel Uhl (D043530) */ public class NanoDate extends Date { private static final long serialVersionUID = -2683539606714238004L; private long nanos; public NanoDate() { super(); this.nanos = System.nanoTime(); } public NanoDate(long nanoTimestamp) { this.nanos = nanoTimestamp; setTime(0); } @Override public boolean before(Date date) { if (date instanceof NanoDate) { return getNanos() < ((NanoDate) date).getNanos(); } else { return super.before(date); } } @Override public boolean after(Date date) { if (date instanceof NanoDate) { return getNanos() > ((NanoDate) date).getNanos(); } else { return super.after(date); } } @Override public boolean equals(Object date) { if (date instanceof NanoDate) { return getNanos() == ((NanoDate) date).getNanos(); } else { return super.equals(date); } } @Override public String toString() { return super.toString()+"@"+nanos; } public long getNanos() { return nanos; } }