Package jmri

Interface SensorManager

    • Method Detail

      • provideSensor

        @Nonnull
        Sensor provideSensor​(@Nonnull
                             java.lang.String name)
                      throws java.lang.IllegalArgumentException
        Get the Sensor with the user name, then system name if needed; if that fails, create a new Sensor. If the name is a valid system name, it will be used for the new Sensor. Otherwise, the Manager.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.

        Parameters:
        name - User name, system name, or address which can be promoted to system name
        Returns:
        Never null
        Throws:
        java.lang.IllegalArgumentException - if Sensor doesn't already exist and the manager cannot create the Sensor due to an illegal name or name that can't be parsed.
      • provide

        default Sensor provide​(@Nonnull
                               java.lang.String name)
                        throws java.lang.IllegalArgumentException
        Get an existing instance via user name, then system name; if no matching instance is found, create a new NameBean from the system name.

        If the name is a valid system name, it will be used for the new NamedBean. Otherwise, the Manager.makeSystemName(java.lang.String) method will attempt to turn it into a valid system name which the manager will attempt to use. If that fails, an exception is thrown.

        This is similar to the specific methods found in certain type-specific managers: TurnoutManager.provideTurnout(java.lang.String), provideSensor(java.lang.String), et al. Those might be more mnemonic; this one is more generic. Neither is preferred nor deprecated; use your choice.

        Specified by:
        provide in interface ProvidingManager<Sensor>
        Parameters:
        name - User name, system name, or address which can be promoted to system name
        Returns:
        Never null
        Throws:
        java.lang.IllegalArgumentException - if NamedBean doesn't already exist and the manager cannot create it due to an illegal name or name that can't be parsed.
      • getSensor

        @CheckReturnValue
        @CheckForNull
        Sensor getSensor​(@Nonnull
                         java.lang.String name)
        Get an existing Sensor or return null if it doesn't exist. Locates via user name, then system name if needed.
        Parameters:
        name - User name or system name to match
        Returns:
        null if no match found
      • dispose

        void dispose()
        Description copied from interface: Manager
        Free resources when no longer used. Specifically, remove all references to and from this object, so it can be garbage-collected.
        Specified by:
        dispose in interface Manager<Sensor>
      • newSensor

        @Nonnull
        Sensor newSensor​(@Nonnull
                         java.lang.String systemName,
                         @CheckForNull
                         java.lang.String userName)
                  throws java.lang.IllegalArgumentException
        Return a Sensor with the specified user or system name. Return Sensor by UserName else provide by SystemName.

        Note that two calls with the same arguments will get the same instance; there is only one Sensor 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 Sensor object created; a valid system name must be provided
        • If both names are provided, the system name defines the hardware access of the desired sensor, 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.
        Parameters:
        systemName - the desired system name
        userName - the desired user name
        Returns:
        requested Sensor object
        Throws:
        java.lang.IllegalArgumentException - if cannot create the Sensor due to e.g. an illegal name or name that can't be parsed.
      • updateAll

        void updateAll()
        Requests status of all layout sensors under this Sensor Manager.

        This method may be invoked whenever the status of sensors needs to be updated from the layout, for example, when an XML configuration file is read in.

        This method only needs be implemented in system-specific Sensor Managers where readout of Sensor status from the layout is possible.

      • createSystemName

        @Nonnull
        java.lang.String createSystemName​(@Nonnull
                                          java.lang.String curAddress,
                                          @Nonnull
                                          java.lang.String prefix)
                                   throws JmriException
        Get a system name for a given hardware address and system prefix.
        Parameters:
        curAddress - desired hardware address
        prefix - system prefix used in system name
        Returns:
        the complete sensor system name for the prefix and current address
        Throws:
        JmriException - if unable to create a system name for the given address, possibly due to invalid address format
      • isPullResistanceConfigurable

        boolean isPullResistanceConfigurable()
        Do the sensor objects provided by this manager support configuring an internal pullup or pull down resistor?
        Returns:
        true if pull up/pull down configuration is supported.
      • getEntryToolTip

        java.lang.String getEntryToolTip()
        Provide a manager-specific tooltip for the Add new item beantable pane.
        Specified by:
        getEntryToolTip in interface Manager<Sensor>
        Returns:
        the tool tip or null to disable the tool tip