# Class OperationFactory

java.lang.Object
org.eclipse.equinox.p2.operations.OperationFactory

public class OperationFactory extends Object
OperationFactory provides a set of helpers to simplify dealing with the running installation. Among other things, it simplifies the installation, un-installation and update. If the system you are trying to modify is not the running one, you need to directly use the various subclass of `ProfileChangeOperation`.

Since:
  2.1

## Constructor Summary

Constructors
Constructor
Description
`OperationFactory()`

## Method Summary

Modifier and Type
Method
Description
`InstallOperation`
`createInstallOperation(Collection<? extends IVersionedId> toInstall, Collection<URI> repos, IProgressMonitor monitor)`
This factory method creates an `InstallOperation` to install all the elements listed from the specified repositories.
`SynchronizeOperation`
`createSynchronizeOperation(Collection<? extends IVersionedId> toInstall, Collection<URI> repos, IProgressMonitor monitor)`
This factory method creates an `SynchronizeOperation` that will cause the current installation to exclusively contain the elements listed once executed.
`UninstallOperation`
`createUninstallOperation(Collection<? extends IVersionedId> toUninstall, Collection<URI> repos, IProgressMonitor monitor)`
Create an `UninstallOperation` that will uninstall the listed elements from the running instance.
`UpdateOperation`
`createUpdateOperation(Collection<? extends IVersionedId> toUpdate, Collection<URI> repos, IProgressMonitor monitor)`
Create an `UpdateOperation` that will update the elements specified.
`IQueryResult<IInstallableUnit>`
`listInstalledElements(boolean rootsOnly, IProgressMonitor monitor)`
Returns the `IInstallableUnit`s that are installed in the running instance of Eclipse.

### Methods inherited from class Object

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

## Constructor Details

### OperationFactory

public OperationFactory()

## Method Details

### createInstallOperation

public InstallOperation createInstallOperation(Collection<? extends IVersionedId> toInstall, Collection<URI> repos, IProgressMonitor monitor) throws ProvisionException
This factory method creates an `InstallOperation` to install all the elements listed from the specified repositories.

Parameters:
  `toInstall` - the elements to install. This can not be null.
  `repos` - the repositories to install the elements from. If null is passed, it will use all previously registered repositories.
  `monitor` - the progress monitor
Returns:
  an operation to install
Throws:
  `ProvisionException`

### createUninstallOperation

public UninstallOperation createUninstallOperation(Collection<? extends IVersionedId> toUninstall, Collection<URI> repos, IProgressMonitor monitor) throws ProvisionException
Create an `UninstallOperation` that will uninstall the listed elements from the running instance.

Parameters:
  `toUninstall` - the elements to uninstall. This can not be null.
  `repos` - the repositories to install the elements from. If null is passed, it will use all previously registered repositories.
  `monitor` - the progress monitor
Returns:
  an operation to uninstall
Throws:
  `ProvisionException`

### listInstalledElements

public IQueryResult<IInstallableUnit> listInstalledElements(boolean rootsOnly, IProgressMonitor monitor)
Returns the `IInstallableUnit`s that are installed in the running instance of Eclipse.

Parameters:
  `rootsOnly` - set to true to return only the elements that have been explicitly installed (aka roots).
  `monitor` - the progress monitor
Returns:
  the installable units installed, or an empty result if the installation profile of the running system cannot be accessed

### createUpdateOperation

public UpdateOperation createUpdateOperation(Collection<? extends IVersionedId> toUpdate, Collection<URI> repos, IProgressMonitor monitor) throws ProvisionException
Create an `UpdateOperation` that will update the elements specified.

Parameters:
  `toUpdate` - The elements to update.Passing null will result in looking for an update to all the installed. Note that you can pass the results of `listInstalledElements(boolean, IProgressMonitor)` to this method if you wish to update all elements installed in the running instance of eclipse.
  `repos` - the repositories to update the elements from. If null is passed, it will use all previously registered repositories.
  `monitor` - the progress monitor
Returns:
  an instance of `UpdateOperation`
Throws:
  `ProvisionException`

### createSynchronizeOperation

public SynchronizeOperation createSynchronizeOperation(Collection<? extends IVersionedId> toInstall, Collection<URI> repos, IProgressMonitor monitor) throws ProvisionException
This factory method creates an `SynchronizeOperation` that will cause the current installation to exclusively contain the elements listed once executed.

Parameters:
  `toInstall` - the elements to install. This can not be null.
  `repos` - the repositories to install the elements from. If null is passed, it will use all previously registered repositories.
  `monitor` - the progress monitor
Returns:
  an instance of `SynchronizeOperation`.
Throws:
  `ProvisionException`