Package org.eclipse.equinox.p2.engine

## Interface IProfile

All Superinterfaces:
  `IQueryable<IInstallableUnit>`

    public interface IProfile
    extends IQueryable<IInstallableUnit>

Represents the state of a profile in a profile registry at a given moment in time. Note this object contains only a snapshot of a particular profile state, and will never be updated if subsequent changes are made to this profile. A client should never retain an `IProfile` instance, but rather retain the profile id and obtain the current state of the profile from the profile registry only when required.

Since:
  2.0
Restriction:
  This interface is not intended to be implemented by clients.
Restriction:
  This interface is not intended to be extended by clients.

### Field Summary

Fields
`static int` `LOCK_NONE` Constant used to indicate that an installable unit is not locked in anyway.
`static int` `LOCK_UNINSTALL` Constant used to indicate that an installable unit is locked so that it may not be uninstalled.
`static int` `LOCK_UPDATE` Constant used to indicate that an installable unit is locked so that it may not be updated.
`static String` `PROP_CACHE` Profile property constant indicating the bundle pool cache location.
`static String` `PROP_CONFIGURATION_FOLDER` Profile property constant indicating the configuration folder for the profile.
`static String` `PROP_DESCRIPTION` Profile property constant for a string property indicating a user visible short textual description of this profile.
`static String` `PROP_ENVIRONMENTS` Profile property constant indicating the list of environments (e.g., OS, WS, ...) in which a profile can operate.
`static String` `PROP_INSTALL_FEATURES` Profile property constant for a boolean property indicating if update features should be installed in this profile
`static String` `PROP_INSTALL_FOLDER` Profile property constant indicating the install folder for the profile.
`static String` `PROP_LAUNCHER_CONFIGURATION` Profile property constant indicating the location of the launcher configuration file for the profile.
`static String` `PROP_NAME` Profile property constant for a string property indicating a user visible name of this profile.
`static String` `PROP_NL` Profile property constant indicating the installed language(s) for the profile.
`static String` `PROP_PROFILE_LOCKED_IU` A property key (value `"org.eclipse.equinox.p2.type.lock"`) for an integer property indicating how an installable unit is locked in its profile.
`static String` `PROP_PROFILE_ROOT_IU` A property key (value `"org.eclipse.equinox.p2.type.root"`) for a boolean property indicating whether an installable unit should be considered a root of the install.
`static String` `PROP_ROAMING` Profile property constant for a boolean property indicating if the profiling is roaming.
`static String` `PROP_SHARED_CACHE` Profile property constant indicating a shared read-only bundle pool cache location.
`static String` `PROP_STATS_PARAMETERS` Profile property constant for additional parameters of the downloading stats(e.g., package=jee&os=linux).
`static String` `STATE_PROP_HIDDEN` Profile state meta property key.
`static String` `STATE_PROP_SHARED_INSTALL` Profile state metadata property key used to represent the state of the user profile when running in shared install.
`static String` `STATE_PROP_TAG` Profile state metadata property key used to associate with a profile state a user readable name.
`static String` `STATE_SHARED_INSTALL_VALUE_BEFOREFLUSH` Value to represent a user profile before it is being flushed because the base had changed.
`static String` `STATE_SHARED_INSTALL_VALUE_INITIAL` Value to represent a user profile the first time it is created.
`static String` `STATE_SHARED_INSTALL_VALUE_NEW` Value to represent the new user profile created once the base profile has been flushed.

### Method Summary

All Methods Instance Methods Abstract Methods
`IQueryResult<IInstallableUnit>` `available​(IQuery<IInstallableUnit> query, IProgressMonitor monitor)` Returns the installable units in this profile that match the given query.
`Map<String,​String>` `getInstallableUnitProperties​(IInstallableUnit iu)` Returns an unmodifiable map of all profile properties associated with the given installable unit in this profile.
`String` `getInstallableUnitProperty​(IInstallableUnit iu, String key)` Returns the profile property associated with the given installable unit.
`String` `getProfileId()` Returns the id of this profile, unique within a given profile registry
`Map<String,​String>` `getProperties()` Returns an unmodifiable map of all profile properties.
`String` `getProperty​(String key)` Returns the profile property associated with the given key, or `null` if this property is not present
`IProvisioningAgent` `getProvisioningAgent()` Returns the provisioning agent that manages this profile
`long` `getTimestamp()` Returns a timestamp describing when this profile snapshot was created.

### Methods inherited from interface org.eclipse.equinox.p2.query.IQueryable

`query`

### Field Detail

#### LOCK_NONE

    static final int LOCK_NONE

Constant used to indicate that an installable unit is not locked in anyway.

See Also:
  `PROP_PROFILE_LOCKED_IU`, Constant Field Values

#### LOCK_UNINSTALL

    static final int LOCK_UNINSTALL

Constant used to indicate that an installable unit is locked so that it may not be uninstalled.

See Also:
  `PROP_PROFILE_LOCKED_IU`, Constant Field Values

#### LOCK_UPDATE

    static final int LOCK_UPDATE

Constant used to indicate that an installable unit is locked so that it may not be updated.

See Also:
  `PROP_PROFILE_LOCKED_IU`, Constant Field Values

#### PROP_PROFILE_LOCKED_IU

    static final String PROP_PROFILE_LOCKED_IU

A property key (value `"org.eclipse.equinox.p2.type.lock"`) for an integer property indicating how an installable unit is locked in its profile. The integer is a bit-mask indicating the different locks defined on the installable unit. The property should be obtained from a profile using IProfile#getInstallableUnitProperty(IInstallableUnit, String).

See Also:
  `LOCK_UNINSTALL`, `LOCK_UPDATE`, `LOCK_NONE`, Constant Field Values

#### PROP_PROFILE_ROOT_IU

    static final String PROP_PROFILE_ROOT_IU

A property key (value `"org.eclipse.equinox.p2.type.root"`) for a boolean property indicating whether an installable unit should be considered a root of the install. Typically this means the unit will appear to the end user as a top-level installed item. The property should be obtained from a profile using IProfile#getInstallableUnitProperty(IInstallableUnit, String).

See Also:
  `LOCK_UNINSTALL`, `LOCK_UPDATE`, `LOCK_NONE`, Constant Field Values

#### PROP_INSTALL_FOLDER

    static final String PROP_INSTALL_FOLDER

Profile property constant indicating the install folder for the profile.

See Also:
  Constant Field Values

#### PROP_CONFIGURATION_FOLDER

    static final String PROP_CONFIGURATION_FOLDER

Profile property constant indicating the configuration folder for the profile.

See Also:
  Constant Field Values

#### PROP_LAUNCHER_CONFIGURATION

    static final String PROP_LAUNCHER_CONFIGURATION

Profile property constant indicating the location of the launcher configuration file for the profile.

See Also:
  Constant Field Values

#### PROP_NL

    static final String PROP_NL

Profile property constant indicating the installed language(s) for the profile.

See Also:
  Constant Field Values

#### PROP_DESCRIPTION

    static final String PROP_DESCRIPTION

Profile property constant for a string property indicating a user visible short textual description of this profile. May be empty or `null`, and generally will be for non-top level install contexts.

See Also:
  Constant Field Values

#### PROP_NAME

    static final String PROP_NAME

Profile property constant for a string property indicating a user visible name of this profile. May be empty or `null`, and generally will be for non-top level install contexts.

See Also:
  Constant Field Values

#### PROP_ENVIRONMENTS

    static final String PROP_ENVIRONMENTS

Profile property constant indicating the list of environments (e.g., OS, WS, ...) in which a profile can operate. The value of the property is a comma-delimited string of key/value pairs.

See Also:
  Constant Field Values

#### PROP_ROAMING

    static final String PROP_ROAMING

Profile property constant for a boolean property indicating if the profiling is roaming. A roaming profile is one whose physical install location varies and is updated whenever it runs.

See Also:
  Constant Field Values

#### PROP_CACHE

    static final String PROP_CACHE

Profile property constant indicating the bundle pool cache location.

See Also:
  Constant Field Values

#### PROP_SHARED_CACHE

    static final String PROP_SHARED_CACHE

Profile property constant indicating a shared read-only bundle pool cache location.

See Also:
  Constant Field Values

#### PROP_INSTALL_FEATURES

    static final String PROP_INSTALL_FEATURES

Profile property constant for a boolean property indicating if update features should be installed in this profile

See Also:
  Constant Field Values

#### STATE_PROP_HIDDEN

    static final String STATE_PROP_HIDDEN

Profile state meta property key. Can be used to mark a profile state that should be hidden. The value of the property is not relevant as the property's existence is enough. Although `true` would be a typical value.

Since:
  2.1
See Also:
  Constant Field Values

#### STATE_PROP_TAG

    static final String STATE_PROP_TAG

Profile state metadata property key used to associate with a profile state a user readable name.

Since:
  2.1
See Also:
  Constant Field Values

#### STATE_PROP_SHARED_INSTALL

    static final String STATE_PROP_SHARED_INSTALL

Profile state metadata property key used to represent the state of the user profile when running in shared install. The value for this property could be: `STATE_SHARED_INSTALL_VALUE_INITIAL`, `STATE_SHARED_INSTALL_VALUE_BEFOREFLUSH` or `STATE_SHARED_INSTALL_VALUE_NEW`

Since:
  2.3
See Also:
  Constant Field Values

#### STATE_SHARED_INSTALL_VALUE_INITIAL

    static final String STATE_SHARED_INSTALL_VALUE_INITIAL

Value to represent a user profile the first time it is created.

Since:
  2.3
See Also:
  Constant Field Values

#### STATE_SHARED_INSTALL_VALUE_BEFOREFLUSH

    static final String STATE_SHARED_INSTALL_VALUE_BEFOREFLUSH

Value to represent a user profile before it is being flushed because the base had changed.

Since:
  2.3
See Also:
  Constant Field Values

#### STATE_SHARED_INSTALL_VALUE_NEW

    static final String STATE_SHARED_INSTALL_VALUE_NEW

Value to represent the new user profile created once the base profile has been flushed.

Since:
  2.3
See Also:
  Constant Field Values

#### PROP_STATS_PARAMETERS

    static final String PROP_STATS_PARAMETERS

Profile property constant for additional parameters of the downloading stats(e.g., package=jee&os=linux).

Since:
  2.2
See Also:
  Constant Field Values

### Method Detail

#### getProvisioningAgent

    IProvisioningAgent getProvisioningAgent()

Returns the provisioning agent that manages this profile

Returns:
  A provisioning agent.

#### getProfileId

    String getProfileId()

Returns the id of this profile, unique within a given profile registry

Returns:
  the profile id

#### getProperty

    String getProperty​(String key)

Returns the profile property associated with the given key, or `null` if this property is not present

Parameters:
  `key` - The property kid
Returns:
  the property value, or `null`

#### getInstallableUnitProperty

    String getInstallableUnitProperty​(IInstallableUnit iu,
                                      String key)

Returns the profile property associated with the given installable unit.

Parameters:
  `iu` - the installable unit to return the property for
  `key` - the property key
Returns:
  the property value, or `null` if no such property is defined

#### getProperties

    Map<String,​String> getProperties()

Returns an unmodifiable map of all profile properties.

Returns:
  a map of all profile properties.

#### getInstallableUnitProperties

    Map<String,​String> getInstallableUnitProperties​(IInstallableUnit iu)

Returns an unmodifiable map of all profile properties associated with the given installable unit in this profile.

Parameters:
  `iu` - the installable unit to return profile properties for
Returns:
  an unmodifiable map of installable unit profile properties

#### getTimestamp

    long getTimestamp()

Returns a timestamp describing when this profile snapshot was created.

Returns:
  A profile timestamp

#### available

    IQueryResult<IInstallableUnit> available​(IQuery<IInstallableUnit> query,
                                             IProgressMonitor monitor)

Returns the installable units in this profile that match the given query. In a shared install, this will include both the installable units in the shared base location, and in the current user's private install area.

Parameters:
  `query` -
  `monitor` - a progress monitor, or `null` if progress reporting is not desired
Returns:
  The installable units that match the given query