--- /dev/null
+/*
+ * 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();
+ }
+}