Package weka.core.packageManagement
Class DefaultPackageManager
java.lang.Object
weka.core.packageManagement.PackageManager
weka.core.packageManagement.DefaultPackageManager
A concrete implementation of PackageManager that uses Java properties
files/class to manage package meta data. Assumes that meta data for
individual packages is stored on the central repository (accessible via http)
in properties files that live in a subdirectory with the same name as the
package. Furthermore, each property file is assumed to be named as the
version number of the package in question with a ".props" extension. A
"Latest.props" file should exist for each package and should always hold meta
data on the latest version of a package.
- Version:
- $Revision: 52515 $
- Author:
- Mark Hall (mhall{[at]}pentaho{[dot]}com)
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
applySettings
(Settings settings) Apply settings.static void
deleteDir
(File dir, PrintStream... progress) 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.getAllPackages
(PrintStream... progress) Get all packages that the system knows about (i.e.Get a list of packages that are not currently installed.Get the default settings for the default package managergetInstalledPackageInfo
(String packageName) Get package information on the named installed package.Get a list of installed packages.getPackageArchiveInfo
(String packageArchivePath) Get package information from the supplied package archive file.getRepositoryPackageInfo
(String packageName) Get package information on the named package from the repository.getRepositoryPackageInfo
(String packageName, Object version) Get package information on the named package from the repository.byte[]
getRepositoryPackageMetaDataOnlyAsZip
(PrintStream... progress) Gets an array of bytes containing a zip of all the repository meta data and supporting files.byte[]
getRepositoryPackageMetaDataOnlyAsZipLegacy
(PrintStream... progress) Gets an array of bytes containing a zip of all the repository meta data and supporting files using the legacy approach.getRepositoryPackageVersions
(String packageName) Get a list of available versions of the named package.getURLPackageInfo
(URL packageURL) Get package information on the package at the given URL.installPackageFromArchive
(String packageArchivePath, PrintStream... progress) Install a package from an archive on the local file system.void
installPackageFromRepository
(String packageName, Object version, PrintStream... progress) Install a package sourced from the repository.installPackageFromURL
(URL packageURL, PrintStream... progress) Install a package sourced from a given URL.void
installPackages
(List<Package> toInstall, PrintStream... progress) Installs all the packages in the supplied list.static void
void
uninstallPackage
(String packageName, PrintStream... progress) Uninstall a package.Methods inherited from class weka.core.packageManagement.PackageManager
create, establishProxy, getBaseSystemName, getBaseSystemVersion, getPackageHome, getPackageRepositoryURL, getProxy, setBaseSystemName, setBaseSystemVersion, setPackageHome, setPackageRepositoryURL, setProxy, setProxyAuthentication, setProxyPassword, setProxyUsername
-
Constructor Details
-
DefaultPackageManager
public DefaultPackageManager()Constructor
-
-
Method Details
-
getDefaultSettings
Get the default settings for the default package manager- Overrides:
getDefaultSettings
in classPackageManager
- Returns:
- the default settings
-
applySettings
Apply settings.- Overrides:
applySettings
in classPackageManager
- Parameters:
settings
- the settings to apply
-
getURLPackageInfo
Get package information on the package at the given URL.- Specified by:
getURLPackageInfo
in classPackageManager
- 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.
-
getRepositoryPackageInfo
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.- Specified by:
getRepositoryPackageInfo
in classPackageManager
- 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.
-
getRepositoryPackageVersions
Get a list of available versions of the named package.- Specified by:
getRepositoryPackageVersions
in classPackageManager
- 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.
-
getRepositoryPackageInfo
Get package information on the named package from the repository.- Specified by:
getRepositoryPackageInfo
in classPackageManager
- 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.
-
getPackageArchiveInfo
Get package information from the supplied package archive file.- Specified by:
getPackageArchiveInfo
in classPackageManager
- 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
Get package information on the named installed package.- Specified by:
getInstalledPackageInfo
in classPackageManager
- 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.
-
deleteDir
- Throws:
Exception
-
uninstallPackage
Uninstall a package.- Specified by:
uninstallPackage
in classPackageManager
- 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.
-
installPackageFromArchive
public String installPackageFromArchive(String packageArchivePath, PrintStream... progress) throws Exception Install a package from an archive on the local file system.- Specified by:
installPackageFromArchive
in classPackageManager
- 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.
-
installPackages
Installs all the packages in the supplied list.- Specified by:
installPackages
in classPackageManager
- 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.
-
getAllDependenciesForPackage
public List<Dependency> getAllDependenciesForPackage(Package target, Map<String, List<Dependency>> conflicts) throws ExceptionGets 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.- Specified by:
getAllDependenciesForPackage
in classPackageManager
- 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.
-
installPackageFromRepository
public void installPackageFromRepository(String packageName, Object version, PrintStream... progress) throws Exception Install a package sourced from the repository.- Specified by:
installPackageFromRepository
in classPackageManager
- Parameters:
packageName
- the name of the package to installversion
- 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
Install a package sourced from a given URL.- Specified by:
installPackageFromURL
in classPackageManager
- 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.
-
getRepositoryPackageMetaDataOnlyAsZip
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.- Specified by:
getRepositoryPackageMetaDataOnlyAsZip
in classPackageManager
- 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
-
getRepositoryPackageMetaDataOnlyAsZipLegacy
Gets an array of bytes containing a zip of all the repository meta data and supporting files using the legacy approach. 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.- Returns:
- a zip compressed array of bytes.
- Throws:
Exception
-
getAllPackages
Get all packages that the system knows about (i.e. all packages contained in the repository).- Specified by:
getAllPackages
in classPackageManager
- 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
Get a list of packages that are not currently installed.- Specified by:
getAvailablePackages
in classPackageManager
- Returns:
- a list of packages that are not currently installed.
- Throws:
Exception
- if a list of packages can't be determined.
-
getInstalledPackages
Get a list of installed packages.- Specified by:
getInstalledPackages
in classPackageManager
- Returns:
- a list of installed packages.
- Throws:
Exception
- if a list of packages can't be determined.
-
main
-