org.pentaho.packageManagement
Class PackageManager

java.lang.Object
  extended by org.pentaho.packageManagement.PackageManager
Direct Known Subclasses:
DefaultPackageManager

public abstract class PackageManager
extends Object

Abstract base class for package managers. Contains methods to manage the location of the central package repository, the home directory for installing packages, the name and version of the base software system and a http proxy.

Version:
$Revision: 51095 $
Author:
Mark Hall (mhall{[at]}pentaho{[dot]}com)

Field Summary
protected  boolean m_authenticatorSet
           
protected  String m_baseSystemName
          The name of the base system being managed by this package manager
protected  Object m_baseSystemVersion
          The version of the base system being managed by this package manager
protected  Proxy m_httpProxy
          Proxy for http connections
protected  File m_packageHome
          The local directory for storing the user's installed packages
protected  URL m_packageRepository
          The URL to the global package meta data repository
protected  String m_proxyPassword
          The password for the proxy
protected  String m_proxyUsername
          The user name for the proxy
 
Constructor Summary
PackageManager()
           
 
Method Summary
static PackageManager create()
           
 void establishProxy()
          Tries to configure a Proxy object for use in an Authenticator if there is a proxy defined by the properties http.proxyHost and http.proxyPort, and if the user has set values for the properties (note, these are not standard java properties) http.proxyUser and http.proxyPassword.
abstract  List<Dependency> getAllDependenciesForPackage(Package target, Map<String,List<Dependency>> conflicts)
          Gets a full list of packages (encapsulated in Dependency objects) that are required by directly and indirectly by the named target package.
abstract  List<Package> getAllPackages(PrintStream... progress)
          Get all packages that the system knows about (i.e.
abstract  List<Package> getAvailablePackages()
          Get a list of packages that are not currently installed.
 String getBaseSystemName()
          Get the name of the main software system for which we manage packages.
 Object getBaseSystemVersion()
          Get the current installed version of the main system for which we manage packages.
abstract  Package getInstalledPackageInfo(String packageName)
          Get package information on the named installed package.
abstract  List<Package> getInstalledPackages()
          Get a list of installed packages.
abstract  Package getPackageArchiveInfo(String packageArchivePath)
          Get package information from the supplied package archive file.
 File getPackageHome()
          Get the location (directory) of installed packages
 URL getPackageRepositoryURL()
          Get the URL to the repository of package meta data.
 Proxy getProxy()
          Get the proxy in use.
abstract  Package getRepositoryPackageInfo(String packageName)
          Get package information on the named package from the repository.
abstract  Package getRepositoryPackageInfo(String packageName, Object version)
          Get package information on the named package from the repository.
abstract  byte[] getRepositoryPackageMetaDataOnlyAsZip(PrintStream... progress)
          Gets an array of bytes containing a zip of all the repository meta data and supporting files.
abstract  List<Object> getRepositoryPackageVersions(String packageName)
          Get a list of available versions of the named package.
abstract  Package getURLPackageInfo(URL packageURL)
          Get package information on the package at the given URL.
abstract  String installPackageFromArchive(String packageArchivePath, PrintStream... progress)
          Install a package from an archive on the local file system.
abstract  void installPackageFromRepository(String packageName, Object version, PrintStream... progress)
          Install a package sourced from the repository.
abstract  String installPackageFromURL(URL packageURL, PrintStream... progress)
          Install a package sourced from a given URL.
abstract  void installPackages(List<Package> toInstall, PrintStream... progress)
          Installs all the packages in the supplied list.
 void setBaseSystemName(String baseS)
          Set the name of the main software system for which we manage packages.
 void setBaseSystemVersion(Object systemV)
          Set the current version of the base system for which we manage packages.
 void setPackageHome(File packageHome)
          Set the location (directory) of installed packages.
 void setPackageRepositoryURL(URL repositoryURL)
          Set the URL to the repository of package meta data.
 void setProxy(Proxy proxyToUse)
          Set a proxy to use for accessing the internet (default is no proxy).
 boolean setProxyAuthentication(URL urlToConnectTo)
          Sets an new default Authenticator that will return the values set through setProxyUsername() and setProxyPassword() (if applicable).
 void setProxyPassword(String proxyPassword)
          Set the password for authentication with the proxy.
 void setProxyUsername(String proxyUsername)
          Set the user name for authentication with the proxy.
abstract  void uninstallPackage(String packageName, PrintStream... progress)
          Uninstall a package.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_packageHome

protected File m_packageHome
The local directory for storing the user's installed packages


m_packageRepository

protected URL m_packageRepository
The URL to the global package meta data repository


m_baseSystemName

protected String m_baseSystemName
The name of the base system being managed by this package manager


m_baseSystemVersion

protected Object m_baseSystemVersion
The version of the base system being managed by this package manager


m_httpProxy

protected Proxy m_httpProxy
Proxy for http connections


m_proxyUsername

protected String m_proxyUsername
The user name for the proxy


m_proxyPassword

protected String m_proxyPassword
The password for the proxy


m_authenticatorSet

protected boolean m_authenticatorSet
Constructor Detail

PackageManager

public PackageManager()
Method Detail

create

public static PackageManager create()

establishProxy

public void establishProxy()
Tries to configure a Proxy object for use in an Authenticator if there is a proxy defined by the properties http.proxyHost and http.proxyPort, and if the user has set values for the properties (note, these are not standard java properties) http.proxyUser and http.proxyPassword.


setProxyAuthentication

public boolean setProxyAuthentication(URL urlToConnectTo)
Sets an new default Authenticator that will return the values set through setProxyUsername() and setProxyPassword() (if applicable).

Returns:
true if a proxy is to be used and (if applicable) the Authenticator was set successfully.

setPackageHome

public void setPackageHome(File packageHome)
Set the location (directory) of installed packages.

Parameters:
packageHome - the file system location of installed packages.

getPackageHome

public File getPackageHome()
Get the location (directory) of installed packages

Returns:
the directory containing installed packages.

setBaseSystemName

public void setBaseSystemName(String baseS)
Set the name of the main software system for which we manage packages.

Parameters:
baseS - the name of the base software system

getBaseSystemName

public String getBaseSystemName()
Get the name of the main software system for which we manage packages.

Returns:
the name of the base software system.

setBaseSystemVersion

public void setBaseSystemVersion(Object systemV)
Set the current version of the base system for which we manage packages.

Parameters:
systemV - the current version of the main software system.

getBaseSystemVersion

public Object getBaseSystemVersion()
Get the current installed version of the main system for which we manage packages.

Returns:
the installed version of the base system.

setPackageRepositoryURL

public void setPackageRepositoryURL(URL repositoryURL)
Set the URL to the repository of package meta data.

Parameters:
repositoryURL - the URL to the repository of package meta data.

getPackageRepositoryURL

public URL getPackageRepositoryURL()
Get the URL to the repository of package meta data.

Returns:
the URL to the repository of package meta data.

setProxy

public void setProxy(Proxy proxyToUse)
Set a proxy to use for accessing the internet (default is no proxy).

Parameters:
proxyToUse - a proxy to use.

getProxy

public Proxy getProxy()
Get the proxy in use.

Returns:
the proxy in use or null if no proxy is being used.

setProxyUsername

public void setProxyUsername(String proxyUsername)
Set the user name for authentication with the proxy.

Parameters:
proxyUsername - the user name to use for proxy authentication.

setProxyPassword

public void setProxyPassword(String proxyPassword)
Set the password for authentication with the proxy.

Parameters:
proxyPassword - the password to use for proxy authentication.

getRepositoryPackageMetaDataOnlyAsZip

public abstract byte[] getRepositoryPackageMetaDataOnlyAsZip(PrintStream... progress)
                                                      throws Exception
Gets an array of bytes containing a zip of all the repository meta data and supporting files. Does *not* contain any package archives etc., only a snapshot of the meta data. Could be used by clients to establish a cache of meta data.

Parameters:
progress - optional varargs parameter, that, if supplied, is expected to contain one or more PrintStream objects to write progress to.
Returns:
a zip compressed array of bytes.
Throws:
Exception - if the repository meta data can't be returned as a zip

getPackageArchiveInfo

public abstract Package getPackageArchiveInfo(String packageArchivePath)
                                       throws Exception
Get package information from the supplied package archive file.

Parameters:
packageArchivePath - the path to the package archive file
Returns:
a Package object encapsulating the package meta data.
Throws:
Exception - if the package meta data can't be retrieved.

getInstalledPackageInfo

public abstract Package getInstalledPackageInfo(String packageName)
                                         throws Exception
Get package information on the named installed package.

Parameters:
packageName - the name of the package to get information about.
Returns:
a Package object encapsulating the package meta data or null if the package is not installed.
Throws:
Exception - if the package meta data can't be retrieved.

getRepositoryPackageInfo

public abstract Package getRepositoryPackageInfo(String packageName)
                                          throws Exception
Get package information on the named package from the repository. If multiple versions of the package are available, it assumes that the most recent is required.

Parameters:
packageName - the name of the package to get information about.
Returns:
a Package object encapsulating the package meta data.
Throws:
Exception - if the package meta data can't be retrieved.

getRepositoryPackageInfo

public abstract Package getRepositoryPackageInfo(String packageName,
                                                 Object version)
                                          throws Exception
Get package information on the named package from the repository.

Parameters:
packageName - the name of the package to get information about.
version - the version of the package to retrieve (may be null if not applicable).
Returns:
a Package object encapsulating the package meta data.
Throws:
Exception - if the package meta data can't be retrieved.

getRepositoryPackageVersions

public abstract List<Object> getRepositoryPackageVersions(String packageName)
                                                   throws Exception
Get a list of available versions of the named package.

Parameters:
packageName - the name of the package to get versions.
Returns:
a list of available versions (or null if not applicable)
Throws:
Exception - if something goes wrong while trying to retrieve the list of versions.

getURLPackageInfo

public abstract Package getURLPackageInfo(URL packageURL)
                                   throws Exception
Get package information on the package at the given URL.

Parameters:
packageURL - the URL to the package.
Returns:
a Package object encapsulating the package meta data
Throws:
Exception - if the package meta data can't be retrieved.

installPackageFromArchive

public abstract String installPackageFromArchive(String packageArchivePath,
                                                 PrintStream... progress)
                                          throws Exception
Install a package from an archive on the local file system.

Parameters:
packageArchivePath - the path to the package archive file.
progress - optional varargs parameter, that, if supplied, is expected to contain one or more PrintStream objects to write progress to.
Returns:
the name of the package installed
Throws:
Exception - if the package can't be installed for some reason.

installPackageFromRepository

public abstract void installPackageFromRepository(String packageName,
                                                  Object version,
                                                  PrintStream... progress)
                                           throws Exception
Install a package sourced from the repository.

Parameters:
packageName - the name of the package to install
version - the version of the package to install (may be null if not applicable).
progress - optional varargs parameter, that, if supplied, is expected to contain one or more PrintStream objects to write progress to.
Throws:
Exception - if the package can't be installed for some reason.

installPackageFromURL

public abstract String installPackageFromURL(URL packageURL,
                                             PrintStream... progress)
                                      throws Exception
Install a package sourced from a given URL.

Parameters:
packageURL - the URL to the package.
progress - optional varargs parameter, that, if supplied, is expected to contain one or more PrintStream objects to write progress to.
Returns:
the name of the package installed
Throws:
Exception - if the package can't be installed for some reason.

installPackages

public abstract void installPackages(List<Package> toInstall,
                                     PrintStream... progress)
                              throws Exception
Installs all the packages in the supplied list.

Parameters:
toInstall - a list of Packages to install.
progress - optional varargs parameter, that, if supplied, is expected to contain one or more PrintStream objects to write progress to.
Throws:
Exception - if something goes wrong during the installation process.

uninstallPackage

public abstract void uninstallPackage(String packageName,
                                      PrintStream... progress)
                               throws Exception
Uninstall a package.

Parameters:
packageName - the package to uninstall.
progress - optional varargs parameter, that, if supplied, is expected to contain one or more PrintStream objects to write progress to.
Throws:
Exception - if the named package could not be removed for some reason.

getInstalledPackages

public abstract List<Package> getInstalledPackages()
                                            throws Exception
Get a list of installed packages.

Returns:
a list of installed packages.
Throws:
Exception - if a list of packages can't be determined.

getAllPackages

public abstract List<Package> getAllPackages(PrintStream... progress)
                                      throws Exception
Get all packages that the system knows about (i.e. all packages contained in the repository).

Parameters:
progress - optional varargs parameter, that, if supplied is expected to contain one or more PrintStream objects to write progress to.
Returns:
a list of all packages.
Throws:
Exception - if a list of packages can't be determined.

getAvailablePackages

public abstract List<Package> getAvailablePackages()
                                            throws Exception
Get a list of packages that are not currently installed.

Returns:
a list of packages that are not currently installed.
Throws:
Exception - if a list of packages can't be determined.

getAllDependenciesForPackage

public abstract List<Dependency> getAllDependenciesForPackage(Package target,
                                                              Map<String,List<Dependency>> conflicts)
                                                       throws Exception
Gets a full list of packages (encapsulated in Dependency objects) that are required by directly and indirectly by the named target package. Also builds a Map of any packages that are required by more than one package and where there is a conflict of some sort (e.g. multiple conflicting versions). The keys of this map are package names (strings), and each associated value is a list of Dependency objects.

Parameters:
target - the package for which a list of dependencies is required.
conflicts - will hold any conflicts that are discovered while building the full dependency list.
Returns:
a list of packages that are directly and indirectly required by the named target package.
Throws:
Exception - if a problem occurs while building the dependency list.


Copyright © 2013. All Rights Reserved.