restructuring into packages.
[utils] / crawler / kiss / src / org / wamblee / crawler / kiss / guide / Time.java
diff --git a/crawler/kiss/src/org/wamblee/crawler/kiss/guide/Time.java b/crawler/kiss/src/org/wamblee/crawler/kiss/guide/Time.java
new file mode 100644 (file)
index 0000000..de1065c
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2005 the original author or authors.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.wamblee.crawler.kiss.guide;
+
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+
+/**
+ * TIme at which a program starts or ends.
+ */
+public class Time implements Comparable {
+
+    /**
+     * Number of seconds per minute.
+     */
+    private static final double SECONDS_PER_MINUTE = 60.0;
+
+    /**
+     * Hour of the time.
+     */
+    private int _hour;
+
+    /**
+     * Minute of the hour.
+     */
+    private int _minute;
+
+    /**
+     * Constructs the time.
+     * 
+     * @param aHour
+     *            Hour.
+     * @param aMinute
+     *            Minute.
+     */
+    public Time(int aHour, int aMinute) {
+        _hour = aHour;
+        _minute = aMinute;
+    }
+
+    /**
+     * Gets the hour.
+     * 
+     * @return Hour.
+     */
+    public int getHour() {
+        return _hour;
+    }
+
+    /**
+     * Gets te minute.
+     * 
+     * @return Minute.
+     */
+    public int getMinute() {
+        return _minute;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        NumberFormat format = new DecimalFormat("00");
+        return format.format(_hour) + ":" + format.format(_minute);
+    }
+
+    /**
+     * Convert time to floating point value. Useful for comparing two times.
+     * 
+     * @return Converted value.
+     */
+    float asFloat() {
+        return (float) _hour + (float) _minute / (float) SECONDS_PER_MINUTE;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if ( !(obj instanceof Time )) { 
+            return false; 
+        }
+        return toString().equals(obj.toString());
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Comparable#compareTo(T)
+     */
+    public int compareTo(Object o) {
+        if ( !(o instanceof Time)) { 
+            throw new RuntimeException("object not an instance of Time"); 
+        }
+        Time time = (Time)o; 
+        return new Float(asFloat()).compareTo(new Float(time.asFloat()));
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        return toString().hashCode();
+    }
+}