Class AbstractMaleSocket

    • Method Detail

      • getObject

        public final Base getObject()
        Get the object that this male socket holds. This method is used when the object is going to be configured.
        Specified by:
        getObject in interface MaleSocket
        Returns:
        the object this male socket holds
      • getRoot

        public final Base getRoot()
        Get the root of the tree that this item belongs to.
        Specified by:
        getRoot in interface Base
        Returns:
        the top most item in the tree
      • isLocked

        public boolean isLocked()
        Is the node locked?
        Specified by:
        isLocked in interface MaleSocket
        Returns:
        true if locked, false otherwise
      • setLocked

        public void setLocked​(boolean locked)
        Set if the node is locked or not.
        Specified by:
        setLocked in interface MaleSocket
        Parameters:
        locked - true if locked, false otherwise
      • isSystem

        public boolean isSystem()
        Is the node a system node?
        Specified by:
        isSystem in interface MaleSocket
        Returns:
        true if system, false otherwise
      • setSystem

        public void setSystem​(boolean system)
        Set if the node is system or not.
        Specified by:
        setSystem in interface MaleSocket
        Parameters:
        system - true if system, false otherwise
      • getChild

        public final FemaleSocket getChild​(int index)
                                    throws java.lang.IllegalArgumentException,
                                           java.lang.UnsupportedOperationException
        Description copied from interface: Base
        Get a child of this item
        Specified by:
        getChild in interface Base
        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
      • getChildCount

        public final int getChildCount()
        Description copied from interface: Base
        Get the number of children.
        Specified by:
        getChildCount in interface Base
        Returns:
        the number of children
      • getShortDescription

        public final java.lang.String getShortDescription​(java.util.Locale locale)
        Description copied from interface: Base
        Get a short description of this item.
        Specified by:
        getShortDescription in interface Base
        Parameters:
        locale - The locale to be used
        Returns:
        a short description
      • getLongDescription

        public final java.lang.String getLongDescription​(java.util.Locale locale)
        Description copied from interface: Base
        Get a long description of this item.
        Specified by:
        getLongDescription in interface Base
        Parameters:
        locale - The locale to be used
        Returns:
        a long description
      • getUserName

        public final java.lang.String getUserName()
        Description copied from interface: Base
        Get the user name.
        Specified by:
        getUserName in interface Base
        Returns:
        the user name
      • getSystemName

        public final java.lang.String getSystemName()
        Description copied from interface: Base
        Get the system name.
        Specified by:
        getSystemName in interface Base
        Returns:
        the system name
      • addPropertyChangeListener

        public final void addPropertyChangeListener​(java.beans.PropertyChangeListener l,
                                                    java.lang.String name,
                                                    java.lang.String listenerRef)
        Description copied from interface: Base
        Request a call-back when a bound property changes. Bound properties are the known state, commanded state, user and system names.
        Specified by:
        addPropertyChangeListener in interface Base
        Parameters:
        l - The listener. This may change in the future to be a subclass of NamedProprtyChangeListener that carries the name and listenerRef values internally
        name - The name (either system or user) that the listener uses for this namedBean, this parameter is used to help determine when which listeners should be moved when the username is moved from one bean to another
        listenerRef - A textual reference for the listener, that can be presented to the user when a delete is called
      • addPropertyChangeListener

        public final void addPropertyChangeListener​(java.lang.String propertyName,
                                                    java.beans.PropertyChangeListener l,
                                                    java.lang.String name,
                                                    java.lang.String listenerRef)
        Description copied from interface: Base
        Request a call-back when a bound property changes. Bound properties are the known state, commanded state, user and system names.
        Specified by:
        addPropertyChangeListener in interface Base
        Parameters:
        propertyName - The name of the property to listen to
        l - The listener. This may change in the future to be a subclass of NamedProprtyChangeListener that carries the name and listenerRef values internally
        name - The name (either system or user) that the listener uses for this namedBean, this parameter is used to help determine when which listeners should be moved when the username is moved from one bean to another
        listenerRef - A textual reference for the listener, that can be presented to the user when a delete is called
      • vetoableChange

        public final void vetoableChange​(java.beans.PropertyChangeEvent evt)
                                  throws java.beans.PropertyVetoException
        Specified by:
        vetoableChange in interface Base
        Throws:
        java.beans.PropertyVetoException
      • getListenerRef

        public final java.lang.String getListenerRef​(java.beans.PropertyChangeListener l)
        Description copied from interface: Base
        Get the textual reference for the specific listener
        Specified by:
        getListenerRef in interface Base
        Parameters:
        l - the listener of interest
        Returns:
        the textual reference
      • getListenerRefs

        public final java.util.ArrayList<java.lang.String> getListenerRefs()
        Description copied from interface: Base
        Returns a list of all the listeners references
        Specified by:
        getListenerRefs in interface Base
        Returns:
        a list of textual references
      • getPropertyChangeListenersByReference

        public final java.beans.PropertyChangeListener[] getPropertyChangeListenersByReference​(java.lang.String name)
        Description copied from interface: Base
        Get a list of all the property change listeners that are registered using a specific name
        Specified by:
        getPropertyChangeListenersByReference in interface Base
        Parameters:
        name - The name (either system or user) that the listener has registered as referencing this namedBean
        Returns:
        empty list if none
      • getComment

        public java.lang.String getComment()
        Description copied from interface: Base
        Get associated comment text. A LogixNG comment can have multiple lines, separated with \n.
        Specified by:
        getComment in interface Base
        Returns:
        the comment or null
      • setComment

        public void setComment​(java.lang.String comment)
        Description copied from interface: Base
        Set associated comment text.

        Comments can be any valid text.

        Specified by:
        setComment in interface Base
        Parameters:
        comment - the comment or null to remove an existing comment
      • getListen

        public boolean getListen()
        Description copied from interface: MaleSocket
        Get whenether the node should listen to changes or not.
        Specified by:
        getListen in interface MaleSocket
        Returns:
        true if listen, false if not listen
      • setListen

        public void setListen​(boolean listen)
        Description copied from interface: MaleSocket
        Set whenether the node should listen to changes or not.
        Specified by:
        setListen in interface MaleSocket
        Parameters:
        listen - true if listen, false if not listen
      • setCatchAbortExecution

        public void setCatchAbortExecution​(boolean catchAbortExecution)
        Description copied from interface: MaleSocket
        Set if the node should catch AbortExecution or not.
        Specified by:
        setCatchAbortExecution in interface MaleSocket
        Parameters:
        catchAbortExecution - true if catch, false otherwise
      • getParent

        public Base getParent()
        Description copied from interface: Base
        Get the parent.

        The following rules apply

        • LogixNGs has no parent. The method throws an UnsupportedOperationException if called.
        • Expressions and actions has the male socket that they are connected to as their parent.
        • Male sockets has the female socket that they are connected to as their parent.
        • The parent of a female sockets is the LogixNG, expression or action that has this female socket.
        • The parent of a male sockets is the same parent as the expression or action that it contains.
        Specified by:
        getParent in interface Base
        Returns:
        the parent of this object
      • setParent

        public void setParent​(Base parent)
        Description copied from interface: Base
        Set the parent.

        The following rules apply

        • ExecutionGroups has no parent. The method throws an UnsupportedOperationException if called.
        • LogixNGs has the execution group as its parent.
        • Expressions and actions has the male socket that they are connected to as their parent.
        • Male sockets has the female socket that they are connected to as their parent.
        • The parent of a female sockets is the LogixNG, expression or action that has this female socket.
        • The parent of a male sockets is the same parent as the expression or action that it contains.
        Specified by:
        setParent in interface Base
        Parameters:
        parent - the new parent of this object
      • getLogixNG

        public final LogixNG getLogixNG()
        Description copied from interface: Base
        Get the LogixNG of this item.
        Specified by:
        getLogixNG in interface Base
        Returns:
        the LogixNG that owns this item
      • setParentForAllChildren

        public final boolean setParentForAllChildren​(java.util.List<java.lang.String> errors)
        Set the parent for all the children.
        Specified by:
        setParentForAllChildren in interface Base
        Parameters:
        errors - a list of potential errors
        Returns:
        true if success, false otherwise
      • registerListenersForThisClass

        protected abstract 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.

      • unregisterListenersForThisClass

        protected abstract 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.

      • registerListeners

        public final void registerListeners()
        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.

        Specified by:
        registerListeners in interface Base
      • unregisterListeners

        public final void unregisterListeners()
        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.

        Specified by:
        unregisterListeners in interface Base
      • isActive

        public final boolean isActive()
        Is this item active? If this item is enabled and all the parents are enabled, this item is active.
        Specified by:
        isActive in interface Base
        Returns:
        true if active, false otherwise.
      • printTreeRow

        protected void printTreeRow​(Base.PrintTreeSettings settings,
                                    java.util.Locale locale,
                                    java.io.PrintWriter writer,
                                    java.lang.String currentIndent,
                                    MutableInt lineNumber)
        Print this row. If getObject() doesn't return an AbstractMaleSocket, print this row.

        If a male socket that extends AbstractMaleSocket wants to print something here, it needs to override this method.

        The reason this method doesn't print if getObject() returns an AbstractMaleSocket is to protect so it doesn't print itself twice if it's embedding an other AbstractMaleSocket. An example of this is the AbstractDebuggerMaleSocket which embeds other male sockets.

        Parameters:
        settings - settings for what to print
        locale - The locale to be used
        writer - the stream to print the tree to
        currentIndent - the current indentation
        lineNumber - the line number
      • printTree

        public void printTree​(Base.PrintTreeSettings settings,
                              java.io.PrintWriter writer,
                              java.lang.String indent,
                              MutableInt lineNumber)
        Print the tree to a stream.
        Specified by:
        printTree in interface Base
        Parameters:
        settings - settings for what to print
        writer - the stream to print the tree to
        indent - the indentation of each level
        lineNumber - the line number
      • printTree

        public void printTree​(Base.PrintTreeSettings settings,
                              java.util.Locale locale,
                              java.io.PrintWriter writer,
                              java.lang.String indent,
                              MutableInt lineNumber)
        Print the tree to a stream.
        Specified by:
        printTree in interface Base
        Parameters:
        settings - settings for what to print
        locale - The locale to be used
        writer - the stream to print the tree to
        indent - the indentation of each level
        lineNumber - the line number
      • printTree

        public void printTree​(Base.PrintTreeSettings settings,
                              java.util.Locale locale,
                              java.io.PrintWriter writer,
                              java.lang.String indent,
                              java.lang.String currentIndent,
                              MutableInt lineNumber)
        Print the tree to a stream.
        Specified by:
        printTree in interface Base
        Parameters:
        settings - settings for what to print
        locale - The locale to be used
        writer - the stream to print the tree to
        indent - the indentation of each level
        currentIndent - the current indentation
        lineNumber - the line number
      • getUsageTree

        public void getUsageTree​(int level,
                                 NamedBean bean,
                                 java.util.List<NamedBeanUsageReport> report,
                                 NamedBean cdl)
        Navigate the LogixNG tree.
        Specified by:
        getUsageTree in interface Base
        Parameters:
        level - The current recursion level for debugging.
        bean - The named bean that is the object of the search.
        report - A list of NamedBeanUsageReport usage reports.
        cdl - The current ConditionalNG bean. Null for Module searches since there is no conditional
      • getUsageDetail

        public void getUsageDetail​(int level,
                                   NamedBean bean,
                                   java.util.List<NamedBeanUsageReport> report,
                                   NamedBean cdl)
        Add a new NamedBeanUsageReport to the report list if there are any matches in this action or expresssion.

        NamedBeanUsageReport Usage keys:

        • LogixNGAction
        • LogixNGExpression
        Specified by:
        getUsageDetail in interface Base
        Parameters:
        level - The current recursion level for debugging.
        bean - The named bean that is the object of the search.
        report - A list of NamedBeanUsageReport usage reports.
        cdl - The current ConditionalNG bean. Null for Module searches since there is no conditional
      • getDeepCopy

        public final 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: Base
        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. If no user name is given, a null user name is used.
        Specified by:
        getDeepCopy in interface Base
        Parameters:
        systemNames - a map of old and new system name
        userNames - a map of old system name and new user name
        Returns:
        a deep copy
        Throws:
        JmriException - in case of an error
      • deepCopyChildren

        public final Base deepCopyChildren​(Base original,
                                           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: Base
        Do a deep copy of children from the original to me.
        Specified by:
        deepCopyChildren in interface Base
        Parameters:
        original - the item to copy from
        systemNames - a map of old and new system name
        userNames - a map of old system name and new user name
        Returns:
        myself
        Throws:
        JmriException - in case of an error
      • disposeMe

        protected abstract void disposeMe()
        Disposes this object. This must remove _all_ connections!
      • dispose

        public final void dispose()
        Deactivate this object, so that it releases as many resources as possible and no longer effects others.

        For example, if this object has listeners, after a call to this method it should no longer notify those listeners. Any native or system-wide resources it maintains should be released, including threads, files, etc.

        It is an error to invoke any other methods on this object once dispose() has been called. Note, however, that there is no guarantee about behavior in that case.

        Afterwards, references to this object may still exist elsewhere, preventing its garbage collection. But it's formally dead, and shouldn't be keeping any other objects alive. Therefore, this method should null out any references to other objects that this object contained.

        Specified by:
        dispose in interface Base
      • handleError

        public void handleError​(Base item,
                                java.lang.String message,
                                JmriException e,
                                org.slf4j.Logger log)
                         throws JmriException
        Description copied from interface: MaleSocket
        Handle an error that has happened during execution or evaluation of this item.
        Specified by:
        handleError in interface MaleSocket
        Parameters:
        item - the item that had the error
        message - the error message
        e - the exception that has happened
        log - the logger
        Throws:
        JmriException - if the male socket is configured to throw an exception
      • handleError

        public void handleError​(Base item,
                                java.lang.String message,
                                java.util.List<java.lang.String> messageList,
                                JmriException e,
                                org.slf4j.Logger log)
                         throws JmriException
        Description copied from interface: MaleSocket
        Handle an error that has happened during execution or evaluation of this item.
        Specified by:
        handleError in interface MaleSocket
        Parameters:
        item - the item that had the error
        message - the error message
        messageList - a list of error messages
        e - the exception that has happened
        log - the logger
        Throws:
        JmriException - if the male socket is configured to throw an exception
      • handleError

        public void handleError​(Base item,
                                java.lang.String message,
                                java.lang.RuntimeException e,
                                org.slf4j.Logger log)
                         throws JmriException
        Description copied from interface: MaleSocket
        Handle an error that has happened during execution or evaluation of this item.
        Specified by:
        handleError in interface MaleSocket
        Parameters:
        item - the item that had the error
        message - the error message
        e - the exception that has happened
        log - the logger
        Throws:
        JmriException - if the male socket is configured to throw an exception
      • hasChild

        public boolean hasChild​(@Nonnull
                                Base b)
        Description copied from interface: Base
        Does this item has the child b?
        Specified by:
        hasChild in interface Base
        Parameters:
        b - the child
        Returns:
        true if this item has the child b, false otherwise
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object