Package jmri.jmrit.logixng.expressions
Class Antecedent
- java.lang.Object
-
- jmri.implementation.AbstractNamedBean
-
- jmri.jmrit.logixng.implementation.AbstractBase
-
- jmri.jmrit.logixng.expressions.AbstractDigitalExpression
-
- jmri.jmrit.logixng.expressions.Antecedent
-
- All Implemented Interfaces:
java.lang.Comparable<NamedBean>,PropertyChangeProvider,Base,DigitalExpression,DigitalExpressionBean,FemaleSocketListener,NamedBean
public class Antecedent extends AbstractDigitalExpression implements FemaleSocketListener
Evaluates to True if the antecedent evaluates to true
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classAntecedent.DataPairstatic classAntecedent.ExpressionEntry-
Nested classes/interfaces inherited from interface jmri.jmrit.logixng.Base
Base.PrintTreeSettings, Base.RunnableWithBase, Base.RunnableWithBaseThrowException
-
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) static java.util.ResourceBundlerbx-
Fields inherited from class jmri.jmrit.logixng.implementation.AbstractBase
_listenersAreRegistered
-
Fields inherited from class jmri.implementation.AbstractNamedBean
listenerRefs, mSystemName, register
-
Fields inherited from interface jmri.jmrit.logixng.Base
PRINT_LINE_NUMBERS_FORMAT, PROPERTY_CHILD_COUNT, PROPERTY_CHILD_REORDER, PROPERTY_LAST_RESULT_CHANGED, PROPERTY_SOCKET_CONNECTED, PROPERTY_SOCKET_DISCONNECTED, SEPARATOR, SOCKET_CONNECTED, SOCKET_DISCONNECTED
-
Fields inherited from interface jmri.jmrit.logixng.DigitalExpressionBean
FALSE, TRUE
-
Fields inherited from interface jmri.NamedBean
DISPLAY_NAME_FORMAT, INCONSISTENT, PROPERTY_COMMENT, PROPERTY_ENABLED, PROPERTY_KNOWN_STATE, PROPERTY_STATE, PROPERTY_USERNAME, QUOTED_NAME_FORMAT, UNKNOWN
-
-
Constructor Summary
Constructors Constructor Description Antecedent(java.lang.String sys, java.lang.String user)Create a new instance of Antecedent with system name and user name.Antecedent(java.lang.String sys, java.lang.String user, java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>> expressionSystemNames)Create a new instance of Antecedent with system name and user name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidconnected(FemaleSocket socket)The socket is connected.voiddisconnected(FemaleSocket socket)The socket is disconnected.voiddisposeMe()Dispose this class.voiddoSocketOperation(int index, FemaleSocketOperation oper)Do an operation on a childbooleanevaluate()Evaluate this expression.java.lang.StringgetAntecedent()LogixNG_CategorygetCategory()Get the category.FemaleSocketgetChild(int index)Get a child of this itemintgetChildCount()Get the number of children.BasegetDeepCopy(java.util.Map<java.lang.String,java.lang.String> systemNames, java.util.Map<java.lang.String,java.lang.String> userNames)Create a deep copy of myself and my children The item needs to try to lookup itself in both systemNames and userNames to see if the user has given a new system name and/or a new user name.If no new system name is given, an auto system name is used.java.lang.StringgetExpressionSystemName(int index)java.lang.StringgetLongDescription(java.util.Locale locale)Get a long description of this item.java.lang.StringgetShortDescription(java.util.Locale locale)Get a short description of this item.booleanisSocketOperationAllowed(int index, FemaleSocketOperation oper)Is the operation allowed on this child?(package private) Antecedent.DataPairparseCalculate(java.lang.String s, java.util.List<Antecedent.ExpressionEntry> expressionEntryList)Parses and computes one parenthesis level of a boolean statement.voidregisterListenersForThisClass()Register listeners if this object needs that.voidsetAntecedent(java.lang.String antecedent)voidsetChildCount(int count)voidsetup()Setup this object and its children.voidunregisterListenersForThisClass()Unregister listeners if this object needs that.java.lang.StringvalidateAntecedent(java.lang.String ant, java.util.List<Antecedent.ExpressionEntry> expressionEntryList)Check that an antecedent is well formed.-
Methods inherited from class jmri.jmrit.logixng.expressions.AbstractDigitalExpression
getBeanType, getNewSocketName, getNewSocketName, getParent, getState, notifyChangedResult, setParent, setState
-
Methods inherited from class jmri.jmrit.logixng.implementation.AbstractBase
assertListenersAreNotRegistered, compareSystemNameSuffix, deepCopyChildren, dispose, getConditionalNG, getListenerRefsIncludingChildren, getLogixNG, getRoot, getUsageDetail, getUsageTree, isActive, printTree, printTree, printTree, printTreeRow, registerListeners, setParentForAllChildren, unregisterListeners
-
Methods inherited from class jmri.implementation.AbstractNamedBean
addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, 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, vetoableChange
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jmri.jmrit.logixng.Base
addPropertyChangeListener, addPropertyChangeListener, deepCopyChildren, dispose, existsInTree, forEntireTree, forEntireTreeWithException, getComment, getConditionalNG, getListenerRef, getListenerRefs, getListenerRefsIncludingChildren, getLogixNG, getLongDescription, getModule, getNumPropertyChangeListeners, getPropertyChangeListenersByReference, getRoot, getShortDescription, getSystemName, getUsageDetail, getUsageTree, getUserName, hasChild, isActive, isEnabled, printTree, printTree, printTree, printTree, printTree, registerListeners, setComment, setParentForAllChildren, setUserName, unregisterListeners, updateListenerRef, vetoableChange
-
Methods inherited from interface jmri.jmrit.logixng.FemaleSocketListener
socketNameChanged
-
Methods inherited from interface jmri.NamedBean
addPropertyChangeListener, addPropertyChangeListener, compareSystemNameSuffix, compareTo, describeState, dispose, getComment, getDisplayName, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListenersByReference, getPropertyKeys, getRecommendedToolTip, getSystemName, getUsageReport, getUserName, removeProperty, setComment, setProperty, setUserName, toString, updateListenerRef, vetoableChange
-
Methods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
-
-
-
Field Detail
-
rbx
static final java.util.ResourceBundle rbx
-
-
Constructor Detail
-
Antecedent
public Antecedent(@Nonnull java.lang.String sys, @CheckForNull java.lang.String user)
Create a new instance of Antecedent with system name and user name.- Parameters:
sys- the system nameuser- the user name
-
Antecedent
public Antecedent(@Nonnull java.lang.String sys, @CheckForNull java.lang.String user, java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>> expressionSystemNames) throws NamedBean.BadUserNameException, NamedBean.BadSystemNameException
Create a new instance of Antecedent with system name and user name.- Parameters:
sys- the system nameuser- the user nameexpressionSystemNames- a list of system names for the expressions this antecedent uses- Throws:
NamedBean.BadUserNameException- when neededNamedBean.BadSystemNameException- when needed
-
-
Method Detail
-
getDeepCopy
public Base getDeepCopy(java.util.Map<java.lang.String,java.lang.String> systemNames, java.util.Map<java.lang.String,java.lang.String> userNames) throws JmriException
Description copied from interface:BaseCreate a deep copy of myself and my children The item needs to try to lookup itself in both systemNames and userNames to see if the user has given a new system name and/or a new user name.If no new system name is given, an auto system name is used. If no user name is given, a null user name is used.- Specified by:
getDeepCopyin interfaceBase- Parameters:
systemNames- a map of old and new system nameuserNames- a map of old system name and new user name- Returns:
- a deep copy
- Throws:
JmriException- in case of an error
-
getExpressionSystemName
public java.lang.String getExpressionSystemName(int index)
-
getCategory
public LogixNG_Category getCategory()
Get the category.- Specified by:
getCategoryin interfaceBase- Overrides:
getCategoryin classAbstractBase- Returns:
- the category
-
evaluate
public boolean evaluate() throws JmriException
Evaluate this expression.- Specified by:
evaluatein interfaceDigitalExpression- Returns:
- the result of the evaluation
- Throws:
JmriException- when an exception occurs
-
getChild
public FemaleSocket getChild(int index) throws java.lang.IllegalArgumentException, java.lang.UnsupportedOperationException
Description copied from class:AbstractBaseGet a child of this item- Specified by:
getChildin interfaceBase- Overrides:
getChildin classAbstractBase- Parameters:
index- the index of the child to get- Returns:
- the child
- Throws:
java.lang.IllegalArgumentException- if the index is less than 0 or greater or equal with the value returned by getChildCount()java.lang.UnsupportedOperationException- when needed
-
getChildCount
public int getChildCount()
Description copied from class:AbstractBaseGet the number of children.- Specified by:
getChildCountin interfaceBase- Overrides:
getChildCountin classAbstractBase- Returns:
- the number of children
-
setChildCount
public void setChildCount(int count)
-
getShortDescription
public java.lang.String getShortDescription(java.util.Locale locale)
Description copied from interface:BaseGet a short description of this item.- Specified by:
getShortDescriptionin interfaceBase- Parameters:
locale- The locale to be used- Returns:
- a short description
-
getLongDescription
public java.lang.String getLongDescription(java.util.Locale locale)
Description copied from interface:BaseGet a long description of this item.- Specified by:
getLongDescriptionin interfaceBase- Parameters:
locale- The locale to be used- Returns:
- a long description
-
getAntecedent
public java.lang.String getAntecedent()
-
setAntecedent
public final void setAntecedent(java.lang.String antecedent) throws JmriException
- Throws:
JmriException
-
isSocketOperationAllowed
public boolean isSocketOperationAllowed(int index, FemaleSocketOperation oper)
Is the operation allowed on this child?- Specified by:
isSocketOperationAllowedin interfaceBase- Parameters:
index- the index of the child to do the operation onoper- the operation to do- Returns:
- true if operation is allowed, false otherwise
-
doSocketOperation
public void doSocketOperation(int index, FemaleSocketOperation oper)
Do an operation on a child- Specified by:
doSocketOperationin interfaceBase- Parameters:
index- the index of the child to do the operation onoper- the operation to do
-
connected
public void connected(FemaleSocket socket)
Description copied from interface:FemaleSocketListenerThe socket is connected.- Specified by:
connectedin interfaceFemaleSocketListener- Parameters:
socket- the socket
-
disconnected
public void disconnected(FemaleSocket socket)
Description copied from interface:FemaleSocketListenerThe socket is disconnected.- Specified by:
disconnectedin interfaceFemaleSocketListener- Parameters:
socket- the socket
-
setup
public void setup()
Setup this object and its children. This method is used to lookup system names for child sockets, turnouts, sensors, and so on.
-
validateAntecedent
public java.lang.String validateAntecedent(java.lang.String ant, java.util.List<Antecedent.ExpressionEntry> expressionEntryList) throws JmriException
Check that an antecedent is well formed.- Parameters:
ant- the antecedent string descriptionexpressionEntryList- arraylist of existing ExpressionEntries- Returns:
- error message string if not well formed
- Throws:
JmriException- when an exception occurs
-
parseCalculate
Antecedent.DataPair parseCalculate(java.lang.String s, java.util.List<Antecedent.ExpressionEntry> expressionEntryList) throws JmriException
Parses and computes one parenthesis level of a boolean statement.Recursively calls inner parentheses levels. Note that all logic operators are detected by the parsing, therefore the internal negation of a variable is washed.
- Parameters:
s- The expression to be parsedexpressionEntryList- ExpressionEntries for R1, R2, etc- Returns:
- a data pair consisting of the truth value of the level a count of the indices consumed to parse the level and a bitmap of the variable indices used.
- Throws:
JmriException- if unable to compute the logic
-
registerListenersForThisClass
public void registerListenersForThisClass()
Register listeners if this object needs that.Important: This method may be called more than once. Methods overriding this method must ensure that listeners are not registered more than once.
- Overrides:
registerListenersForThisClassin classAbstractBase
-
unregisterListenersForThisClass
public void unregisterListenersForThisClass()
Unregister listeners if this object needs that.Important: This method may be called more than once. Methods overriding this method must ensure that listeners are not unregistered more than once.
- Overrides:
unregisterListenersForThisClassin classAbstractBase
-
disposeMe
public void disposeMe()
Dispose this class. Listeners do not need to be unregistered by this method since they are unregistered by dispose().- Overrides:
disposeMein classAbstractBase
-
-