(no commit message)
[utils] / crawler / kiss / src / org / wamblee / crawler / kiss / Time.java
index b2f95f058ce7dd9a261ae644220535677ce409c6..16cae4f08d176ef3628dbf20299b9a65c7757825 100644 (file)
@@ -12,7 +12,7 @@
  * 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;
 
@@ -20,36 +20,105 @@ import java.text.DecimalFormat;
 import java.text.NumberFormat;
 
 /**
- * 
+ * TIme at which a program starts or ends.
  */
-public class Time {
-    
-    private int _hour; 
-    private int _minute; 
-    
-    public Time(int aHour, int aMinute) { 
+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;
     }
-    
-    public int getHour() { 
-        return _hour; 
+
+    /**
+     * Gets the hour.
+     * 
+     * @return Hour.
+     */
+    public int getHour() {
+        return _hour;
     }
-    
-    public int getMinute() { 
-        return _minute; 
+
+    /**
+     * Gets te minute.
+     * 
+     * @return Minute.
+     */
+    public int getMinute() {
+        return _minute;
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see java.lang.Object#toString()
      */
     @Override
     public String toString() {
         NumberFormat format = new DecimalFormat("00");
-        return format.format(_hour) + ":" + format.format(_minute);   
+        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)60.0;    
+        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();
     }
 }