Package jmri.implementation
Class DefaultSignalMastLogic
- java.lang.Object
-
- jmri.implementation.AbstractNamedBean
-
- jmri.implementation.DefaultSignalMastLogic
-
- All Implemented Interfaces:
java.beans.VetoableChangeListener
,java.lang.Comparable<NamedBean>
,java.util.EventListener
,PropertyChangeProvider
,NamedBean
,SignalMastLogic
public class DefaultSignalMastLogic extends AbstractNamedBean implements SignalMastLogic, java.beans.VetoableChangeListener
Default implementation ofSignalMastLogic
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jmri.NamedBean
NamedBean.BadNameException, NamedBean.BadSystemNameException, NamedBean.BadUserNameException, NamedBean.DisplayOptions, NamedBean.DuplicateSystemNameException
-
-
Field Summary
Fields Modifier and Type Field Description (package private) SignalMast
destination
(package private) java.util.Hashtable<SignalMast,jmri.implementation.DefaultSignalMastLogic.DestinationMast>
destList
(package private) boolean
disposing
(package private) LayoutEditor
editor
(package private) LayoutBlock
facingBlock
(package private) boolean
inWait
protected java.beans.PropertyChangeListener
propertyDestinationMastListener
The listener on the destination Signal Mast.protected java.beans.PropertyChangeListener
propertySourceMastListener
The listener on the source Signal Mast.(package private) LayoutBlock
remoteProtectingBlock
(package private) SignalMast
source
(package private) java.lang.String
stopAspect
-
Fields inherited from class jmri.implementation.AbstractNamedBean
listenerRefs, mSystemName, register
-
Fields inherited from interface jmri.NamedBean
DISPLAY_NAME_FORMAT, INCONSISTENT, PROPERTY_STATE, QUOTED_NAME_FORMAT, UNKNOWN
-
Fields inherited from interface jmri.SignalMastLogic
STOREALL, STOREMASTSONLY, STORENONE
-
-
Constructor Summary
Constructors Constructor Description DefaultSignalMastLogic(SignalMast source)
Initialise a Signal Mast Logic for a given source Signal Mast.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addSensor(java.lang.String sensorName, int state, SignalMast destination)
Add an individual control Sensor and its set to state to the Signal Mast Logic.void
allowAutoMaticSignalMastGeneration(boolean allow, SignalMast destination)
Sets whether we should allow the system to automatically generate a list of signal masts that could cause a conflicting route.boolean
allowAutoMaticSignalMastGeneration(SignalMast destination)
Query if we are allowing the system to automatically generate a list of conflicting Signal Mast that have a direct effect on our logic.void
allowTurnoutLock(boolean lock, SignalMast destination)
Sets whether we should lock all turnouts between the source and destination signal masts when the logic goes active, to prevent them from being changed.boolean
areBlocksIncluded(java.util.List<Block> blks)
Returns true if any of the blocks in the supplied list are included in any of the logics that set this signal.(package private) boolean
checkStates()
Check if routes to the destination Signal Mast are clear.void
disableLayoutEditorUse()
void
dispose()
Note: This does not stop any delayed operations that might be queued.SignalMast
getActiveDestination()
Get the active destination Signal Mast for this Signal Mast Logic.Section
getAssociatedSection(SignalMast destination)
Return the Section configured between the source and destination mast.java.util.List<Block>
getAutoBlocks(SignalMast destination)
Return all the blocks that have been detected as being in use for this logic.java.util.List<Block>
getAutoBlocksBetweenMasts(SignalMast destination)
Return a list of blocks just that have been detected as being directly between the source and destination mast.int
getAutoBlockState(Block block, SignalMast destination)
Return the Set State of a control block as it is configured between the source and destination mast.java.util.List<SignalMast>
getAutoMasts(SignalMast destination)
Return a list of control masts that have been automatically detected as being directly between the source and destination mast.java.lang.String
getAutoSignalMastState(SignalMast mast, SignalMast destination)
Return the Set State (Aspect) of a control mast as it is configured between the source and destination mast.java.util.List<Turnout>
getAutoTurnouts(SignalMast destination)
Return only the turnouts that have been detected as being directly between the source and destination mast.int
getAutoTurnoutState(Turnout turnout, SignalMast destination)
Return the Set State of a control turnout as it is configured between the source and destination mast.java.lang.String
getBeanType()
For instances in the code where we are dealing with just a bean and a message needs to be passed to the user or in a log.java.util.List<Block>
getBlocks(SignalMast destination)
Return the Layout Blocks that have been defined by the user to control the SML to the destination mast.int
getBlockState(Block block, SignalMast destination)
Return the Set To State of a control block as it is configured between the source and destination mast.java.lang.String
getComment(SignalMast dest)
Get the comment set on this SML.java.util.List<SignalMast>
getDestinationList()
Return a list of all Signal Masts that have been configured as Destination Masts on this SML.LayoutBlock
getFacingBlock()
Get the block defined as facing our source signal mast.float
getMaximumSpeed(SignalMast destination)
Get the Maximum Speed set for the destination Signal Mast in this SML.java.util.List<NamedBeanHandle<Sensor>>
getNamedSensors(SignalMast destination)
Return the Sensors that have been defined by the user to control the SML to the destination mast as NamedBeanHandles.java.util.List<NamedBeanHandle<Turnout>>
getNamedTurnouts(SignalMast destination)
Return the Turnouts that have been defined by the user to control the SML to the destination mast as NamedBeanHandles.LayoutBlock
getProtectingBlock(SignalMast dest)
Get the block that the source signal is protecting on the path to the destination signal mast.java.util.List<Sensor>
getSensors(SignalMast destination)
Return the Sensors that have been defined by the user to control the SML to the destination mast.int
getSensorState(Sensor sensor, SignalMast destination)
Return the Set To State of a control Sensor as it is configured between the source and destination mast.java.util.List<SignalMast>
getSignalMasts(SignalMast destination)
Return the Signal Masts that have been defined by the user to control the SML to the destination mast.java.lang.String
getSignalMastState(SignalMast mast, SignalMast destination)
Return the Set To State (Aspect) of a control Signal Mast as it is configured between the source and destination mast.SignalMast
getSourceMast()
Get the Source Mast.int
getState()
No valid integer state, always return a constant.int
getStoreState(SignalMast destination)
Return where the signal mast logic should be stored, if so how much.java.util.List<Turnout>
getTurnouts(SignalMast destination)
Return the Turnouts that have been defined by the user to control the SML to the destination mast.int
getTurnoutState(Turnout turnout, SignalMast destination)
Return the Set State of a control Turnout as it is configured between the source and destination mast.java.util.List<NamedBeanUsageReport>
getUsageReport(NamedBean bean)
Get a list of references for the specified bean.void
initialise()
General method to initialise all SMLs on the source SIgnal Mast using destListvoid
initialise(SignalMast destination)
Initialise the signal mast after all the parameters have been set.boolean
isActive(SignalMast dest)
Query if the Signal Mast Logic from the current source signal mast to the destination signal mast is active.boolean
isBlockIncluded(Block block, SignalMast destination)
Check whether the Block is part of at least one of the logics.boolean
isDestinationValid(SignalMast dest)
Check if signal mast is a destination signal mast in one of the logicsboolean
isEnabled(SignalMast dest)
Query if the Signal Mast Logic from the current source signal mast to the specified destination signal mast is enabled.boolean
isSensorIncluded(Sensor sensor, SignalMast destination)
Check if a sensor is part of at least one of the logics that set a SignalMast.boolean
isSignalMastIncluded(SignalMast signal, SignalMast destination)
Check if a signal mast is part of at least one of the logics that set another signal mast.boolean
isTurnoutIncluded(Turnout turnout, SignalMast destination)
Check if a turnout is part of at least one of the logics that set a signal mast.boolean
isTurnoutLockAllowed(SignalMast destination)
Query if we are allowing the system to lock turnouts when the logic goes active.void
removeConflictingLogic(SignalMast sm, LevelXing lx)
Remove control elements for a SML pair containing a destination signal mast that itself is incompatible with an SML around a level crossing.boolean
removeDestination(SignalMast dest)
Remove the destination signal mast as a pair in this SML.void
removeDirectionSensors()
remove direction sensors from SML need to autoActiveTrains.void
removeSensor(java.lang.String sensorName, SignalMast destination)
Remove an individual control Sensor from the Signal Mast Logic.void
removeSensor(Sensor sen, SignalMast destination)
void
removeTurnout(Turnout turn, SignalMast destination)
void
replaceDestinationMast(SignalMast oldMast, SignalMast newMast)
Replace the existing destination Signal Mast with another signal mast.void
replaceSourceMast(SignalMast oldMast, SignalMast newMast)
Replace the existing source Signal Mast with another signal mast.void
setAssociatedSection(Section sec, SignalMast destination)
Define a Section between the source and destination mast.void
setAutoBlocks(java.util.LinkedHashMap<Block,java.lang.Integer> blocks, SignalMast destination)
Set which blocks must be in a given state for the signal mast not to be set to a Stop aspect.void
setAutoMasts(java.util.Hashtable<SignalMast,java.lang.String> masts, SignalMast destination)
Set which control signal masts must be in a given state before our source mast can be set.void
setAutoTurnouts(java.util.Hashtable<Turnout,java.lang.Integer> turnouts, SignalMast destination)
Set which turnouts must be set to a given state for the signal mast not to be set to a Stop aspect.void
setBlocks(java.util.Hashtable<Block,java.lang.Integer> blocks, SignalMast destination)
Set which blocks must be in a given state for the signal mast not to be set to a Stop aspect.void
setComment(java.lang.String comment, SignalMast dest)
Set the comment for this SML.void
setConflictingLogic(SignalMast sm, LevelXing lx)
Add control elements for a SML pair containing a destination signal mast that itself is skipped as it is incompatible with an SML around a level crossing.void
setDestinationMast(SignalMast dest)
Set the destination signal mast for this SML.void
setDisabled(SignalMast dest)
Set the logic to the destination signal mast to Disabled.void
setEnabled(SignalMast dest)
Set the logic to the destination signal mast to Enabled.void
setFacingBlock(LayoutBlock facing)
Set the block facing our source signal mast.(package private) void
setMastAppearance()
Evaluate the destination signal mast Aspect and set ours accordingly.void
setMasts(java.util.Hashtable<SignalMast,java.lang.String> masts, SignalMast destination)
Set which control signal masts must be in a given state before our source mast can be set.void
setSensors(java.util.Hashtable<NamedBeanHandle<Sensor>,java.lang.Integer> sensors, SignalMast destination)
Set which sensors must be in a given state before our source signal mast can be set.(package private) void
setSignalAppearance()
Before going active or checking that we can go active, wait 500ms for things to settle down to help prevent a race condition.void
setState(int i)
Provide generic access to internal state.void
setStore(int store, SignalMast destination)
Determine if the signal mast logic is stored in the panel file and if all the information is stored.void
setTurnouts(java.util.Hashtable<NamedBeanHandle<Turnout>,java.lang.Integer> turnouts, SignalMast destination)
Set the states that each control turnout must be in for the source signal mast not to be set to a Stop aspect.int
setupDirectionSensors()
Add direction sensors to SMLvoid
setupLayoutEditorDetails()
Set up a Signal Mast Logic from the Layout Editor panel where its source Signal Mast is present, when useLayoutEditor is set to true.java.util.LinkedHashMap<Block,java.lang.Integer>
setupLayoutEditorTurnoutDetails(java.util.List<LayoutBlock> blks, SignalMast destination)
Set the auto turnouts based upon a given list of layout blocks for a specific destination mast.void
useLayoutEditor(boolean boo, SignalMast destination)
Set whether this logic should use the details stored in the Layout Editor to determine which blocks, turnouts will make up the logic between the source and destination signal mast.boolean
useLayoutEditor(SignalMast destination)
Query if we are using the Layout Editor panels to build the signal mast logic, blocks, turnouts.boolean
useLayoutEditorBlocks(SignalMast destination)
Query if we are using the Layout Editor block information in the signal mast logic.void
useLayoutEditorDetails(boolean turnouts, boolean blocks, SignalMast destination)
Set whether this logic should use the information from the Layout Editor for either blocks or turnouts.boolean
useLayoutEditorTurnouts(SignalMast destination)
Query if we are using the Layout Editor turnout information in the signal mast logic.void
vetoableChange(java.beans.PropertyChangeEvent evt)
-
Methods inherited from class jmri.implementation.AbstractNamedBean
addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, compareSystemNameSuffix, describeState, equals, firePropertyChange, getComment, getDisplayName, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeListenersByReference, getPropertyKeys, getSystemName, getUserName, hashCode, removeProperty, removePropertyChangeListener, removePropertyChangeListener, setComment, setProperty, setUserName, toString, toStringSuffix, updateListenerRef
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jmri.NamedBean
addPropertyChangeListener, addPropertyChangeListener, compareSystemNameSuffix, compareTo, describeState, getComment, getDisplayName, getDisplayName, getListenerRef, getListenerRefs, getProperty, getPropertyChangeListenersByReference, getPropertyKeys, getRecommendedToolTip, getSystemName, getUserName, removeProperty, setComment, setProperty, setUserName, toString, updateListenerRef
-
Methods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener
-
Methods inherited from interface jmri.SignalMastLogic
addPropertyChangeListener, getNumPropertyChangeListeners, removePropertyChangeListener
-
-
-
-
Field Detail
-
source
SignalMast source
-
destination
SignalMast destination
-
stopAspect
java.lang.String stopAspect
-
destList
java.util.Hashtable<SignalMast,jmri.implementation.DefaultSignalMastLogic.DestinationMast> destList
-
editor
LayoutEditor editor
-
facingBlock
LayoutBlock facingBlock
-
remoteProtectingBlock
LayoutBlock remoteProtectingBlock
-
disposing
boolean disposing
-
inWait
volatile boolean inWait
-
propertyDestinationMastListener
protected java.beans.PropertyChangeListener propertyDestinationMastListener
The listener on the destination Signal Mast.
-
propertySourceMastListener
protected java.beans.PropertyChangeListener propertySourceMastListener
The listener on the source Signal Mast.
-
-
Constructor Detail
-
DefaultSignalMastLogic
public DefaultSignalMastLogic(@Nonnull SignalMast source)
Initialise a Signal Mast Logic for a given source Signal Mast.- Parameters:
source
- The Signal Mast we are configuring an SML for
-
-
Method Detail
-
setFacingBlock
public void setFacingBlock(LayoutBlock facing)
Set the block facing our source signal mast.- Specified by:
setFacingBlock
in interfaceSignalMastLogic
- Parameters:
facing
- The Layout Block facing the source Signal Mast
-
getFacingBlock
public LayoutBlock getFacingBlock()
Get the block defined as facing our source signal mast.- Specified by:
getFacingBlock
in interfaceSignalMastLogic
- Returns:
- The Layout Block facing the source Signal Mast
-
getProtectingBlock
public LayoutBlock getProtectingBlock(@Nonnull SignalMast dest)
Get the block that the source signal is protecting on the path to the destination signal mast.- Specified by:
getProtectingBlock
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast- Returns:
- the Layout Block
-
getSourceMast
public SignalMast getSourceMast()
Get the Source Mast.- Specified by:
getSourceMast
in interfaceSignalMastLogic
- Returns:
- Signal Mast object.
-
replaceSourceMast
public void replaceSourceMast(SignalMast oldMast, SignalMast newMast)
Replace the existing source Signal Mast with another signal mast. This is for use with such tools as the Layout Editor where a signal mast in a certain location can be replaced with another, while the remainder of the configuration stays the same.- Specified by:
replaceSourceMast
in interfaceSignalMastLogic
- Parameters:
oldMast
- Signal Mast currently configured as the source mastnewMast
- Signal Mast to act as the replacement source mast
-
replaceDestinationMast
public void replaceDestinationMast(SignalMast oldMast, SignalMast newMast)
Replace the existing destination Signal Mast with another signal mast. This is for use with such tools as the Layout Editor where a signalmast in a certain location can be replaced with another, while the remainder of the configuration stays the same.- Specified by:
replaceDestinationMast
in interfaceSignalMastLogic
- Parameters:
oldMast
- Signal Mast currently configured as the destination mastnewMast
- Signal Mast to act as the replacement destination mast
-
setDestinationMast
public void setDestinationMast(SignalMast dest)
Set the destination signal mast for this SML.- Specified by:
setDestinationMast
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast
-
isDestinationValid
public boolean isDestinationValid(SignalMast dest)
Check if signal mast is a destination signal mast in one of the logics- Specified by:
isDestinationValid
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast- Returns:
- true if destination is a destination mast in this object
-
getDestinationList
public java.util.List<SignalMast> getDestinationList()
Return a list of all Signal Masts that have been configured as Destination Masts on this SML.- Specified by:
getDestinationList
in interfaceSignalMastLogic
- Returns:
- A list of Signal Mast objects
-
getComment
public java.lang.String getComment(SignalMast dest)
Get the comment set on this SML.- Specified by:
getComment
in interfaceSignalMastLogic
- Parameters:
dest
- the mast to get the comment from- Returns:
- the comment or an empty string
-
setComment
public void setComment(java.lang.String comment, SignalMast dest)
Set the comment for this SML.- Specified by:
setComment
in interfaceSignalMastLogic
- Parameters:
comment
- text to add as commentdest
- signal mast to add comment to
-
setStore
public void setStore(int store, SignalMast destination)
Determine if the signal mast logic is stored in the panel file and if all the information is stored.- Specified by:
setStore
in interfaceSignalMastLogic
- Parameters:
store
- one ofSignalMastLogic.STOREALL
,SignalMastLogic.STOREMASTSONLY
orSignalMastLogic.STORENONE
destination
- controlled signal mast
-
getStoreState
public int getStoreState(SignalMast destination)
Return where the signal mast logic should be stored, if so how much.- Specified by:
getStoreState
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- one of
SignalMastLogic.STOREALL
,SignalMastLogic.STOREMASTSONLY
orSignalMastLogic.STORENONE
-
setEnabled
public void setEnabled(SignalMast dest)
Set the logic to the destination signal mast to Enabled.- Specified by:
setEnabled
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast
-
setDisabled
public void setDisabled(SignalMast dest)
Set the logic to the destination signal mast to Disabled.- Specified by:
setDisabled
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast
-
isEnabled
public boolean isEnabled(SignalMast dest)
Query if the Signal Mast Logic from the current source signal mast to the specified destination signal mast is enabled.- Specified by:
isEnabled
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast- Returns:
- true if enabled
-
isActive
public boolean isActive(SignalMast dest)
Query if the Signal Mast Logic from the current source signal mast to the destination signal mast is active.- Specified by:
isActive
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast- Returns:
- true if active; false otherwise
-
getActiveDestination
public SignalMast getActiveDestination()
Get the active destination Signal Mast for this Signal Mast Logic.- Specified by:
getActiveDestination
in interfaceSignalMastLogic
- Returns:
- the active signal mast or null if none
-
removeDestination
public boolean removeDestination(SignalMast dest)
Remove the destination signal mast as a pair in this SML.- Specified by:
removeDestination
in interfaceSignalMastLogic
- Parameters:
dest
- controlled signal mast- Returns:
- true if there are no more destination signal masts
-
disableLayoutEditorUse
public void disableLayoutEditorUse()
- Specified by:
disableLayoutEditorUse
in interfaceSignalMastLogic
-
useLayoutEditor
public void useLayoutEditor(boolean boo, SignalMast destination) throws JmriException
Set whether this logic should use the details stored in the Layout Editor to determine which blocks, turnouts will make up the logic between the source and destination signal mast.- Specified by:
useLayoutEditor
in interfaceSignalMastLogic
- Parameters:
boo
- Use the Layout Editor details to determine logic detailsdestination
- the Destination Signal Mast- Throws:
JmriException
- if a path on the layout editor is not valid
-
setupDirectionSensors
public int setupDirectionSensors()
Add direction sensors to SML- Specified by:
setupDirectionSensors
in interfaceSignalMastLogic
- Returns:
- number of errors
-
removeDirectionSensors
public void removeDirectionSensors()
remove direction sensors from SML need to autoActiveTrains.- Specified by:
removeDirectionSensors
in interfaceSignalMastLogic
-
useLayoutEditor
public boolean useLayoutEditor(SignalMast destination)
Query if we are using the Layout Editor panels to build the signal mast logic, blocks, turnouts.- Specified by:
useLayoutEditor
in interfaceSignalMastLogic
- Parameters:
destination
- Destination Signal Mast- Returns:
- true if we are using the Layout Editor to build the signal mast logic.
-
useLayoutEditorDetails
public void useLayoutEditorDetails(boolean turnouts, boolean blocks, SignalMast destination) throws JmriException
Set whether this logic should use the information from the Layout Editor for either blocks or turnouts.- Specified by:
useLayoutEditorDetails
in interfaceSignalMastLogic
- Parameters:
turnouts
- set false if not to use the turnout information gathered from the layout editorblocks
- set false if not to use the block information gathered from the layout editordestination
- Destination Signal Mast- Throws:
JmriException
- if a path on the layout editor is not valid
-
useLayoutEditorBlocks
public boolean useLayoutEditorBlocks(SignalMast destination)
Query if we are using the Layout Editor block information in the signal mast logic.- Specified by:
useLayoutEditorBlocks
in interfaceSignalMastLogic
- Parameters:
destination
- Destination Signal Mast- Returns:
- true if we are using the block information from the Layout Editor.
-
useLayoutEditorTurnouts
public boolean useLayoutEditorTurnouts(SignalMast destination)
Query if we are using the Layout Editor turnout information in the signal mast logic.- Specified by:
useLayoutEditorTurnouts
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- true if we are using the turnout information from the Layout Editor.
-
getAssociatedSection
public Section getAssociatedSection(SignalMast destination)
Return the Section configured between the source and destination mast.- Specified by:
getAssociatedSection
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- The section object
-
setAssociatedSection
public void setAssociatedSection(Section sec, SignalMast destination)
Define a Section between the source and destination mast.- Specified by:
setAssociatedSection
in interfaceSignalMastLogic
- Parameters:
sec
- The sectiondestination
- controlled signal mast
-
allowAutoMaticSignalMastGeneration
public boolean allowAutoMaticSignalMastGeneration(SignalMast destination)
Query if we are allowing the system to automatically generate a list of conflicting Signal Mast that have a direct effect on our logic.- Specified by:
allowAutoMaticSignalMastGeneration
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- true if this is allowed.
-
allowAutoMaticSignalMastGeneration
public void allowAutoMaticSignalMastGeneration(boolean allow, SignalMast destination)
Sets whether we should allow the system to automatically generate a list of signal masts that could cause a conflicting route.- Specified by:
allowAutoMaticSignalMastGeneration
in interfaceSignalMastLogic
- Parameters:
allow
- set true if we are to allow automatic generation.destination
- controlled signal mast
-
allowTurnoutLock
public void allowTurnoutLock(boolean lock, SignalMast destination)
Sets whether we should lock all turnouts between the source and destination signal masts when the logic goes active, to prevent them from being changed. This is dependant upon the hardware allowing for this.- Specified by:
allowTurnoutLock
in interfaceSignalMastLogic
- Parameters:
lock
- set true if the system should lock the turnout.destination
- controlled signal mast
-
isTurnoutLockAllowed
public boolean isTurnoutLockAllowed(SignalMast destination)
Query if we are allowing the system to lock turnouts when the logic goes active.- Specified by:
isTurnoutLockAllowed
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- true if locking is allowed.
-
setTurnouts
public void setTurnouts(java.util.Hashtable<NamedBeanHandle<Turnout>,java.lang.Integer> turnouts, SignalMast destination)
Set the states that each control turnout must be in for the source signal mast not to be set to a Stop aspect.- Specified by:
setTurnouts
in interfaceSignalMastLogic
- Parameters:
turnouts
- A list of named turnouts and their respective set to state to checkdestination
- controlled signal mast
-
setAutoTurnouts
public void setAutoTurnouts(java.util.Hashtable<Turnout,java.lang.Integer> turnouts, SignalMast destination)
Set which turnouts must be set to a given state for the signal mast not to be set to a Stop aspect. These Turnouts are not stored in the panel file.- Specified by:
setAutoTurnouts
in interfaceSignalMastLogic
- Parameters:
turnouts
- map of turnouts and their respective set to statedestination
- controlled signal mast
-
setBlocks
public void setBlocks(java.util.Hashtable<Block,java.lang.Integer> blocks, SignalMast destination)
Set which blocks must be in a given state for the signal mast not to be set to a Stop aspect.- Specified by:
setBlocks
in interfaceSignalMastLogic
- Parameters:
blocks
- map of Blocks and their respective set to statedestination
- controlled signal mast
-
setAutoBlocks
public void setAutoBlocks(java.util.LinkedHashMap<Block,java.lang.Integer> blocks, SignalMast destination)
Set which blocks must be in a given state for the signal mast not to be set to a Stop aspect. These blocks are not stored in the panel file.- Specified by:
setAutoBlocks
in interfaceSignalMastLogic
- Parameters:
blocks
- map ofBlock
s and their respective set to state to be checkeddestination
- controlled signal mast
-
setMasts
public void setMasts(java.util.Hashtable<SignalMast,java.lang.String> masts, SignalMast destination)
Set which control signal masts must be in a given state before our source mast can be set.- Specified by:
setMasts
in interfaceSignalMastLogic
- Parameters:
masts
- map of control signal masts and respective set to states to be checkeddestination
- controlled signal mast
-
setAutoMasts
public void setAutoMasts(java.util.Hashtable<SignalMast,java.lang.String> masts, SignalMast destination)
Set which control signal masts must be in a given state before our source mast can be set. These Signal Masts are not stored in the panel file.- Specified by:
setAutoMasts
in interfaceSignalMastLogic
- Parameters:
masts
- list of control signal masts and their respective set to state to be checkeddestination
- controlled signal mast
-
setSensors
public void setSensors(java.util.Hashtable<NamedBeanHandle<Sensor>,java.lang.Integer> sensors, SignalMast destination)
Set which sensors must be in a given state before our source signal mast can be set.- Specified by:
setSensors
in interfaceSignalMastLogic
- Parameters:
sensors
- TheSensor
s to be checkeddestination
- controlled signal mast
-
addSensor
public void addSensor(java.lang.String sensorName, int state, SignalMast destination)
Add an individual control Sensor and its set to state to the Signal Mast Logic.- Specified by:
addSensor
in interfaceSignalMastLogic
- Parameters:
sensorName
- The sensor to be removedstate
- Integer representing the state the control Sensor should be indestination
- controlled signal mast
-
removeSensor
public void removeSensor(java.lang.String sensorName, SignalMast destination)
Remove an individual control Sensor from the Signal Mast Logic.- Specified by:
removeSensor
in interfaceSignalMastLogic
- Parameters:
sensorName
- The sensor to be removeddestination
- controlled signal mast
-
removeSensor
public void removeSensor(Sensor sen, SignalMast destination)
-
getBlocks
public java.util.List<Block> getBlocks(SignalMast destination)
Return the Layout Blocks that have been defined by the user to control the SML to the destination mast.- Specified by:
getBlocks
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of Block objects
-
getAutoBlocks
public java.util.List<Block> getAutoBlocks(SignalMast destination)
Return all the blocks that have been detected as being in use for this logic. This includes blocks on level xings that are not directly in the path but do have an effect on the logic.- Specified by:
getAutoBlocks
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of Block objects
-
getAutoBlocksBetweenMasts
public java.util.List<Block> getAutoBlocksBetweenMasts(SignalMast destination)
Return a list of blocks just that have been detected as being directly between the source and destination mast. The order of the blocks in the list is the order in which they are connected.- Specified by:
getAutoBlocksBetweenMasts
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of block objects
-
getTurnouts
public java.util.List<Turnout> getTurnouts(SignalMast destination)
Return the Turnouts that have been defined by the user to control the SML to the destination mast.- Specified by:
getTurnouts
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of Turnout objects
-
getNamedTurnouts
public java.util.List<NamedBeanHandle<Turnout>> getNamedTurnouts(SignalMast destination)
Return the Turnouts that have been defined by the user to control the SML to the destination mast as NamedBeanHandles.- Specified by:
getNamedTurnouts
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of Turnout NamedBeanHandles
-
removeTurnout
public void removeTurnout(Turnout turn, SignalMast destination)
-
getAutoTurnouts
public java.util.List<Turnout> getAutoTurnouts(SignalMast destination)
Return only the turnouts that have been detected as being directly between the source and destination mast. The order of the turnouts in the list is the order in which they are connected.- Specified by:
getAutoTurnouts
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of turnout objects
-
getSensors
public java.util.List<Sensor> getSensors(SignalMast destination)
Return the Sensors that have been defined by the user to control the SML to the destination mast.- Specified by:
getSensors
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of Sensor objects
-
getNamedSensors
public java.util.List<NamedBeanHandle<Sensor>> getNamedSensors(SignalMast destination)
Return the Sensors that have been defined by the user to control the SML to the destination mast as NamedBeanHandles.- Specified by:
getNamedSensors
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of Sensor NamedBeanHandles
-
getSignalMasts
public java.util.List<SignalMast> getSignalMasts(SignalMast destination)
Return the Signal Masts that have been defined by the user to control the SML to the destination mast.- Specified by:
getSignalMasts
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of Signal Mast objects
-
getAutoMasts
public java.util.List<SignalMast> getAutoMasts(SignalMast destination)
Return a list of control masts that have been automatically detected as being directly between the source and destination mast. The order of the control masts in the list is the order in which they are connected.- Specified by:
getAutoMasts
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast- Returns:
- A list of signal mast objects
-
initialise
public void initialise()
General method to initialise all SMLs on the source SIgnal Mast using destList- Specified by:
initialise
in interfaceSignalMastLogic
-
initialise
public void initialise(SignalMast destination)
Initialise the signal mast after all the parameters have been set.- Specified by:
initialise
in interfaceSignalMastLogic
- Parameters:
destination
- controlled signal mast
-
setupLayoutEditorTurnoutDetails
public java.util.LinkedHashMap<Block,java.lang.Integer> setupLayoutEditorTurnoutDetails(java.util.List<LayoutBlock> blks, SignalMast destination)
Set the auto turnouts based upon a given list of layout blocks for a specific destination mast.- Specified by:
setupLayoutEditorTurnoutDetails
in interfaceSignalMastLogic
- Parameters:
blks
- List of Layout Blocks.destination
- Destination Signal Mast- Returns:
- A LinkedHashMap of the original blocks and their required state, plus any blocks found on double cross-overs that also need to be un-occupied.
-
setupLayoutEditorDetails
public void setupLayoutEditorDetails()
Set up a Signal Mast Logic from the Layout Editor panel where its source Signal Mast is present, when useLayoutEditor is set to true.- Specified by:
setupLayoutEditorDetails
in interfaceSignalMastLogic
-
checkStates
boolean checkStates()
Check if routes to the destination Signal Mast are clear.- Returns:
- true if the path to the next signal is clear
-
areBlocksIncluded
public boolean areBlocksIncluded(java.util.List<Block> blks)
Returns true if any of the blocks in the supplied list are included in any of the logics that set this signal.- Specified by:
areBlocksIncluded
in interfaceSignalMastLogic
- Parameters:
blks
- A list of Layout Blocks to query against- Returns:
- whether all supplied blocks are in at least one of the logics
-
getBlockState
public int getBlockState(Block block, SignalMast destination)
Return the Set To State of a control block as it is configured between the source and destination mast.- Specified by:
getBlockState
in interfaceSignalMastLogic
- Parameters:
block
- The Control Layout Blockdestination
- controlled signal mast- Returns:
- Integer representing the state the control block should be in
-
isBlockIncluded
public boolean isBlockIncluded(Block block, SignalMast destination)
Check whether the Block is part of at least one of the logics.- Specified by:
isBlockIncluded
in interfaceSignalMastLogic
- Parameters:
block
- a layout blockdestination
- controlled signal mast- Returns:
- true if block is included in any of the Signal Mast Logics that set destination
-
isTurnoutIncluded
public boolean isTurnoutIncluded(Turnout turnout, SignalMast destination)
Check if a turnout is part of at least one of the logics that set a signal mast.- Specified by:
isTurnoutIncluded
in interfaceSignalMastLogic
- Parameters:
turnout
- the turnout to checkdestination
- controlled signal mast- Returns:
- true if turnout is included in any of the Signal Mast Logics that set destination
-
isSensorIncluded
public boolean isSensorIncluded(Sensor sensor, SignalMast destination)
Check if a sensor is part of at least one of the logics that set a SignalMast.- Specified by:
isSensorIncluded
in interfaceSignalMastLogic
- Parameters:
sensor
- the sensor to checkdestination
- controlled signal- Returns:
- true if sensor is included in any of the Signal Mast Logics that set destination
-
isSignalMastIncluded
public boolean isSignalMastIncluded(SignalMast signal, SignalMast destination)
Check if a signal mast is part of at least one of the logics that set another signal mast.- Specified by:
isSignalMastIncluded
in interfaceSignalMastLogic
- Parameters:
signal
- the signal mast to checkdestination
- controlled signal mast- Returns:
- true if signal is included in any of the Signal Mast Logics that set destination
-
getAutoBlockState
public int getAutoBlockState(Block block, SignalMast destination)
Return the Set State of a control block as it is configured between the source and destination mast.- Specified by:
getAutoBlockState
in interfaceSignalMastLogic
- Parameters:
block
- The Control Layout Block.destination
- controlled signal mast- Returns:
- The int value representing the occupancy state that the block should show
-
getSensorState
public int getSensorState(Sensor sensor, SignalMast destination)
Return the Set To State of a control Sensor as it is configured between the source and destination mast.- Specified by:
getSensorState
in interfaceSignalMastLogic
- Parameters:
sensor
- The Control Sensordestination
- controlled signal mast- Returns:
- Integer representing the state the control Sensor should be in
-
getTurnoutState
public int getTurnoutState(Turnout turnout, SignalMast destination)
Return the Set State of a control Turnout as it is configured between the source and destination mast.- Specified by:
getTurnoutState
in interfaceSignalMastLogic
- Parameters:
turnout
- The Control Turnoutdestination
- controlled signal mast- Returns:
- Integer representing the state the control Sensor should be in
-
getAutoTurnoutState
public int getAutoTurnoutState(Turnout turnout, SignalMast destination)
Return the Set State of a control turnout as it is configured between the source and destination mast.- Specified by:
getAutoTurnoutState
in interfaceSignalMastLogic
- Parameters:
turnout
- The Control Turnoutdestination
- controlled signal mast- Returns:
- The name of the Aspect the Control Mast should display
-
getSignalMastState
public java.lang.String getSignalMastState(SignalMast mast, SignalMast destination)
Return the Set To State (Aspect) of a control Signal Mast as it is configured between the source and destination mast.- Specified by:
getSignalMastState
in interfaceSignalMastLogic
- Parameters:
mast
- The Control Signal Mastdestination
- controlled signal mast- Returns:
- Integer representing the state the control Signal Mast should be in
-
getAutoSignalMastState
public java.lang.String getAutoSignalMastState(SignalMast mast, SignalMast destination)
Return the Set State (Aspect) of a control mast as it is configured between the source and destination mast.- Specified by:
getAutoSignalMastState
in interfaceSignalMastLogic
- Parameters:
mast
- The Control Signal Mastdestination
- controlled signal mast- Returns:
- The name of the Aspect the Control Mast should display
-
getMaximumSpeed
public float getMaximumSpeed(SignalMast destination)
Get the Maximum Speed set for the destination Signal Mast in this SML.- Specified by:
getMaximumSpeed
in interfaceSignalMastLogic
- Parameters:
destination
- the destination mast- Returns:
- A number representing the speed
-
setSignalAppearance
void setSignalAppearance()
Before going active or checking that we can go active, wait 500ms for things to settle down to help prevent a race condition.
-
setMastAppearance
void setMastAppearance()
Evaluate the destination signal mast Aspect and set ours accordingly.
-
setConflictingLogic
public void setConflictingLogic(SignalMast sm, LevelXing lx)
Add control elements for a SML pair containing a destination signal mast that itself is skipped as it is incompatible with an SML around a level crossing.- Specified by:
setConflictingLogic
in interfaceSignalMastLogic
- Parameters:
sm
- The destination Signal Mastlx
- The LevelXing Layout Editor element
-
removeConflictingLogic
public void removeConflictingLogic(SignalMast sm, LevelXing lx)
Remove control elements for a SML pair containing a destination signal mast that itself is incompatible with an SML around a level crossing.- Specified by:
removeConflictingLogic
in interfaceSignalMastLogic
- Parameters:
sm
- The destination Signal Mastlx
- The LevelXing Layout Editor element
-
vetoableChange
public void vetoableChange(java.beans.PropertyChangeEvent evt) throws java.beans.PropertyVetoException
Description copied from class:AbstractNamedBean
- Specified by:
vetoableChange
in interfaceNamedBean
- Specified by:
vetoableChange
in interfaceSignalMastLogic
- Specified by:
vetoableChange
in interfacejava.beans.VetoableChangeListener
- Overrides:
vetoableChange
in classAbstractNamedBean
- Throws:
java.beans.PropertyVetoException
-
dispose
public void dispose()
Note: This does not stop any delayed operations that might be queued.- Specified by:
dispose
in interfaceNamedBean
- Specified by:
dispose
in interfaceSignalMastLogic
- Overrides:
dispose
in classAbstractNamedBean
-
getBeanType
public java.lang.String getBeanType()
For instances in the code where we are dealing with just a bean and a message needs to be passed to the user or in a log.- Specified by:
getBeanType
in interfaceNamedBean
- Returns:
- a string of the bean type, eg Turnout, Sensor etc
-
getState
public int getState()
No valid integer state, always return a constant.
-
setState
public void setState(int i)
Description copied from interface:NamedBean
Provide generic access to internal state.This generally shouldn't be used by Java code; use the class-specific form instead (e.g. setCommandedState in Turnout). This is provided to make scripts access easier to read.
-
getUsageReport
public java.util.List<NamedBeanUsageReport> getUsageReport(NamedBean bean)
Get a list of references for the specified bean.- Specified by:
getUsageReport
in interfaceNamedBean
- Parameters:
bean
- The bean to be checked.- Returns:
- a list of NamedBeanUsageReports or an empty ArrayList.
-
-