Package jmri.managers

Class AbstractTurnoutManager

    • Field Detail

      • pcl

        final java.beans.PropertyChangeListener pcl
    • Method Detail

      • init

        final void init()
      • getXMLOrder

        public int 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:
        getXMLOrder in interface Manager<Turnout>
        Returns:
        write order for this Manager; larger is later.
      • getTurnout

        @CheckForNull
        public Turnout getTurnout​(@Nonnull
                                  java.lang.String name)
        Get an existing Turnout or return null if it doesn't exist. Locates via user name, then system name if needed.
        Specified by:
        getTurnout in interface TurnoutManager
        Parameters:
        name - User name or system name to match
        Returns:
        null if no match found
      • newTurnout

        @Nonnull
        public Turnout newTurnout​(@Nonnull
                                  java.lang.String systemName,
                                  @CheckForNull
                                  java.lang.String userName)
                           throws java.lang.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.
        Note that it is possible to make an inconsistent request if both addresses are provided, but the given values are associated with different objects. This is a problem, and we don't have a good solution except to issue warnings. This will mostly happen if you're creating Turnouts when you should be looking them up.
        Specified by:
        newTurnout in interface TurnoutManager
        Parameters:
        systemName - the system name
        userName - the user name (optional)
        Returns:
        requested Turnout object, newly created if needed
        Throws:
        java.lang.IllegalArgumentException - if cannot create the Turnout; likely due to an illegal name or name that cannot be parsed
      • getBeanTypeHandled

        @Nonnull
        public java.lang.String getBeanTypeHandled​(boolean plural)
        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:
        getBeanTypeHandled in interface Manager<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

        public java.lang.Class<TurnoutgetNamedBeanClass()
        Get the class of NamedBean supported by this Manager. This should be the generic class used in the Manager's class declaration.
        Specified by:
        getNamedBeanClass in interface Manager<Turnout>
        Returns:
        the class supported by this Manager.
      • getClosedText

        @Nonnull
        public java.lang.String 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:
        getClosedText in interface TurnoutManager
        Returns:
        the textual representation of Turnout.CLOSED
      • getThrownText

        @Nonnull
        public java.lang.String 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:
        getThrownText in interface TurnoutManager
        Returns:
        the textual representation of Turnout.THROWN
      • askNumControlBits

        public int askNumControlBits​(@Nonnull
                                     java.lang.String systemName)
        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:
        askNumControlBits in interface TurnoutManager
        Parameters:
        systemName - the turnout system name
        Returns:
        the bit length for turnout control
      • askControlType

        public int askControlType​(@Nonnull
                                  java.lang.String systemName)
        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:
        askControlType in interface TurnoutManager
        Parameters:
        systemName - the turnout system name
        Returns:
        0 for steady state or the number of seconds for a pulse control
      • createNewTurnout

        @Nonnull
        protected abstract Turnout createNewTurnout​(@Nonnull
                                                    java.lang.String systemName,
                                                    java.lang.String userName)
                                             throws java.lang.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 Turnout
        userName - the user name to use for the new Turnout
        Returns:
        the new Turnout or
        Throws:
        java.lang.IllegalArgumentException - if unsuccessful
      • createSystemName

        @Nonnull
        public java.lang.String createSystemName​(@Nonnull
                                                 java.lang.String curAddress,
                                                 @Nonnull
                                                 java.lang.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:
        createSystemName in interface TurnoutManager
        Overrides:
        createSystemName in class AbstractManager<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.
      • getEntryToolTip

        public java.lang.String getEntryToolTip()
        Get a manager-specific tool tip for adding an entry to the manager.
        Specified by:
        getEntryToolTip in interface Manager<Turnout>
        Returns:
        the tool tip or null to disable the tool tip
      • getOutputInterval

        public int getOutputInterval()
        Get the Interval (in ms) to wait between output commands. Configured in AdapterConfig, stored in memo.
        Specified by:
        getOutputInterval in interface TurnoutManager
        Returns:
        the (Turnout) Output Interval in milliseconds
      • setOutputInterval

        public void setOutputInterval​(int newInterval)
        Set the Interval (in ms) to wait between output commands.
        Specified by:
        setOutputInterval in interface TurnoutManager
        Parameters:
        newInterval - the new Output Interval in Milliseconds
      • outputIntervalEnds

        @Nonnull
        public java.time.LocalDateTime outputIntervalEnds()
        Get end time of latest OutputInterval, calculated from the current time.
        Specified by:
        outputIntervalEnds in interface TurnoutManager
        Returns:
        end time in milliseconds or current time if no interval was set or timer has completed