1 /* 2 Copyright (C) 2007 Dirk Huenniger 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with this library; if not, write to the Free Software 16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 package org.indi.reactor; 19 20 import java.util.Date; 21 22 /** 23 * A timer class. It includes a timer method to be called when the timer expires 24 * as well as the expiration Date and supports an ordering of objects of this 25 * class with respect to the expiration date via implementation of the 26 * comparable interface. 27 * 28 * @author Dirk Hünniger 29 * 30 */ 31 public class TimerHandler implements Comparable<TimerHandler>, TimerCallback { 32 /** 33 * The expiration date of the timer. 34 */ 35 private final Date expirationDate; 36 37 /** 38 * Class constructor 39 * 40 * @param expirationDate 41 * the expiration date of the timer (the Date when the 42 * onTimer method is to be called by the reactor) 43 */ 44 public TimerHandler(Date expirationDate) { 45 this.expirationDate = expirationDate; 46 } 47 48 /** 49 * Callback method called by the reactor when the timer expires. 50 */ 51 public void onTimer() { 52 53 } 54 55 /** 56 * 57 * @return The expiration date of the timer 58 */ 59 public Date getExpirationDate() { 60 return this.expirationDate; 61 } 62 63 /** 64 * Equals method overloaded as part of the contract of the comparable 65 * interface to allow an ordering of TimerHandler objects with respect to 66 * expiration date 67 */ 68 @Override 69 public boolean equals(Object o) { 70 return (o == null) ? false 71 : (o instanceof TimerHandler) ? (0 == compareTo((TimerHandler) o)) 72 : false; 73 } 74 75 /** 76 * Method implemented as part of the comparable interface to allow an 77 * ordering of TimerHandler objects with respect to the expiration date. 78 */ 79 public int compareTo(TimerHandler th) { 80 return this.expirationDate.compareTo(th.getExpirationDate()); 81 } 82 }