blob: df1d6ec5ecd9d387d58dd2503476a881f4892410 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.core.resources;
/**
* A workspace description represents the workspace preferences. It can be
* used to query the current preferences and set new ones. The workspace
* preference values are stored in the preference store and are also accessible
* via the preference mechanism. Constants for the preference keys are found
* on the <code>ResourcesPlugin</code> class.
*
* @see IWorkspace#getDescription()
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see IWorkspace#newProjectDescription(String)
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface IWorkspaceDescription {
/**
* Returns the order in which projects in the workspace should be built.
* The returned value is <code>null</code> if the workspace's default build
* order is being used.
*
* @return the names of projects in the order they will be built,
* or <code>null</code> if the default build order should be used
* @see #setBuildOrder(String[])
* @see ResourcesPlugin#PREF_BUILD_ORDER
*/
String[] getBuildOrder();
/**
* Returns the maximum length of time, in milliseconds, a file state should be
* kept in the local history. This setting is ignored by the workspace when
* <code>isApplyFileStatePolicy()</code> returns <code>false</code>.
*
* @return the maximum time a file state should be kept in the local history
* represented in milliseconds
* @see #setFileStateLongevity(long)
* @see #isApplyFileStatePolicy()
* @see ResourcesPlugin#PREF_FILE_STATE_LONGEVITY
*/
long getFileStateLongevity();
/**
* Returns the maximum number of times that the workspace should rebuild when
* builders affect projects that have already been built.
*
* @return the maximum number of times that the workspace should rebuild when
* builders affect projects that have already been built.
* @see #setMaxBuildIterations(int)
* @see ResourcesPlugin#PREF_MAX_BUILD_ITERATIONS
* @since 2.1
*/
int getMaxBuildIterations();
/**
* Returns the maximum number of states per file that can be stored in the local history.
* This setting is ignored by the workspace when <code>isApplyFileStatePolicy()</code>
* returns <code>false</code>.
*
* @return the maximum number of states per file that can be stored in the local history
* @see #setMaxFileStates(int)
* @see #isApplyFileStatePolicy()
* @see ResourcesPlugin#PREF_MAX_FILE_STATES
*/
int getMaxFileStates();
/**
* Returns the maximum permitted size of a file, in bytes, to be stored in the
* local history. This setting is ignored by the workspace when
* <code>isApplyFileStatePolicy()</code> returns <code>false</code>.
*
* @return the maximum permitted size of a file to be stored in the local history
* @see #setMaxFileStateSize(long)
* @see #isApplyFileStatePolicy()
* @see ResourcesPlugin#PREF_MAX_FILE_STATE_SIZE
*/
long getMaxFileStateSize();
/**
* Returns whether derived files are tracked in the local history.
*
* @return <code>true</code> if local history for derived files is created
* @see #setKeepDerivedState(boolean)
* @see ResourcesPlugin#PREF_KEEP_DERIVED_STATE
* @since 3.15
*/
boolean isKeepDerivedState();
/**
* Returns whether file states are discarded according to the policy specified by
* <code>setFileStateLongevity(long)</code>, <code>setMaxFileStates(int)</code>
* and <code>setMaxFileStateSize(long)</code> methods.
*
* @return <code>true</code> if file states are removed due to the policy,
* <code>false</code> otherwise
* @see #setApplyFileStatePolicy(boolean)
* @see #setFileStateLongevity(long)
* @see #setMaxFileStates(int)
* @see #setMaxFileStateSize(long)
* @see ResourcesPlugin#PREF_APPLY_FILE_STATE_POLICY
* @since 3.6
*/
boolean isApplyFileStatePolicy();
/**
* Returns the interval between automatic workspace snapshots.
*
* @return the amount of time in milliseconds between automatic workspace snapshots
* @see #setSnapshotInterval(long)
* @see ResourcesPlugin#PREF_SNAPSHOT_INTERVAL
* @since 2.0
*/
long getSnapshotInterval();
/**
* Returns whether this workspace performs autobuilds.
*
* @return <code>true</code> if autobuilding is on, otherwise
* <code>false</code>
* @see #setAutoBuilding(boolean)
* @see ResourcesPlugin#PREF_AUTO_BUILDING
*/
boolean isAutoBuilding();
/**
* Records whether this workspace performs autobuilds.
* <p>
* When autobuild is on, any changes made to a project and its
* resources automatically triggers an incremental build of the workspace.
* </p>
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param value <code>true</code> to turn on autobuilding,
* and <code>false</code> to turn it off
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #isAutoBuilding()
* @see ResourcesPlugin#PREF_AUTO_BUILDING
*/
void setAutoBuilding(boolean value);
/**
* Sets the order in which projects in the workspace should be built.
* Projects not named in this list are built in a default order defined
* by the workspace. Set this value to <code>null</code> to use the
* default ordering for all projects. Projects not named in the list are
* built in unspecified order after all ordered projects.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param value the names of projects in the order in which they are built,
* or <code>null</code> to use the workspace's default order for all projects
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #getBuildOrder()
* @see ResourcesPlugin#PREF_BUILD_ORDER
*/
void setBuildOrder(String[] value);
/**
* Sets the maximum time, in milliseconds, a file state should be kept in the
* local history. This setting is ignored by the workspace when <code>setApplyFileStatePolicy(boolean)
* </code> is set to false.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param time the maximum number of milliseconds a file state should be
* kept in the local history
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #getFileStateLongevity()
* @see #setApplyFileStatePolicy(boolean)
* @see ResourcesPlugin#PREF_FILE_STATE_LONGEVITY
*/
void setFileStateLongevity(long time);
/**
* Sets the maximum number of times that the workspace should rebuild when
* builders affect projects that have already been built.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param number the maximum number of times that the workspace should rebuild
* when builders affect projects that have already been built.
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #getMaxBuildIterations()
* @see ResourcesPlugin#PREF_MAX_BUILD_ITERATIONS
* @since 2.1
*/
void setMaxBuildIterations(int number);
/**
* Sets the maximum number of states per file that can be stored in the local history.
* If the maximum number is reached, older states are removed in favor of
* new ones. This setting is ignored by the workspace when <code>setApplyFileStatePolicy(boolean)
* </code> is set to <code>false</code>.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param number the maximum number of states per file that can be stored in the local history
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #getMaxFileStates()
* @see #setApplyFileStatePolicy(boolean)
* @see ResourcesPlugin#PREF_MAX_FILE_STATES
*/
void setMaxFileStates(int number);
/**
* Sets the maximum permitted size of a file, in bytes, to be stored in the
* local history. This setting is ignored by the workspace when <code>setApplyFileStatePolicy(boolean)
* </code> is set to <code>false</code>.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param size the maximum permitted size of a file to be stored in the local history
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #getMaxFileStateSize()
* @see #setApplyFileStatePolicy(boolean)
* @see ResourcesPlugin#PREF_MAX_FILE_STATE_SIZE
*/
void setMaxFileStateSize(long size);
/**
* Sets whether derived files are tracked in the local history.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes made to
* this description take effect.
* </p>
*
* @param keepDerivedState <code>true</code> if a history of derived files is
* needed.
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #isKeepDerivedState()
* @see ResourcesPlugin#PREF_KEEP_DERIVED_STATE
* @since 3.15
*/
void setKeepDerivedState(boolean keepDerivedState);
/**
* Sets whether file states are discarded according to the policy specified by
* <code>setFileStateLongevity(long)</code>, <code>setMaxFileStates(int)</code>
* and <code>setMaxFileStateSize(long)</code> methods.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param apply <code>true</code> if file states are removed due to the policy,
* <code>false</code> otherwise
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #setFileStateLongevity(long)
* @see #setMaxFileStates(int)
* @see #setMaxFileStateSize(long)
* @see #isApplyFileStatePolicy()
* @see ResourcesPlugin#PREF_APPLY_FILE_STATE_POLICY
* @since 3.6
*/
void setApplyFileStatePolicy(boolean apply);
/**
* Sets the interval between automatic workspace snapshots. The new interval
* will only take effect after the next snapshot.
* <p>
* Users must call <code>IWorkspace.setDescription</code> before changes
* made to this description take effect.
* </p>
*
* @param delay the amount of time in milliseconds between automatic workspace snapshots
* @see IWorkspace#setDescription(IWorkspaceDescription)
* @see #getSnapshotInterval()
* @see ResourcesPlugin#PREF_SNAPSHOT_INTERVAL
* @since 2.0
*/
void setSnapshotInterval(long delay);
/**
* Set the max number of builds that can happen concurrently during workspace build.
* @param n max number of jobs simultaneously allocated to workspace build. 1 means no job (current thread).
* @since 3.13
*/
void setMaxConcurrentBuilds(int n);
/**
* @return the max number of builds that can happen concurrently during workspace build. 1 means no job (current thread).
* @since 3.13
*/
int getMaxConcurrentBuilds();
}