*/
public class Time implements Comparable {
+ /**
+ *
+ */
+ private static final int HOURS_PER_DAY = 24;
+
+ /**
+ *
+ */
+ private static final int EARLY_HOUR = 3;
+
/**
* Number of seconds per minute.
*/
* @return Converted value.
*/
float asFloat() {
- return (float) _hour + (float) _minute / (float) SECONDS_PER_MINUTE;
+ int hour = _hour;
+ // Hack to make sure that programs appearing shortly after midnight are sorted
+ // after those running during the day.
+ if ( hour <= EARLY_HOUR ) {
+ hour += HOURS_PER_DAY;
+ }
+ return (float) hour + (float) _minute / (float) SECONDS_PER_MINUTE;
}
/*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
- public boolean equals(Object obj) {
- if ( !(obj instanceof Time )) {
- return false;
+ public boolean equals(Object aObject) {
+ if (!(aObject instanceof Time)) {
+ return false;
}
- return toString().equals(obj.toString());
+ return toString().equals(aObject.toString());
}
-
- /* (non-Javadoc)
- * @see java.lang.Comparable#compareTo(T)
+
+ /**
+ * Compares based on time.
+ * @param aObject Time object to compare to.
+ * @return See {@link Comparable#compareTo(T)}.
*/
- public int compareTo(Object o) {
- if ( !(o instanceof Time)) {
- throw new RuntimeException("object not an instance of Time");
+ public int compareTo(Object aObject) {
+ if (!(aObject instanceof Time)) {
+ throw new IllegalArgumentException("object not an instance of Time");
}
- Time time = (Time)o;
+ Time time = (Time) aObject;
return new Float(asFloat()).compareTo(new Float(time.asFloat()));
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see java.lang.Object#hashCode()
*/
@Override