more robustness, now a detailed report is always sent, also if crawling
[utils] / crawler / kiss / src / org / wamblee / crawler / kiss / guide / Time.java
index 52695e109ec1acca802da69e4543a7a343db5fdd..de206f557b5739204acceaec86ed26cd61f03eec 100644 (file)
@@ -24,6 +24,16 @@ import java.text.NumberFormat;
  */
 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.
      */
@@ -87,7 +97,14 @@ public class Time implements Comparable {
      * @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;
     }
 
     /*
@@ -104,13 +121,15 @@ public class Time implements Comparable {
     }
 
     /**
-     * Compares based on time. 
-     * @param aObject Time object to compare to. 
+     * Compares based on time.
+     * 
+     * @param aObject
+     *            Time object to compare to.
      * @return See {@link Comparable#compareTo(T)}.
      */
     public int compareTo(Object aObject) {
         if (!(aObject instanceof Time)) {
-            throw new RuntimeException("object not an instance of Time");
+            throw new IllegalArgumentException("object not an instance of Time");
         }
         Time time = (Time) aObject;
         return new Float(asFloat()).compareTo(new Float(time.asFloat()));