protected static synchronized String add(Region reg, ObserverCallBack obs, ObserveEvent.Type type, Object target) { String name; long now = new Date().getTime(); while (now <= lastName) { now++; } lastName = now; name = "" + now; observers.put(name, reg); reg.getObserver().addObserver(target, (ObserverCallBack) obs, name, type); return name; }
/** * @return the number how often this event has already been triggered until now */ public int getCount() { return region.getObserver().getCount(name); }
protected static void setActive(String name, boolean state) { if (observers.containsKey(name)) { observers.get(name).getObserver().setActive(name, state); } }
/** * tell the observer to repeat this event's observe action after given time in secs * after returning from this handler (APPEAR, VANISH) * @param secs seconds */ public void repeat(long secs) { region.getObserver().repeat(name, secs); }
/** * are their any happened events for this region? * * @param reg * @return true if yes */ public static boolean hasEvents(Region reg) { for (String name : reg.getObserver().getNames()) { if (events.containsKey(name)) { return true; } } return false; }
/** * return the events for that region <br> * events are removed from the list * * @param reg * @return the array of events or size 0 array if none */ public static ObserveEvent[] getEvents(Region reg) { List<ObserveEvent> evts = new ArrayList<ObserveEvent>(); ObserveEvent evt; for (String name : reg.getObserver().getNames()) { evt = events.get(name); if (evt != null) { evts.add(evt); } events.remove(name); } return evts.toArray(new ObserveEvent[0]); }
protected static void addRunningObserver(Region r) { if (shouldStopOnFirstEvent) { shouldStopOnFirstEvent = false; r.getObserver().setStopOnFirstEvent(); } runningObservers.add(r); log(lvl,"add observer: now running %d observer(s)", runningObservers.size()); }
/** * stop and remove all observers registered for this region from the list <br> * events for those observers are removed as well * @param reg */ public static void remove(Region reg) { for (String name : reg.getObserver().getNames()) { remove(name); } }