Package jmri

Interface ReporterManager

    • Method Detail

      • provideReporter

        @Nonnull
        Reporter provideReporter​(@Nonnull
                                 java.lang.String name)
                          throws java.lang.IllegalArgumentException
        Locate via user name, then system name if needed. If that fails, create a new Reporter. If the name is a valid system name, it will be used for the new Reporter. Otherwise, the makeSystemName 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 Reporter doesn't already exist and the manager cannot create the Reporter due to an illegal name or name that can't be parsed.
      • provide

        @Nonnull
        default Reporter 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), SensorManager.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<Reporter>
        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.
      • getReporter

        @CheckForNull
        Reporter getReporter​(@Nonnull
                             java.lang.String name)
        Locate via user name, then system name if needed. If that fails, return null
        Parameters:
        name - User name or system name to match
        Returns:
        null if no match found
      • getByDisplayName

        @CheckForNull
        Reporter getByDisplayName​(@Nonnull
                                  java.lang.String userName)
        Locate an instance based on a user name, or if that fails, by system name. Returns null if no instance already exists.
        Parameters:
        userName - the name to locate
        Returns:
        requested Reporter object or null if none exists
      • newReporter

        @Nonnull
        Reporter newReporter​(@Nonnull
                             java.lang.String systemName,
                             java.lang.String userName)
                      throws java.lang.IllegalArgumentException
        Return an instance with the specified system and user names.

        Note that two calls with the same arguments will get the same instance; there is only one Reporter object representing a given physical Reporter 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 Reporter object created; a valid system name must be provided
        • If both names are provided, the system name defines the hardware access of the desired Reporter, 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 Reporters when you should be looking them up.
        Parameters:
        systemName - the system name
        userName - the user name
        Returns:
        requested Reporter object (never null)
        Throws:
        java.lang.IllegalArgumentException - if cannot create the Reporter due to an illegal name or name that can't be parsed.
      • 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, excluding Bean type-letter..
        Returns:
        the complete Reporter 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
      • getEntryToolTip

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