8d70d9f82b6bfb5f38ff8d542b3d4433adc81278
[vamsas.git] / src / uk / ac / vamsas / client / simpleclient / SessionFlagWatcherElement.java
1 package uk.ac.vamsas.client.simpleclient;\r
2 \r
3 \r
4 /**\r
5  * Element of the VamsasFileWatcherThread event generator chain.\r
6  * Keep a reference to this element before adding it to the chain \r
7  * in order to control the generation of events with halt and enable.\r
8  * \r
9  * doWatch will do nothing if the element is not enabled.\r
10  * TODO: TEST THIS CLASS - not yet used in SimpleClient\r
11  */\r
12 public class SessionFlagWatcherElement extends WatcherElement {\r
13   SessionFlagFile watched=null;\r
14   /**\r
15    * create a new, enabled watch element\r
16    * @param watcher file being watched\r
17    * @param handler handler to call on state change\r
18    */\r
19   public SessionFlagWatcherElement(SessionFlagFile watcher, WatcherCallBack handler) {\r
20     this(watcher, handler, true);\r
21   }\r
22   protected void initWatch() {\r
23     if (watched==null)\r
24       return;\r
25     watcher = new FileWatcher(watched.flagFile);\r
26   }\r
27   protected void endWatch() {\r
28     // leaves watcher in state its in.\r
29   }\r
30   /**\r
31    * new watcher with flag to initially skip watching this sessionfile\r
32    * @param watcher\r
33    * @param handler\r
34    * @param enableWatching\r
35    */\r
36   public SessionFlagWatcherElement(SessionFlagFile watcher, WatcherCallBack handler, boolean enableWatching) {\r
37     super(handler);\r
38     this.watched = watcher;\r
39     if (enableWatching)\r
40       enableWatch();\r
41     else\r
42       haltWatch();\r
43   }\r
44   /**\r
45    * @return the watched\r
46    */\r
47   public SessionFlagFile getWatched() {\r
48     return watched;\r
49   }\r
50   protected String getSubject() {\r
51     \r
52     return watched.flagFile.toString();\r
53   }\r
54 }\r