jmri.implementation
Class AbstractManager

java.lang.Object
  extended by jmri.implementation.AbstractManager
All Implemented Interfaces:
PropertyChangeListener, EventListener, Manager
Direct Known Subclasses:
AbstractAudioManager, AbstractLightManager, AbstractMemoryManager, AbstractReporterManager, AbstractSensorManager, AbstractSignalHeadManager, AbstractTurnoutManager, BlockManager, DefaultCatalogTreeManager, DefaultConditionalManager, DefaultLogixManager, DefaultRouteManager, LayoutBlockManager, OBlockManager, SectionManager, TransitManager, WarrantManager

public abstract class AbstractManager
extends Object
implements Manager, PropertyChangeListener

Abstract partial implementation for all Manager-type classes.

Note that this does not enforce any particular system naming convention at the present time. They're just names...

Author:
Bob Jacobsen Copyright (C) 2003

Field Summary
protected  Hashtable<String,NamedBean> _tsys
           
protected  Hashtable<String,NamedBean> _tuser
           
 
Constructor Summary
AbstractManager()
           
 
Method Summary
 void addPropertyChangeListener(PropertyChangeListener l)
          At a minimum, subclasses must notify of changes to the list of available NamedBeans; they may have other properties that will also notify.
 void deregister(NamedBean s)
          Forget a NamedBean Object created outside the manager.
 void dispose()
          Free resources when no longer used.
protected  void firePropertyChange(String p, Object old, Object n)
           
protected  Object getInstanceBySystemName(String systemName)
          Locate an instance based on a system name.
protected  Object getInstanceByUserName(String userName)
          Locate an instance based on a user name.
 String[] getSystemNameArray()
           
 List<String> getSystemNameList()
           
 String makeSystemName(String s)
           
 void propertyChange(PropertyChangeEvent e)
          The PropertyChangeListener interface in this class is intended to keep track of user name changes to individual NamedBeans.
 void register(NamedBean s)
          Remember a NamedBean Object created outside the manager.
protected  void registerSelf()
          By default, register this manager to store as configuration information.
 void removePropertyChangeListener(PropertyChangeListener l)
          At a minimum, subclasses must notify of changes to the list of available NamedBeans; they may have other properties that will also notify.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface jmri.Manager
systemLetter, typeLetter
 

Field Detail

_tsys

protected Hashtable<String,NamedBean> _tsys

_tuser

protected Hashtable<String,NamedBean> _tuser
Constructor Detail

AbstractManager

public AbstractManager()
Method Detail

registerSelf

protected void registerSelf()
By default, register this manager to store as configuration information. Override to change that.


makeSystemName

public String makeSystemName(String s)
Specified by:
makeSystemName in interface Manager
Returns:
A system name from a user input, typically a number.

dispose

public void dispose()
Description copied from interface: Manager
Free resources when no longer used. Specifically, remove all references to and from this object, so it can be garbage-collected.

Specified by:
dispose in interface Manager

getInstanceBySystemName

protected Object getInstanceBySystemName(String systemName)
Locate an instance based on a system name. Returns null if no instance already exists. This is intended to be used by concrete classes to implement their getBySystemName method. We can't call it that here because Java doesn't have polymorphic return types.

Returns:
requested Turnout object or null if none exists

getInstanceByUserName

protected Object getInstanceByUserName(String userName)
Locate an instance based on a user name. Returns null if no instance already exists. This is intended to be used by concrete classes to implement their getBySystemName method. We cant call it that here because Java doesn't have polymorphic return types.

Returns:
requested Turnout object or null if none exists

register

public void register(NamedBean s)
Remember a NamedBean Object created outside the manager.

The non-system-specific SignalHeadManagers use this method extensively.

Specified by:
register in interface Manager

deregister

public void deregister(NamedBean s)
Forget a NamedBean Object created outside the manager.

The non-system-specific RouteManager uses this method.

Specified by:
deregister in interface Manager

propertyChange

public void propertyChange(PropertyChangeEvent e)
The PropertyChangeListener interface in this class is intended to keep track of user name changes to individual NamedBeans. It is not completely implemented yet. In particular, listeners are not added to newly registered objects.

Specified by:
propertyChange in interface PropertyChangeListener

getSystemNameArray

public String[] getSystemNameArray()
Specified by:
getSystemNameArray in interface Manager

getSystemNameList

public List<String> getSystemNameList()
Specified by:
getSystemNameList in interface Manager

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener l)
Description copied from interface: Manager
At a minimum, subclasses must notify of changes to the list of available NamedBeans; they may have other properties that will also notify.

Specified by:
addPropertyChangeListener in interface Manager

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener l)
Description copied from interface: Manager
At a minimum, subclasses must notify of changes to the list of available NamedBeans; they may have other properties that will also notify.

Specified by:
removePropertyChangeListener in interface Manager

firePropertyChange

protected void firePropertyChange(String p,
                                  Object old,
                                  Object n)


Copyright © 1997 - 2009 JMRI Community.
JMRI, DecoderPro, PanelPro, SoundPro, DispatcherPro and associated logos are our trademarks.

Additional information on copyright, trademarks and licenses is linked here.
Site hosted by: Get JMRI Model Railroad Interface at SourceForge.net. Fast, secure and Free Open Source software downloads