Package jmri.managers
Class AbstractTurnoutManager
- All Implemented Interfaces:
PropertyChangeListener,VetoableChangeListener,EventListener,PropertyChangeFirer,PropertyChangeProvider,SilenceablePropertyChangeProvider,VetoableChangeFirer,VetoableChangeProvider,Manager<Turnout>,NameIncrementingManager,ProvidingManager<Turnout>,TurnoutManager
- Direct Known Subclasses:
AcelaTurnoutManager,BiDiBTurnoutManager,CbusTurnoutManager,DCCppTurnoutManager,EasyDccTurnoutManager,EcosTurnoutManager,InternalTurnoutManager,IpocsTurnoutManager,JMRIClientTurnoutManager,LnTurnoutManager,MarklinTurnoutManager,MqttTurnoutManager,MrcTurnoutManager,Mx1TurnoutManager,NceTurnoutManager,OlcbTurnoutManager,RaspberryPiTurnoutManager,SerialTurnoutManager,SerialTurnoutManager,SerialTurnoutManager,SerialTurnoutManager,SerialTurnoutManager,SerialTurnoutManager,SerialTurnoutManager,SprogTurnoutManager,SRCPTurnoutManager,TamsTurnoutManager,XBeeTurnoutManager,XNetTurnoutManager,XpaTurnoutManager
public abstract class AbstractTurnoutManager
extends AbstractManager<Turnout>
implements TurnoutManager
Abstract partial implementation of a TurnoutManager.
-
Nested Class Summary
Nested classes/interfaces inherited from interface jmri.Manager
Manager.ManagerDataEvent<E extends NamedBean>, Manager.ManagerDataListener<E extends NamedBean>, Manager.NameValidity -
Field Summary
FieldsFields inherited from class jmri.managers.AbstractManager
_beans, _tsys, _tuser, lastAutoNamedBeanRef, memo, paddedNumber, silenceableProperties, silencedPropertiesFields inherited from class jmri.beans.VetoableChangeSupport
vetoableChangeSupportFields inherited from class jmri.beans.PropertyChangeSupport
propertyChangeSupportFields inherited from interface jmri.Manager
ANALOGIOS, AUDIO, BLOCKBOSS, BLOCKS, CONDITIONALS, CTCDATA, ENTRYEXIT, IDTAGS, LAYOUTBLOCKS, LIGHTS, LOGIXNG_ANALOG_ACTIONS, LOGIXNG_ANALOG_EXPRESSIONS, LOGIXNG_CONDITIONALNGS, LOGIXNG_DIGITAL_ACTIONS, LOGIXNG_DIGITAL_BOOLEAN_ACTIONS, LOGIXNG_DIGITAL_EXPRESSIONS, LOGIXNG_GLOBAL_VARIABLES, LOGIXNG_MODULES, LOGIXNG_STRING_ACTIONS, LOGIXNG_STRING_EXPRESSIONS, LOGIXNG_TABLES, LOGIXNGS, LOGIXS, MEMORIES, METERFRAMES, METERS, OBLOCKS, PANELFILES, PROPERTY_BEANS, PROPERTY_CAN_DELETE, PROPERTY_DISPLAY_LIST_NAME, PROPERTY_DO_DELETE, PROPERTY_DO_NOT_DELETE, PROPERTY_LENGTH, REPORTERS, ROUTES, SECTIONS, SENSORGROUPS, SENSORS, SIGNALGROUPS, SIGNALHEADS, SIGNALMASTLOGICS, SIGNALMASTS, STRINGIOS, TIMEBASE, TRANSITS, TURNOUTS, WARRANTSFields inherited from interface jmri.TurnoutManager
PROPERTY_DEFAULT_CLOSED_SPEED, PROPERTY_DEFAULT_THROWN_SPEED -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintaskControlType(String systemName) Get from the user, the type of output to be used bits to control a turnout.intaskNumControlBits(String systemName) Get from the user, the number of addressed bits used to control a turnout.protected abstract TurnoutcreateNewTurnout(String systemName, String userName) Internal method to invoke the factory, after all the logic for returning an existing Turnout has been invoked.createSystemName(String curAddress, String prefix) Default Turnout ensures a numeric only system name.voiddispose()Removes SensorManager and SystemConnectionMemo change listeners.getBeanTypeHandled(boolean plural) Get the user-readable name of the type of NamedBean handled by this manager.Get text to be used for the Turnout.CLOSED state in user communication.Get a manager-specific tool tip for adding an entry to the manager.Get the class of NamedBean supported by this Manager.intGet the Interval (in ms) to wait between output commands.Get text to be used for the Turnout.THROWN state in user communication.getTurnout(String name) Get an existing Turnout or return null if it doesn't exist.String[]Get a list of the valid TurnoutOperation subtypes for use with turnouts of this system.intDetermine the order that types should be written when storing panel files.(package private) final voidinit()booleanisControlTypeSupported(String systemName) Determine if the manager supports the handling of pulsed and steady state control as theTurnoutManager.askControlType(java.lang.String)will always return a value even if it is not supported.booleanisNumControlBitsSupported(String systemName) Determine if the manager supports multiple control bits, asTurnoutManager.askNumControlBits(java.lang.String)will always return a value even if it is not supported.newTurnout(String systemName, String userName) Return a Turnout with the specified system and user names.Get end time of latest OutputInterval, calculated from the current time.provideTurnout(String name) Get the Turnout with the user name, then system name if needed; if that fails, create a new Turnout.voidsetDefaultClosedSpeed(String speed) voidsetDefaultThrownSpeed(String speed) voidsetOutputInterval(int newInterval) Set the Interval (in ms) to wait between output commands.charMethods inherited from class jmri.managers.AbstractManager
addDataListener, checkNumeric, deleteBean, deregister, fireDataListenersAdded, fireDataListenersRemoved, fireVetoableChange, getAutoSystemName, getBySystemName, getBySystemName, getByUserName, getKnownBeanProperties, getMemo, getNamedBean, getNamedBeanSet, getObjectCount, getOuterBean, getSystemPrefix, handleUserNameUniqueness, makeSystemName, propertyChange, register, registerSelf, registerUserName, removeDataListener, setDataListenerMute, setPropertyChangesSilenced, setRegisterSelf, updateAutoNumber, validSystemNameFormat, vetoableChangeMethods inherited from class jmri.beans.VetoableChangeSupport
addVetoableChangeListener, addVetoableChangeListener, fireVetoableChange, fireVetoableChange, fireVetoableChange, getVetoableChangeListeners, getVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListenerMethods inherited from class jmri.beans.PropertyChangeSupport
addPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListenerMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jmri.Manager
addDataListener, deleteBean, deregister, getBeanTypeHandled, getKnownBeanProperties, getMemo, getNamedBean, getNamedBeanSet, getObjectCount, getSubSystemNamePrefix, getSystemNamePrefix, getSystemPrefix, isValidSystemNameFormat, makeSystemName, makeSystemName, makeSystemName, register, removeDataListener, setDataListenerMute, validateBadCharsInSystemNameFormat, validateIntegerSystemNameFormat, validateNmraAccessorySystemNameFormat, validateSystemNameFormat, validateSystemNameFormat, validateSystemNameFormatOnlyNumeric, validateSystemNamePrefix, validateTrimmedMin1NumberSystemNameFormat, validateTrimmedSystemNameFormat, validateUppercaseTrimmedSystemNameFormat, validSystemNameFormatMethods inherited from interface jmri.NameIncrementingManager
allowMultipleAdditions, getNextValidSystemNameMethods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListenerMethods inherited from interface jmri.beans.SilenceablePropertyChangeProvider
setPropertyChangesSilencedMethods inherited from interface jmri.TurnoutManager
getBySystemName, getByUserName, provideMethods inherited from interface jmri.beans.VetoableChangeProvider
addVetoableChangeListener, addVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
-
Field Details
-
pcl
-
-
Constructor Details
-
AbstractTurnoutManager
-
-
Method Details
-
init
-
getXMLOrder
Determine the order that types should be written when storing panel files. Uses one of the constants defined in this class.Yes, that's an overly-centralized methodology, but it works for now.
- Specified by:
getXMLOrderin interfaceManager<Turnout>- Returns:
- write order for this Manager; larger is later.
-
typeLetter
- Specified by:
typeLetterin interfaceManager<Turnout>- Returns:
- The type letter for a specific implementation
-
provideTurnout
Get the Turnout with the user name, then system name if needed; if that fails, create a new Turnout. If the name is a valid system name, it will be used for the new Turnout. Otherwise, theManager.makeSystemName(java.lang.String)method will attempt to turn it into a valid system name.This provides the same function as
ProvidingManager.provide(java.lang.String)which has a more generic form.- Specified by:
provideTurnoutin interfaceTurnoutManager- Parameters:
name- User name, system name, or address which can be promoted to system name- Returns:
- Never null
-
getTurnout
Get an existing Turnout or return null if it doesn't exist. Locates via user name, then system name if needed.- Specified by:
getTurnoutin interfaceTurnoutManager- Parameters:
name- User name or system name to match- Returns:
- null if no match found
-
newTurnout
@Nonnull public Turnout newTurnout(@Nonnull String systemName, @CheckForNull String userName) throws IllegalArgumentException Return a Turnout with the specified system and user names. Lookup by UserName then provide by System Name.Note that two calls with the same arguments will get the same instance; there is only one Turnout 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:
- If a null reference is given for user name, no user name will be associated with the Turnout object created; a valid system name must be provided
- If both names are provided, the system name defines the hardware access of the desired turnout, and the user address is associated with it. The system name must be valid.
- Specified by:
newTurnoutin interfaceTurnoutManager- Parameters:
systemName- the system nameuserName- the user name (optional)- Returns:
- requested Turnout object, newly created if needed
- Throws:
IllegalArgumentException- if cannot create the Turnout; likely due to an illegal name or name that cannot be parsed
-
getBeanTypeHandled
Get the user-readable name of the type of NamedBean handled by this manager.For instance, in the code where we are dealing with just a bean and a message that needs to be passed to the user or in a log.
- Specified by:
getBeanTypeHandledin interfaceManager<Turnout>- Parameters:
plural- true to return plural form of the type; false to return singular form- Returns:
- a string of the bean type that the manager handles, eg Turnout, Sensor etc
-
getNamedBeanClass
Get the class of NamedBean supported by this Manager. This should be the generic class used in the Manager's class declaration.- Specified by:
getNamedBeanClassin interfaceManager<Turnout>- Returns:
- the class supported by this Manager.
-
getClosedText
Get text to be used for the Turnout.CLOSED state in user communication. Allows text other than "CLOSED" to be used with certain hardware system to represent the Turnout.CLOSED state.- Specified by:
getClosedTextin interfaceTurnoutManager- Returns:
- the textual representation of
Turnout.CLOSED
-
getThrownText
Get text to be used for the Turnout.THROWN state in user communication. Allows text other than "THROWN" to be use with certain hardware system to represent the Turnout.THROWN state.- Specified by:
getThrownTextin interfaceTurnoutManager- Returns:
- the textual representation of
Turnout.THROWN
-
askNumControlBits
Get from the user, the number of addressed bits used to control a turnout. Normally this is 1, and the default routine returns 1 automatically. Turnout Managers for systems that can handle multiple control bits should override this method with one which asks the user to specify the number of control bits. If the user specifies more than one control bit, this method should check if the additional bits are available (not assigned to another object). If the bits are not available, this method should return 0 for number of control bits, after informing the user of the problem.- Specified by:
askNumControlBitsin interfaceTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- the bit length for turnout control
-
isNumControlBitsSupported
Determine if the manager supports multiple control bits, asTurnoutManager.askNumControlBits(java.lang.String)will always return a value even if it is not supported.- Specified by:
isNumControlBitsSupportedin interfaceTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- true if manager supports multiple control bits for the turnout; false otherwise
-
askControlType
Get from the user, the type of output to be used bits to control a turnout. Normally this is 0 for 'steady state' control, and the default routine returns 0 automatically. Turnout Managers for systems that can handle pulsed control as well as steady state control should override this method with one which asks the user to specify the type of control to be used. The routine should return 0 for 'steady state' control, or n for 'pulsed' control, where n specifies the duration of the pulse (normally in seconds).- Specified by:
askControlTypein interfaceTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- 0 for steady state or the number of seconds for a pulse control
-
isControlTypeSupported
Determine if the manager supports the handling of pulsed and steady state control as theTurnoutManager.askControlType(java.lang.String)will always return a value even if it is not supported.- Specified by:
isControlTypeSupportedin interfaceTurnoutManager- Parameters:
systemName- the turnout system name- Returns:
- true if manager supports the control type returned by
TurnoutManager.askControlType(java.lang.String); false otherwise
-
createNewTurnout
@Nonnull protected abstract Turnout createNewTurnout(@Nonnull String systemName, String userName) throws IllegalArgumentException Internal method to invoke the factory, after all the logic for returning an existing Turnout has been invoked.- Parameters:
systemName- the system name to use for the new TurnoutuserName- the user name to use for the new Turnout- Returns:
- the new Turnout or
- Throws:
IllegalArgumentException- if unsuccessful
-
getValidOperationTypes
Get a list of the valid TurnoutOperation subtypes for use with turnouts of this system.- Specified by:
getValidOperationTypesin interfaceTurnoutManager- Returns:
- a list of subtypes or an empty list if turnout operations are not supported
-
createSystemName
@Nonnull public String createSystemName(@Nonnull String curAddress, @Nonnull String prefix) throws JmriException Default Turnout ensures a numeric only system name. Create a System Name from hardware address and system letter prefix. AbstractManager performs no validation.- Specified by:
createSystemNamein interfaceTurnoutManager- Overrides:
createSystemNamein classAbstractManager<Turnout>- Parameters:
curAddress- hardware address, no system prefix or type letter.prefix- - just system prefix, not including Type Letter.- Returns:
- full system name with system prefix, type letter and hardware address.
- Throws:
JmriException- if unable to create a system name.
-
setDefaultClosedSpeed
- Specified by:
setDefaultClosedSpeedin interfaceTurnoutManager- Throws:
JmriException
-
setDefaultThrownSpeed
- Specified by:
setDefaultThrownSpeedin interfaceTurnoutManager- Throws:
JmriException
-
getDefaultThrownSpeed
- Specified by:
getDefaultThrownSpeedin interfaceTurnoutManager
-
getDefaultClosedSpeed
- Specified by:
getDefaultClosedSpeedin interfaceTurnoutManager
-
getEntryToolTip
Get a manager-specific tool tip for adding an entry to the manager.- Specified by:
getEntryToolTipin interfaceManager<Turnout>- Returns:
- the tool tip or null to disable the tool tip
-
getOutputInterval
Get the Interval (in ms) to wait between output commands. Configured in AdapterConfig, stored in memo.- Specified by:
getOutputIntervalin interfaceTurnoutManager- Returns:
- the (Turnout) Output Interval in milliseconds
-
setOutputInterval
Set the Interval (in ms) to wait between output commands.- Specified by:
setOutputIntervalin interfaceTurnoutManager- Parameters:
newInterval- the new Output Interval in Milliseconds
-
outputIntervalEnds
Get end time of latest OutputInterval, calculated from the current time.- Specified by:
outputIntervalEndsin interfaceTurnoutManager- Returns:
- end time in milliseconds or current time if no interval was set or timer has completed
-
dispose
Removes SensorManager and SystemConnectionMemo change listeners. Free resources when no longer used. Specifically, remove all references to and from this object, so it can be garbage-collected.
-