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