org.crosswire.jsword.book.install

## Class InstallManager

- java.lang.Object
- - org.crosswire.jsword.book.install.InstallManager

-     public final class InstallManager
      extends Object

  A manager to abstract out the non-view specific book installation tasks.
  Author:
    Joe Walker, DM Smith
  See Also:
    `The GNU Lesser General Public License for details.`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private Map<String,Class<InstallerFactory>>` | `factories` The map of installer factories
    `private Map<String,Installer>` | `installers` The list of discovered installers
    `private List<InstallerListener>` | `listeners` The list of listeners
    `private static org.slf4j.Logger` | `log` The log stream
    `private static String` | `PREFIX` The prefix for the keys in the installer property file.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `InstallManager()` Simple ctor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addInstaller(String name, Installer installer)` Add an installer to our list of installers
    `void` | `addInstallerListener(InstallerListener li)` Remove a BibleListener from our list of listeners
    `protected void` | `fireInstallersChanged(Object source, Installer installer, boolean added)` Kick of an event sequence
    `String` | `getFactoryNameForInstaller(Installer installer)` Find the registered name of the InstallerFactory that created the given installer.
    `Installer` | `getInstaller(String name)` Find an installer by name
    `InstallerFactory` | `getInstallerFactory(String name)` Find the InstallerFactory associated with the given name.
    `Set<String>` | `getInstallerFactoryNames()` The names of all the known InstallerFactories
    `String` | `getInstallerNameForInstaller(Installer installer)` Find the registered name of the Installer.
    `Map<String,Installer>` | `getInstallers()` Accessor for the known installers
    `private void` | `internalAdd(String name, Installer installer)` InstallManager is a Map, however we demand that both names and installers are unique (so we can lookup a name from an installer)
    `void` | `removeBooksListener(InstallerListener li)` Add a BibleListener to our list of listeners
    `void` | `removeInstaller(String name)` Remove an installer from our list
    `void` | `save()` Save all properties to the user's local area.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### PREFIX

          private static final String PREFIX

      The prefix for the keys in the installer property file.
      See Also:
        Constant Field Values

    - #### factories

          private Map<String,Class<InstallerFactory>> factories

      The map of installer factories

    - #### installers

          private Map<String,Installer> installers

      The list of discovered installers

    - #### listeners

          private List<InstallerListener> listeners

      The list of listeners

    - #### log

          private static final org.slf4j.Logger log

      The log stream

  - ### Constructor Detail

    - #### InstallManager

          public InstallManager()

      Simple ctor

  - ### Method Detail

    - #### save

          public void save()

      Save all properties to the user's local area. Uses the same property name so as to override it.

    - #### getInstallerFactoryNames

          public Set<String> getInstallerFactoryNames()

      The names of all the known InstallerFactories
      Returns:
        the set of all installer factory names

    - #### getFactoryNameForInstaller

          public String getFactoryNameForInstaller(Installer installer)

      Find the registered name of the InstallerFactory that created the given installer. There isn't a nice way to do this right now so we just do a trawl through all the known factories looking!
      Parameters:
        `installer` - the installer
      Returns:
        the name of the factory for the installer

    - #### getInstallerNameForInstaller

          public String getInstallerNameForInstaller(Installer installer)

      Find the registered name of the Installer. There isn't a nice way to do this right now so we just do a trawl through all the known factories looking!
      Parameters:
        `installer` - the installer
      Returns:
        the name of the installer

    - #### getInstallerFactory

          public InstallerFactory getInstallerFactory(String name)

      Find the InstallerFactory associated with the given name.
      Parameters:
        `name` - The InstallerFactory name to look-up
      Returns:
        The found InstallerFactory or null if the name was not found

    - #### getInstallers

          public Map<String,Installer> getInstallers()

      Accessor for the known installers
      Returns:
        a map of named installers

    - #### getInstaller

          public Installer getInstaller(String name)

      Find an installer by name
      Parameters:
        `name` - The name of the installer to find
      Returns:
        The installer or null if none was found by the given name

    - #### addInstaller

          public void addInstaller(String name,
                          Installer installer)

      Add an installer to our list of installers
      Parameters:
        `name` - The name by which we reference the installer
        `installer` - The installer to add

    - #### internalAdd

          private void internalAdd(String name,
                         Installer installer)

      InstallManager is a Map, however we demand that both names and installers are unique (so we can lookup a name from an installer)
      Parameters:
        `name` - The name of the new installer
        `installer` - The installer to associate with the given name

    - #### removeInstaller

          public void removeInstaller(String name)

      Remove an installer from our list
      Parameters:
        `name` - The name by which this installer is referenced

    - #### addInstallerListener

          public void addInstallerListener(InstallerListener li)

      Remove a BibleListener from our list of listeners
      Parameters:
        `li` - The old listener

    - #### removeBooksListener

          public void removeBooksListener(InstallerListener li)

      Add a BibleListener to our list of listeners
      Parameters:
        `li` - The new listener

    - #### fireInstallersChanged

          protected void fireInstallersChanged(Object source,
                                   Installer installer,
                                   boolean added)

      Kick of an event sequence
      Parameters:
        `source` - The event source
        `installer` - The meta-data of the changed Bible
        `added` - Is it added?