package uk.ac.vamsas.client.simpleclient; /** * Element of the VamsasFileWatcherThread event generator chain. * Keep a reference to this element before adding it to the chain * in order to control the generation of events with halt and enable. * * doWatch will do nothing if the element is not enabled. * */ public class SessionFileWatcherElement extends WatcherElement { SessionFile watched=null; /** * create a new, enabled watch element * @param watcher file being watched * @param handler handler to call on state change */ public SessionFileWatcherElement(SessionFile watcher, WatcherCallBack handler) { this(watcher, handler, true); } protected void initWatch() { if (watched==null) return; if (watcher==null || !watcher.getSubject().equals(watched.sessionFile)) watcher=new FileWatcher(watched.sessionFile); else watcher.setState(); } protected void endWatch() { // leaves watcher in state its in. } /** * new watcher with flag to initially skip watching this sessionfile * @param watcher * @param handler * @param enableWatching */ public SessionFileWatcherElement(SessionFile watcher, WatcherCallBack handler, boolean enableWatching) { super(handler); this.watched = watcher; if (enableWatching) enableWatch(); else haltWatch(); } /** * @return the watched */ public SessionFile getWatched() { return watched; } protected String getSubject() { return watched.sessionFile.toString(); } }