frysk.gui.monitor.observers
Class ObserverManager

java.lang.Object
  extended by frysk.gui.monitor.observers.ObserverManager

public class ObserverManager
extends Object

Only once instance. The purpose of the ObserverManager is to make transparent to the client wether it is using a custom or built in observer. Keeps a list of available observers (custom/built in) Manages observer creation through using prototypes. For known static observers the ObserverManager is responsible for instantiating and adding their prototypes.


Field Summary
private  ObservableLinkedList baseObservers
           
private  ObservableLinkedList defaultObservers
           
private  Logger errorLog
           
private  UniqueHashMap nameHash
          A table that hashes observer names to their prototypes.
private static File OBSERVERS_DIR
           
private  File observersDir
           
 ProgramObserver programObserver
           
private  ObservableLinkedList taskObservers
          a list containing a prototype of every available observer.
static ObserverManager theManager
           
 
Constructor Summary
ObserverManager(File observersDir)
           
 
Method Summary
 void addBaseObserverPrototype(ObserverRoot observer)
           
 void addTaskObserverPrototype(ObserverRoot observer)
          add the given prototype to the list of available observers.
 ObservableLinkedList getBaseObservers()
           
 ObserverRoot getBlankObserver()
           
 ObservableLinkedList getDefaultObservers()
           
 TaskObserverRoot getObserverByName(String argument)
           
 ObserverRoot getObserverCopy(ObserverRoot prototype)
          Returns a copy of the prototype given.
 ObservableLinkedList getTaskObservers()
          Returns the list of taskObservers available to the @link ObserverManager
 void init()
           
private  void initTaskObservers()
          Instantiates each one of the static task observers and adds it to the list.
private  void loadObservers()
           
 boolean nameIsUsed(String name)
          Checks of the name of the observer is already in use
 void removeTaskObserverPrototype(ObserverRoot observer)
          Remove the given prototype to the list of available observers.
 void save()
           
 void swapTaskObserverPrototype(ObserverRoot toBeRemoved, ObserverRoot toBeAdded)
          Replace the given ObserverRoot with the other ObserverRoot.
 void tryAddTaskObserverPrototype(ObserverRoot observer, boolean defaultObserver)
          Tries to add an observer.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OBSERVERS_DIR

private static final File OBSERVERS_DIR

theManager

public static ObserverManager theManager

nameHash

private UniqueHashMap nameHash
A table that hashes observer names to their prototypes. Also used to make sure observer names are unique.


errorLog

private Logger errorLog

taskObservers

private ObservableLinkedList taskObservers
a list containing a prototype of every available observer.


baseObservers

private ObservableLinkedList baseObservers

defaultObservers

private ObservableLinkedList defaultObservers

programObserver

public ProgramObserver programObserver

observersDir

private File observersDir
Constructor Detail

ObserverManager

public ObserverManager(File observersDir)
Method Detail

init

public void init()

initTaskObservers

private void initTaskObservers()
Instantiates each one of the static task observers and adds it to the list.


getObserverCopy

public ObserverRoot getObserverCopy(ObserverRoot prototype)
Returns a copy of the prototype given. A list of available prototypes can be

Parameters:
prototype - a prototype of the observer to be instantiate.

getTaskObservers

public ObservableLinkedList getTaskObservers()
Returns the list of taskObservers available to the @link ObserverManager

Returns:
an @link ObservableLinkedList of TaskObservers

getBaseObservers

public ObservableLinkedList getBaseObservers()

swapTaskObserverPrototype

public void swapTaskObserverPrototype(ObserverRoot toBeRemoved,
                                      ObserverRoot toBeAdded)
Replace the given ObserverRoot with the other ObserverRoot.

Parameters:
toBeRemoved - the observer that will be removed and replaced.
toBeAdded - the observer that will be added in place of the removed observer

getObserverByName

public TaskObserverRoot getObserverByName(String argument)

addTaskObserverPrototype

public void addTaskObserverPrototype(ObserverRoot observer)
add the given prototype to the list of available observers.

Parameters:
observer - the observer prototype to be added.

tryAddTaskObserverPrototype

public void tryAddTaskObserverPrototype(ObserverRoot observer,
                                        boolean defaultObserver)
Tries to add an observer. If there is another version with the same name it assumes the other version is more up to date and doesnt add.

Parameters:
observer -

nameIsUsed

public boolean nameIsUsed(String name)
Checks of the name of the observer is already in use

Parameters:
name - name
Returns:

addBaseObserverPrototype

public void addBaseObserverPrototype(ObserverRoot observer)

removeTaskObserverPrototype

public void removeTaskObserverPrototype(ObserverRoot observer)
Remove the given prototype to the list of available observers.

Parameters:
observer - the observer prototype to be removed.

getBlankObserver

public ObserverRoot getBlankObserver()

loadObservers

private void loadObservers()

save

public void save()

getDefaultObservers

public ObservableLinkedList getDefaultObservers()