View Javadoc

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 simplifyed version of the TimerHandler class taking a given delay in
24   * miliseconds instead of an expiration Date and a class implementing
25   * TimerCallback interface to be called back after the given delay.
26   * 
27   * @author dirk
28   * 
29   */
30  public class SimpleTimer extends TimerHandler {
31      /**
32       * A class containing the callback method to be called after the given
33       * delay.
34       */
35      private final TimerCallback callback;
36  
37      /**
38       * Class constructor
39       * 
40       * @param callback
41       *                the object containing the callback method to be called
42       *                after the given delay
43       * @param timeout
44       *                the delay to wait before calling the callback method in
45       *                milliseconds.
46       */
47      public SimpleTimer(TimerCallback callback, long timeout) {
48  	super(SimpleTimer.shift(new Date(), timeout));
49  	this.callback = callback;
50      }
51  
52      /**
53       * Shift a given Date object by a certain number of miliseconds
54       * 
55       * @param date
56       *                the date object to be shifted
57       * @param mills
58       *                the number of milliseconds to shift the timout by
59       * @return the shifted Date.
60       */
61      public static Date shift(Date date, long mills) {
62  	date.setTime(date.getTime() + mills);
63  	return date;
64      }
65  
66      /**
67       * Called by the reactor when the delay has passed. Implemented such that
68       * the onTimer method of the TimerCallback passed to the constuctor is
69       * called.
70       */
71      @Override
72      public void onTimer() {
73  	this.callback.onTimer();
74      }
75  }