Class DefaultCatalogTreeManager

All Implemented Interfaces:
PropertyChangeListener, VetoableChangeListener, EventListener, PropertyChangeFirer, PropertyChangeProvider, SilenceablePropertyChangeProvider, VetoableChangeFirer, VetoableChangeProvider, CatalogTreeManager, Manager<CatalogTree>

Provide the concrete implementation for the Internal CatalogTree Manager.

Control of the systemName is internal so the more casual approach like that of SignalHeadManager is used rather than the ProxyManager style.

  • Constructor Details

  • Method Details

    • registerSelf

      protected void registerSelf()
      Override parent method to not register this object to be stored automatically as part of the general storage mechanism.
      Overrides:
      registerSelf in class AbstractManager<CatalogTree>
    • getXMLOrder

      public int getXMLOrder()
      Description copied from interface: Manager
      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<CatalogTree>
      Returns:
      write order for this Manager; larger is later.
    • typeLetter

      public char typeLetter()
      Bogus typeLetter
      Specified by:
      typeLetter in interface Manager<CatalogTree>
      Returns:
      The type letter for a specific implementation
    • getCatalogTree

      Description copied from interface: CatalogTreeManager
      Locate via user name, then system name if needed. If that fails, return null
      Specified by:
      getCatalogTree in interface CatalogTreeManager
      Parameters:
      name - CatalogTree object to locate
      Returns:
      null if no match found
    • getBySystemName

      Description copied from class: AbstractManager
      Locate an existing instance based on a system name.
      Specified by:
      getBySystemName in interface CatalogTreeManager
      Specified by:
      getBySystemName in interface Manager<CatalogTree>
      Overrides:
      getBySystemName in class AbstractManager<CatalogTree>
      Parameters:
      key - System Name of the required NamedBean
      Returns:
      requested NamedBean object or null if none exists
    • getByUserName

      Description copied from class: AbstractManager
      Locate an existing instance based on a user name.
      Specified by:
      getByUserName in interface CatalogTreeManager
      Specified by:
      getByUserName in interface Manager<CatalogTree>
      Overrides:
      getByUserName in class AbstractManager<CatalogTree>
      Parameters:
      key - System Name of the required NamedBean
      Returns:
      requested NamedBean object or null if none exists
    • newCatalogTree

      Provide CatalogTree by UserName, then SystemName, then creates if not found. Get a CatalogTree 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 CatalogTree object representing a given physical CatalogTree 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 CatalogTree object created; a valid system name must be provided
      • If both names are provided, the system name defines the hardware access of the desired CatalogTree, 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 CatalogTree objects when you should be looking them up.
      Specified by:
      newCatalogTree in interface CatalogTreeManager
      Parameters:
      systemName - system name for new CatalogTree
      userName - user name for new CatalogTree
      Returns:
      requested CatalogTree object (never null)
      Throws:
      IllegalArgumentException - if unable to create.
    • createNewCatalogTree

      Create a CatalogTree.

      Naming convention is:

         IF... - filter for image files from the file system
         SF... - filter for sound files from the file system
         TF... - filter for script files from the file system
         NF... - no filter for files from the file system
         IX... - index for image files stored in XML config file
         SX... - index for sound files stored in XML config file
         TX... - index for script files stored in XML config file
         NX... - index for files stored in XML config file
       
      Parameters:
      systemName - system name for catalog tree, never null/empty
      userName - user name for catalog tree
      Returns:
      the new catalog tree or
      Throws:
      IllegalArgumentException - if unable to create
    • getBeanTypeHandled

      @Nonnull public String getBeanTypeHandled(boolean plural)
      Description copied from interface: Manager
      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<CatalogTree>
      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

      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<CatalogTree>
      Returns:
      the class supported by this Manager.
    • storeImageIndex

      public void storeImageIndex()
      Specified by:
      storeImageIndex in interface CatalogTreeManager
    • loadImageIndex

      public void loadImageIndex()
      Load the index file, one time per session.
      Specified by:
      loadImageIndex in interface CatalogTreeManager
    • isIndexChanged

      public boolean isIndexChanged()
      Specified by:
      isIndexChanged in interface CatalogTreeManager
    • isIndexLoaded

      public boolean isIndexLoaded()
      Specified by:
      isIndexLoaded in interface CatalogTreeManager
    • indexChanged

      public final void indexChanged(boolean changed)
      Specified by:
      indexChanged in interface CatalogTreeManager