jmri
Class AbstractSensorManager

java.lang.Object
  extended by jmri.AbstractManager
      extended by jmri.AbstractSensorManager
All Implemented Interfaces:
PropertyChangeListener, EventListener, Manager, SensorManager
Direct Known Subclasses:
AcelaSensorManager, InternalSensorManager, LnSensorManager, NceSensorManager, RpsSensorManager, SerialSensorManager, SerialSensorManager, SerialSensorManager, SerialSensorManager, SerialSensorManager, SerialSensorManager, XNetSensorManager

public abstract class AbstractSensorManager
extends AbstractManager
implements SensorManager

Abstract base implementation of the SensorManager interface.

Author:
Bob Jacobsen Copyright (C) 2001, 2003

Field Summary
 
Fields inherited from class jmri.AbstractManager
_tsys, _tuser
 
Constructor Summary
AbstractSensorManager()
           
 
Method Summary
protected abstract  Sensor createNewSensor(String systemName, String userName)
          Internal method to invoke the factory, after all the logic for returning an existing method has been invoked.
 Sensor getBySystemName(String key)
           
 Sensor getByUserName(String key)
           
 Sensor getSensor(String name)
          Locate via user name, then system name if needed.
 Sensor newSensor(String sysName, String userName)
          Return an instance with the specified system and user names.
protected  String normalizeSystemName(String sysName)
           
 Sensor provideSensor(String name)
          Locate via user name, then system name if needed.
 char typeLetter()
           
 void updateAll()
          Requests status of all layout sensors under this Sensor Manager.
 
Methods inherited from class jmri.AbstractManager
addPropertyChangeListener, deregister, dispose, firePropertyChange, getInstanceBySystemName, getInstanceByUserName, getSystemNameList, makeSystemName, propertyChange, register, removePropertyChangeListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface jmri.SensorManager
dispose, getSystemNameList
 
Methods inherited from interface jmri.Manager
addPropertyChangeListener, deregister, makeSystemName, register, removePropertyChangeListener, systemLetter
 

Constructor Detail

AbstractSensorManager

public AbstractSensorManager()
Method Detail

typeLetter

public char typeLetter()
Specified by:
typeLetter in interface Manager
Returns:
The type letter for a specific implementation

provideSensor

public Sensor provideSensor(String name)
Description copied from interface: SensorManager
Locate via user name, then system name if needed. If that fails, create a new sensor: If the name is a valid system name, it will be used for the new sensor. Otherwise, the makeSystemName method will attempt to turn it into a valid system name.

Specified by:
provideSensor in interface SensorManager
Returns:
Never null under normal circumstances

getSensor

public Sensor getSensor(String name)
Description copied from interface: SensorManager
Locate via user name, then system name if needed. Does not create a new one if nothing found

Specified by:
getSensor in interface SensorManager
Returns:
null if no match found

getBySystemName

public Sensor getBySystemName(String key)
Specified by:
getBySystemName in interface SensorManager

getByUserName

public Sensor getByUserName(String key)
Specified by:
getByUserName in interface SensorManager

normalizeSystemName

protected String normalizeSystemName(String sysName)

newSensor

public Sensor newSensor(String sysName,
                        String userName)
Description copied from interface: SensorManager
Return an instance with the specified system and user names. Note that two calls with the same arguments will get the same instance; there is only one Sensor object representing a given physical turnout and therefore only one with a specific system or user name.

This will always return a valid object reference; a new object will be created if necessary. In that case:

Note that it is possible to make an inconsistent request if both addresses are provided, but the given values are associated with different objects. This is a problem, and we don't have a good solution except to issue warnings. This will mostly happen if you're creating Turnouts when you should be looking them up.

Specified by:
newSensor in interface SensorManager
Returns:
requested Sensor object (never null)

createNewSensor

protected abstract Sensor createNewSensor(String systemName,
                                          String userName)
Internal method to invoke the factory, after all the logic for returning an existing method has been invoked.

Returns:
new null

updateAll

public void updateAll()
Requests status of all layout sensors under this Sensor Manager. This method may be invoked whenever the status of sensors needs to be updated from the layout, for example, when an XML configuration file is read in. Note that this null implementation only needs be implemented in system-specific Sensor Managers where readout of sensor status from the layout is possible.

Specified by:
updateAll in interface SensorManager


Copyright © 1997 - 2008 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: SourceForge_Logo