| /******************************************************************************* |
| * Copyright (c) 2000, 2015 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| * Red Hat Incorporated - get/setResourceAttribute code |
| * Oakland Software Incorporated - added getSessionProperties and getPersistentProperties |
| * Serge Beauchamp (Freescale Semiconductor) - [252996] add hasFilters() |
| * Serge Beauchamp (Freescale Semiconductor) - [229633] Group and Project Path Variable Support |
| *******************************************************************************/ |
| package org.eclipse.core.resources; |
| |
| import java.net.URI; |
| import java.util.Map; |
| import org.eclipse.core.runtime.*; |
| import org.eclipse.core.runtime.jobs.ISchedulingRule; |
| |
| /** |
| * The workspace analog of file system files |
| * and directories. There are exactly four <i>types</i> of resource: |
| * files, folders, projects and the workspace root. |
| * <p> |
| * File resources are similar to files in that they |
| * hold data directly. Folder resources are analogous to directories in that they |
| * hold other resources but cannot directly hold data. Project resources |
| * group files and folders into reusable clusters. The workspace root is the |
| * top level resource under which all others reside. |
| * </p> |
| * <p> |
| * Features of resources: |
| * <ul> |
| * <li><code>IResource</code> objects are <i>handles</i> to state maintained |
| * by a workspace. That is, resource objects do not actually contain data |
| * themselves but rather represent resource state and give it behavior. Programmers |
| * are free to manipulate handles for resources that do not exist in a workspace |
| * but must keep in mind that some methods and operations require that an actual |
| * resource be available.</li> |
| * <li>Resources have two different kinds of properties as detailed below. All |
| * properties are keyed by qualified names.</li> |
| * <ul> |
| * <li>Session properties: Session properties live for the lifetime of one execution of |
| * the workspace. They are not stored on disk. They can carry arbitrary |
| * object values. Clients should be aware that these values are kept in memory |
| * at all times and, as such, the values should not be large.</li> |
| * <li>Persistent properties: Persistent properties have string values which are stored |
| * on disk across platform sessions. The value of a persistent property is a |
| * string which should be short (i.e., under 2KB). </li> |
| * </ul> |
| * </li> |
| * <li>Resources are identified by type and by their <i>path</i>, which is similar to a file system |
| * path. The name of a resource is the last segment of its path. A resource's parent |
| * is located by removing the last segment (the resource's name) from the resource's full path.</li> |
| * <li>Resources can be local or non-local. A non-local resource is one whose |
| * contents and properties have not been fetched from a repository.</li> |
| * <li><i>Phantom</i> resources represent incoming additions or outgoing deletions |
| * which have yet to be reconciled with a synchronization partner. </li> |
| * </ul> |
| * </p> |
| * <p> |
| * Resources implement the {@link IAdaptable} interface; |
| * extensions are managed by the platform's adapter manager. |
| * </p> |
| * |
| * @see IWorkspace |
| * @see Platform#getAdapterManager() |
| * @noimplement This interface is not intended to be implemented by clients. |
| * @noextend This interface is not intended to be extended by clients. |
| */ |
| public interface IResource extends IAdaptable, ISchedulingRule { |
| |
| /*==================================================================== |
| * Constants defining resource types: There are four possible resource types |
| * and their type constants are in the integer range 1 to 8 as defined below. |
| *====================================================================*/ |
| |
| /** |
| * Type constant (bit mask value 1) which identifies file resources. |
| * |
| * @see IResource#getType() |
| * @see IFile |
| */ |
| public static final int FILE = 0x1; |
| |
| /** |
| * Type constant (bit mask value 2) which identifies folder resources. |
| * |
| * @see IResource#getType() |
| * @see IFolder |
| */ |
| public static final int FOLDER = 0x2; |
| |
| /** |
| * Type constant (bit mask value 4) which identifies project resources. |
| * |
| * @see IResource#getType() |
| * @see IProject |
| */ |
| public static final int PROJECT = 0x4; |
| |
| /** |
| * Type constant (bit mask value 8) which identifies the root resource. |
| * |
| * @see IResource#getType() |
| * @see IWorkspaceRoot |
| */ |
| public static final int ROOT = 0x8; |
| |
| /*==================================================================== |
| * Constants defining the depth of resource tree traversal: |
| *====================================================================*/ |
| |
| /** |
| * Depth constant (value 0) indicating this resource, but not any of its members. |
| */ |
| public static final int DEPTH_ZERO = 0; |
| |
| /** |
| * Depth constant (value 1) indicating this resource and its direct members. |
| */ |
| public static final int DEPTH_ONE = 1; |
| |
| /** |
| * Depth constant (value 2) indicating this resource and its direct and |
| * indirect members at any depth. |
| */ |
| public static final int DEPTH_INFINITE = 2; |
| |
| /*==================================================================== |
| * Constants for update flags for delete, move, copy, open, etc.: |
| *====================================================================*/ |
| |
| /** |
| * Update flag constant (bit mask value 1) indicating that the operation |
| * should proceed even if the resource is out of sync with the local file |
| * system. |
| * |
| * @since 2.0 |
| */ |
| public static final int FORCE = 0x1; |
| |
| /** |
| * Update flag constant (bit mask value 2) indicating that the operation |
| * should maintain local history by taking snapshots of the contents of |
| * files just before being overwritten or deleted. |
| * |
| * @see IFile#getHistory(IProgressMonitor) |
| * @since 2.0 |
| */ |
| public static final int KEEP_HISTORY = 0x2; |
| |
| /** |
| * Update flag constant (bit mask value 4) indicating that the operation |
| * should delete the files and folders of a project. |
| * <p> |
| * Deleting a project that is open ordinarily deletes all its files and folders, |
| * whereas deleting a project that is closed retains its files and folders. |
| * Specifying <code>ALWAYS_DELETE_PROJECT_CONTENT</code> indicates that the contents |
| * of a project are to be deleted regardless of whether the project is open or closed |
| * at the time; specifying <code>NEVER_DELETE_PROJECT_CONTENT</code> indicates that |
| * the contents of a project are to be retained regardless of whether the project |
| * is open or closed at the time. |
| * </p> |
| * |
| * @see #NEVER_DELETE_PROJECT_CONTENT |
| * @since 2.0 |
| */ |
| public static final int ALWAYS_DELETE_PROJECT_CONTENT = 0x4; |
| |
| /** |
| * Update flag constant (bit mask value 8) indicating that the operation |
| * should preserve the files and folders of a project. |
| * <p> |
| * Deleting a project that is open ordinarily deletes all its files and folders, |
| * whereas deleting a project that is closed retains its files and folders. |
| * Specifying <code>ALWAYS_DELETE_PROJECT_CONTENT</code> indicates that the contents |
| * of a project are to be deleted regardless of whether the project is open or closed |
| * at the time; specifying <code>NEVER_DELETE_PROJECT_CONTENT</code> indicates that |
| * the contents of a project are to be retained regardless of whether the project |
| * is open or closed at the time. |
| * </p> |
| * |
| * @see #ALWAYS_DELETE_PROJECT_CONTENT |
| * @since 2.0 |
| */ |
| public static final int NEVER_DELETE_PROJECT_CONTENT = 0x8; |
| |
| /** |
| * Update flag constant (bit mask value 16) indicating that the link creation |
| * should proceed even if the local file system file or directory is missing. |
| * |
| * @see IFolder#createLink(IPath, int, IProgressMonitor) |
| * @see IFile#createLink(IPath, int, IProgressMonitor) |
| * @since 2.1 |
| */ |
| public static final int ALLOW_MISSING_LOCAL = 0x10; |
| |
| /** |
| * Update flag constant (bit mask value 32) indicating that a copy or move |
| * operation should only copy the link, rather than copy the underlying |
| * contents of the linked resource. |
| * |
| * @see #copy(IPath, int, IProgressMonitor) |
| * @see #move(IPath, int, IProgressMonitor) |
| * @since 2.1 |
| */ |
| public static final int SHALLOW = 0x20; |
| |
| /** |
| * Update flag constant (bit mask value 64) indicating that setting the |
| * project description should not attempt to configure and de-configure |
| * natures. |
| * |
| * @see IProject#setDescription(IProjectDescription, int, IProgressMonitor) |
| * @since 3.0 |
| */ |
| public static final int AVOID_NATURE_CONFIG = 0x40; |
| |
| /** |
| * Update flag constant (bit mask value 128) indicating that opening a |
| * project for the first time or creating a linked folder should refresh in the |
| * background. |
| * |
| * @see IProject#open(int, IProgressMonitor) |
| * @see IFolder#createLink(URI, int, IProgressMonitor) |
| * @since 3.1 |
| */ |
| public static final int BACKGROUND_REFRESH = 0x80; |
| |
| /** |
| * Update flag constant (bit mask value 256) indicating that a |
| * resource should be replaced with a resource of the same name |
| * at a different file system location. |
| * |
| * @see IFile#createLink(URI, int, IProgressMonitor) |
| * @see IFolder#createLink(URI, int, IProgressMonitor) |
| * @see IResource#move(IProjectDescription, int, IProgressMonitor) |
| * @since 3.2 |
| */ |
| public static final int REPLACE = 0x100; |
| |
| /** |
| * Update flag constant (bit mask value 512) indicating that ancestor |
| * resources of the target resource should be checked. |
| * |
| * @see IResource#isLinked(int) |
| * @since 3.2 |
| */ |
| public static final int CHECK_ANCESTORS = 0x200; |
| |
| /** |
| * Update flag constant (bit mask value 0x400) indicating that a |
| * resource should be marked as derived. |
| * |
| * @see IFile#create(java.io.InputStream, int, IProgressMonitor) |
| * @see IFolder#create(int, boolean, IProgressMonitor) |
| * @see IResource#setDerived(boolean) |
| * @since 3.2 |
| */ |
| public static final int DERIVED = 0x400; |
| |
| /** |
| * Update flag constant (bit mask value 0x800) indicating that a |
| * resource should be marked as team private. |
| * |
| * @see IFile#create(java.io.InputStream, int, IProgressMonitor) |
| * @see IFolder#create(int, boolean, IProgressMonitor) |
| * @see IResource#copy(IPath, int, IProgressMonitor) |
| * @see IResource#setTeamPrivateMember(boolean) |
| * @since 3.2 |
| */ |
| public static final int TEAM_PRIVATE = 0x800; |
| |
| /** |
| * Update flag constant (bit mask value 0x1000) indicating that a |
| * resource should be marked as a hidden resource. |
| * |
| * @since 3.4 |
| */ |
| public static final int HIDDEN = 0x1000; |
| |
| /** |
| * Update flag constant (bit mask value 0x2000) indicating that a |
| * resource should be marked as a virtual resource. |
| * |
| * @see IFolder#create(int, boolean, IProgressMonitor) |
| * @since 3.6 |
| */ |
| public static final int VIRTUAL = 0x2000; |
| |
| /*==================================================================== |
| * Other constants: |
| *====================================================================*/ |
| |
| /** |
| * Modification stamp constant (value -1) indicating no modification stamp is |
| * available. |
| * |
| * @see #getModificationStamp() |
| */ |
| public static final int NULL_STAMP = -1; |
| |
| /** |
| * General purpose zero-valued bit mask constant. Useful whenever you need to |
| * supply a bit mask with no bits set. |
| * <p> |
| * Example usage: |
| * <code> |
| * <pre> |
| * delete(IResource.NONE, null) |
| * </pre> |
| * </code> |
| * </p> |
| * |
| * @since 2.0 |
| */ |
| public static final int NONE = 0; |
| |
| /** |
| * Accepts the given visitor for an optimized traversal. |
| * The visitor's <code>visit</code> method is called, and is provided with a |
| * proxy to this resource. The proxy is a transient object that can be queried |
| * very quickly for information about the resource. If the actual resource |
| * handle is needed, it can be obtained from the proxy. Requesting the resource |
| * handle, or the full path of the resource, will degrade performance of the |
| * visit. |
| * <p> |
| * The entire subtree under the given resource is traversed to infinite depth, |
| * unless the visitor ignores a subtree by returning <code>false</code> from its |
| * <code>visit</code> method. |
| * </p> |
| * <p> |
| * This is a convenience method, fully equivalent to |
| * <code>accept(visitor, IResource.DEPTH_INFINITE, memberFlags)</code>. |
| * </p> |
| * <p>No guarantees are made about the behavior of this method if resources |
| * are deleted or added during the traversal of this resource hierarchy. If |
| * resources are deleted during the traversal, they may still be passed to the |
| * visitor; if resources are created, they may not be passed to the visitor. If |
| * resources other than the one being visited are modified during the traversal, |
| * the resource proxy may contain stale information when that resource is |
| * visited. |
| * </p> |
| <p> |
| * If the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified in the member |
| * flags (recommended), only member resources that exist will be visited. |
| * If the {@link IContainer#INCLUDE_PHANTOMS} flag is specified, the visit will |
| * also include any phantom member resource that the workspace is keeping track of. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} flag is not specified |
| * (recommended), team private members will not be visited. If the |
| * {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} flag is specified in the member |
| * flags, team private member resources are visited as well. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_HIDDEN} flag is not specified (recommended), |
| * hidden resources will not be visited. If the {@link IContainer#INCLUDE_HIDDEN} flag is specified |
| * in the member flags, hidden resources are visited as well. |
| * </p> |
| * <p> |
| * If the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is not specified (recommended), |
| * the resource is checked for existence before the visitor's <code>visit</code> |
| * method is called. If the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is specified |
| * in the member flags, the resource is not checked for existence before the visitor's |
| * <code>visit</code> method is called. Children of the resource are never checked |
| * for existence. |
| * </p> |
| * |
| * @param visitor the visitor |
| * @param memberFlags bit-wise or of member flag constants |
| * ({@link IContainer#INCLUDE_PHANTOMS}, {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} |
| * and {@link IContainer#INCLUDE_HIDDEN}) indicating which members are of interest |
| * and {@link IContainer#DO_NOT_CHECK_EXISTENCE} if the resource on which the method is |
| * called should not be checked for existence |
| * @exception CoreException if this request fails. Reasons include: |
| * <ul> |
| * <li> the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified and |
| * this resource does not exist.</li> |
| * <li> the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified and |
| * this resource is a project that is not open.</li> |
| * <li> the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is not specified and |
| * this resource does not exist.</li> |
| * <li> The visitor failed with this exception.</li> |
| * </ul> |
| * @see IContainer#INCLUDE_PHANTOMS |
| * @see IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS |
| * @see IContainer#INCLUDE_HIDDEN |
| * @see IContainer#DO_NOT_CHECK_EXISTENCE |
| * @see IResource#isPhantom() |
| * @see IResource#isTeamPrivateMember() |
| * @see IResourceProxyVisitor#visit(IResourceProxy) |
| * @since 2.1 |
| */ |
| public void accept(IResourceProxyVisitor visitor, int memberFlags) throws CoreException; |
| |
| /** |
| * Accepts the given visitor for an optimized traversal. |
| * The visitor's <code>visit</code> method is called, and is provided with a |
| * proxy to this resource. The proxy is a transient object that can be queried |
| * very quickly for information about the resource. If the actual resource |
| * handle is needed, it can be obtained from the proxy. Requesting the resource |
| * handle, or the full path of the resource, will degrade performance of the |
| * visit. |
| * <p> |
| * The entire subtree under the given resource is traversed to the supplied depth, |
| * unless the visitor ignores a subtree by returning <code>false</code> from its |
| * <code>visit</code> method. |
| * </p> |
| * <p>No guarantees are made about the behavior of this method if resources |
| * are deleted or added during the traversal of this resource hierarchy. If |
| * resources are deleted during the traversal, they may still be passed to the |
| * visitor; if resources are created, they may not be passed to the visitor. If |
| * resources other than the one being visited are modified during the traversal, |
| * the resource proxy may contain stale information when that resource is |
| * visited. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified in the member |
| * flags (recommended), only member resources that exist will be visited. |
| * If the {@link IContainer#INCLUDE_PHANTOMS} flag is specified, the visit will |
| * also include any phantom member resource that the workspace is keeping track of. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} flag is not specified |
| * (recommended), team private members will not be visited. If the |
| * {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} flag is specified in the member |
| * flags, team private member resources are visited as well. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_HIDDEN} flag is not specified (recommended), |
| * hidden resources will not be visited. If the {@link IContainer#INCLUDE_HIDDEN} flag is specified |
| * in the member flags, hidden resources are visited as well. |
| * </p> |
| * <p> |
| * If the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is not specified (recommended), |
| * the resource is checked for existence before the visitor's <code>visit</code> |
| * method is called. If the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is specified |
| * in the member flags, the resource is not checked for existence before the visitor's |
| * <code>visit</code> method is called. Children of the resource are never checked |
| * for existence. |
| * </p> |
| * |
| * @param visitor the visitor |
| * @param depth the depth to which members of this resource should be |
| * visited. One of {@link IResource#DEPTH_ZERO}, {@link IResource#DEPTH_ONE}, |
| * or {@link IResource#DEPTH_INFINITE}. |
| * @param memberFlags bit-wise or of member flag constants |
| * ({@link IContainer#INCLUDE_PHANTOMS}, {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} |
| * and {@link IContainer#INCLUDE_HIDDEN}) indicating which members are of interest |
| * and {@link IContainer#DO_NOT_CHECK_EXISTENCE} if the resource on which the method is |
| * called should not be checked for existence |
| * @exception CoreException if this request fails. Reasons include: |
| * <ul> |
| * <li> the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified and |
| * this resource does not exist.</li> |
| * <li> the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified and |
| * this resource is a project that is not open.</li> |
| * <li> the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is not specified and |
| * this resource does not exist.</li> |
| * <li> The visitor failed with this exception.</li> |
| * </ul> |
| * @see IContainer#INCLUDE_PHANTOMS |
| * @see IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS |
| * @see IContainer#INCLUDE_HIDDEN |
| * @see IContainer#DO_NOT_CHECK_EXISTENCE |
| * @see IResource#isPhantom() |
| * @see IResource#isTeamPrivateMember() |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| * @see IResourceProxyVisitor#visit(IResourceProxy) |
| * @since 3.8 |
| */ |
| public void accept(IResourceProxyVisitor visitor, int depth, int memberFlags) throws CoreException; |
| |
| /** |
| * Accepts the given visitor. |
| * The visitor's <code>visit</code> method is called with this |
| * resource. If the visitor returns <code>true</code>, this method |
| * visits this resource's members. |
| * <p> |
| * This is a convenience method, fully equivalent to |
| * <code>accept(visitor, IResource.DEPTH_INFINITE, IResource.NONE)</code>. |
| * </p> |
| * |
| * @param visitor the visitor |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> The visitor failed with this exception.</li> |
| * </ul> |
| * @see IResourceVisitor#visit(IResource) |
| * @see #accept(IResourceVisitor,int,int) |
| */ |
| public void accept(IResourceVisitor visitor) throws CoreException; |
| |
| /** |
| * Accepts the given visitor. |
| * The visitor's <code>visit</code> method is called with this |
| * resource. If the visitor returns <code>false</code>, |
| * this resource's members are not visited. |
| * <p> |
| * The subtree under the given resource is traversed to the supplied depth. |
| * </p> |
| * <p> |
| * This is a convenience method, fully equivalent to: |
| * <pre> |
| * accept(visitor, depth, includePhantoms ? IContainer.INCLUDE_PHANTOMS : IResource.NONE); |
| * </pre> |
| * </p> |
| * |
| * @param visitor the visitor |
| * @param depth the depth to which members of this resource should be |
| * visited. One of {@link IResource#DEPTH_ZERO}, {@link IResource#DEPTH_ONE}, |
| * or {@link IResource#DEPTH_INFINITE}. |
| * @param includePhantoms <code>true</code> if phantom resources are |
| * of interest; <code>false</code> if phantom resources are not of |
| * interest. |
| * @exception CoreException if this request fails. Reasons include: |
| * <ul> |
| * <li> <code>includePhantoms</code> is <code>false</code> and |
| * this resource does not exist.</li> |
| * <li> <code>includePhantoms</code> is <code>true</code> and |
| * this resource does not exist and is not a phantom.</li> |
| * <li> The visitor failed with this exception.</li> |
| * </ul> |
| * @see IResource#isPhantom() |
| * @see IResourceVisitor#visit(IResource) |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| * @see IResource#accept(IResourceVisitor,int,int) |
| */ |
| public void accept(IResourceVisitor visitor, int depth, boolean includePhantoms) throws CoreException; |
| |
| /** |
| * Accepts the given visitor. |
| * The visitor's <code>visit</code> method is called with this |
| * resource. If the visitor returns <code>false</code>, |
| * this resource's members are not visited. |
| * <p> |
| * The subtree under the given resource is traversed to the supplied depth. |
| * </p> |
| * <p> |
| * No guarantees are made about the behavior of this method if resources are |
| * deleted or added during the traversal of this resource hierarchy. If |
| * resources are deleted during the traversal, they may still be passed to the |
| * visitor; if resources are created, they may not be passed to the visitor. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified in the member |
| * flags (recommended), only member resources that exists are visited. |
| * If the {@link IContainer#INCLUDE_PHANTOMS} flag is specified, the visit also |
| * includes any phantom member resource that the workspace is keeping track of. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} flag is not specified |
| * (recommended), team private members are not visited. If the |
| * {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS} flag is specified in the member |
| * flags, team private member resources are visited as well. |
| * </p> |
| * <p> |
| * If the {@link IContainer#EXCLUDE_DERIVED} flag is not specified |
| * (recommended), derived resources are visited. If the |
| * {@link IContainer#EXCLUDE_DERIVED} flag is specified in the member |
| * flags, derived resources are not visited. |
| * </p> |
| * <p> |
| * If the {@link IContainer#INCLUDE_HIDDEN} flag is not specified (recommended), |
| * hidden resources will not be visited. If the {@link IContainer#INCLUDE_HIDDEN} flag is specified |
| * in the member flags, hidden resources are visited as well. |
| * </p> |
| * <p> |
| * If the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is not specified (recommended), |
| * the resource is checked for existence before the visitor's <code>visit</code> |
| * method is called. If the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is specified |
| * in the member flags, the resource is not checked for existence before the visitor's |
| * <code>visit</code> method is called. Children of the resource are never checked |
| * for existence. |
| * </p> |
| * |
| * @param visitor the visitor |
| * @param depth the depth to which members of this resource should be |
| * visited. One of {@link IResource#DEPTH_ZERO}, {@link IResource#DEPTH_ONE}, |
| * or {@link IResource#DEPTH_INFINITE}. |
| * @param memberFlags bit-wise or of member flag constants |
| * ({@link IContainer#INCLUDE_PHANTOMS}, {@link IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS}, |
| * {@link IContainer#INCLUDE_HIDDEN} and {@link IContainer#EXCLUDE_DERIVED}) indicating |
| * which members are of interest and {@link IContainer#DO_NOT_CHECK_EXISTENCE} |
| * if the resource on which the method is called should not be checked for existence |
| * @exception CoreException if this request fails. Reasons include: |
| * <ul> |
| * <li> the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified and |
| * this resource does not exist.</li> |
| * <li> the {@link IContainer#INCLUDE_PHANTOMS} flag is not specified and |
| * this resource is a project that is not open.</li> |
| * <li> the {@link IContainer#DO_NOT_CHECK_EXISTENCE} flag is not specified and |
| * this resource does not exist.</li> |
| * <li> The visitor failed with this exception.</li> |
| * </ul> |
| * @see IContainer#INCLUDE_PHANTOMS |
| * @see IContainer#INCLUDE_TEAM_PRIVATE_MEMBERS |
| * @see IContainer#INCLUDE_HIDDEN |
| * @see IContainer#EXCLUDE_DERIVED |
| * @see IContainer#DO_NOT_CHECK_EXISTENCE |
| * @see IResource#isDerived() |
| * @see IResource#isPhantom() |
| * @see IResource#isTeamPrivateMember() |
| * @see IResource#isHidden() |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| * @see IResourceVisitor#visit(IResource) |
| * @since 2.0 |
| */ |
| public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException; |
| |
| /** |
| * Removes the local history of this resource and its descendents. |
| * <p> |
| * This operation is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting and cancellation are not desired |
| */ |
| public void clearHistory(IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Makes a copy of this resource at the given path. |
| * <p> |
| * This is a convenience method, fully equivalent to: |
| * <pre> |
| * copy(destination, (force ? FORCE : IResource.NONE), monitor); |
| * </pre> |
| * </p> |
| * <p> |
| * This operation changes resources; these changes will be reported |
| * in a subsequent resource change event that will include |
| * an indication that the resource copy has been added to its new parent. |
| * </p> |
| * <p> |
| * This operation is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param destination the destination path |
| * @param force a flag controlling whether resources that are not |
| * in sync with the local file system will be tolerated |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be copied. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> The source or destination is the workspace root.</li> |
| * <li> The source is a project but the destination is not.</li> |
| * <li> The destination is a project but the source is not.</li> |
| * <li> The resource corresponding to the parent destination path does not exist.</li> |
| * <li> The resource corresponding to the parent destination path is a closed project.</li> |
| * <li> A resource at destination path does exist.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file |
| * system and <code>force</code> is <code>false</code>.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendents.</li> |
| * <li> The source resource is a file and the destination path specifies a project.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| */ |
| public void copy(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Makes a copy of this resource at the given path. The resource's |
| * descendents are copied as well. The path of this resource must not be a |
| * prefix of the destination path. The workspace root may not be the source or |
| * destination location of a copy operation, and a project can only be copied to |
| * another project. After successful completion, corresponding new resources |
| * will exist at the given path; their contents and properties will be copies of |
| * the originals. The original resources are not affected. |
| * <p> |
| * The supplied path may be absolute or relative. Absolute paths fully specify |
| * the new location for the resource, including its project. Relative paths are |
| * considered to be relative to the container of the resource being copied. A |
| * trailing separator is ignored. |
| * </p> |
| * <p> |
| * Calling this method with a one segment absolute destination path is |
| * equivalent to calling: |
| * <pre> |
| * copy(workspace.newProjectDescription(folder.getName()),updateFlags,monitor); |
| * </pre> |
| * </p> |
| * <p> When a resource is copied, its persistent properties are copied with it. |
| * Session properties and markers are not copied. |
| * </p> |
| * <p> |
| * The {@link #FORCE} update flag controls how this method deals with cases |
| * where the workspace is not completely in sync with the local file system. If |
| * {@link #FORCE} is not specified, the method will only attempt to copy |
| * resources that are in sync with the corresponding files and directories in |
| * the local file system; it will fail if it encounters a resource that is out |
| * of sync with the file system. However, if {@link #FORCE} is specified, |
| * the method copies all corresponding files and directories from the local file |
| * system, including ones that have been recently updated or created. Note that |
| * in both settings of the {@link #FORCE} flag, the operation fails if the |
| * newly created resources in the workspace would be out of sync with the local |
| * file system; this ensures files in the file system cannot be accidentally |
| * overwritten. |
| * </p> |
| * <p> |
| * The {@link #SHALLOW} update flag controls how this method deals with linked |
| * resources. If {@link #SHALLOW} is not specified, then the underlying |
| * contents of the linked resource will always be copied in the file system. In |
| * this case, the destination of the copy will never be a linked resource or |
| * contain any linked resources. If {@link #SHALLOW} is specified when a |
| * linked resource is copied into another project, a new linked resource is |
| * created in the destination project that points to the same file system |
| * location. When a project containing linked resources is copied, the new |
| * project will contain the same linked resources pointing to the same file |
| * system locations. For both of these shallow cases, no files on disk under |
| * the linked resource are actually copied. With the {@link #SHALLOW} flag, |
| * copying of linked resources into anything other than a project is not |
| * permitted. The {@link #SHALLOW} update flag is ignored when copying non- |
| * linked resources. |
| * </p> |
| * <p> |
| * The {@link #DERIVED} update flag indicates that the new resource |
| * should immediately be set as a derived resource. Specifying this flag |
| * is equivalent to atomically calling {@link #setDerived(boolean)} |
| * with a value of <code>true</code> immediately after creating the resource. |
| * </p> |
| * <p> |
| * The {@link #TEAM_PRIVATE} update flag indicates that the new resource |
| * should immediately be set as a team private resource. Specifying this flag |
| * is equivalent to atomically calling {@link #setTeamPrivateMember(boolean)} |
| * with a value of <code>true</code> immediately after creating the resource. |
| * </p> |
| * <p> |
| * The {@link #HIDDEN} update flag indicates that the new resource |
| * should immediately be set as a hidden resource. Specifying this flag |
| * is equivalent to atomically calling {@link #setHidden(boolean)} |
| * with a value of <code>true</code> immediately after creating the resource. |
| * </p> |
| * <p> |
| * Update flags other than those listed above are ignored. |
| * </p> |
| * <p> |
| * This operation changes resources; these changes will be reported in a |
| * subsequent resource change event that will include an indication that the |
| * resource copy has been added to its new parent. |
| * </p> |
| * <p> |
| * An attempt will be made to copy the local history for this resource and its children, |
| * to the destination. Since local history existence is a safety-net mechanism, failure |
| * of this action will not result in automatic failure of the copy operation. |
| * </p> |
| * <p> |
| * This operation is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param destination the destination path |
| * @param updateFlags bit-wise or of update flag constants |
| * ({@link #FORCE}, {@link #SHALLOW}, {@link #DERIVED}, {@link #TEAM_PRIVATE}, {@link #HIDDEN}) |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be copied. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> The source or destination is the workspace root.</li> |
| * <li> The source is a project but the destination is not.</li> |
| * <li> The destination is a project but the source is not.</li> |
| * <li> The resource corresponding to the parent destination path does not exist.</li> |
| * <li> The resource corresponding to the parent destination path is a closed project.</li> |
| * <li> The source is a linked resource, but the destination is not a project, |
| * and {@link #SHALLOW} is specified.</li> |
| * <li> A resource at destination path does exist.</li> |
| * <li> This resource or one of its descendants is out of sync with the local file |
| * system and {@link #FORCE} is not specified.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendants.</li> |
| * <li> The source resource is a file and the destination path specifies a project.</li> |
| * <li> The source is a linked resource, and the destination path does not |
| * specify a project.</li> |
| * <li> The location of the source resource on disk is the same or a prefix of |
| * the location of the destination resource on disk.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see #FORCE |
| * @see #SHALLOW |
| * @see #DERIVED |
| * @see #TEAM_PRIVATE |
| * @see IResourceRuleFactory#copyRule(IResource, IResource) |
| * @since 2.0 |
| */ |
| public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Makes a copy of this project using the given project description. |
| * <p> |
| * This is a convenience method, fully equivalent to: |
| * <pre> |
| * copy(description, (force ? FORCE : IResource.NONE), monitor); |
| * </pre> |
| * </p> |
| * <p> |
| * This operation changes resources; these changes will be reported |
| * in a subsequent resource change event that will include |
| * an indication that the resource copy has been added to its new parent. |
| * </p> |
| * <p> |
| * This operation is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param description the destination project description |
| * @param force a flag controlling whether resources that are not |
| * in sync with the local file system will be tolerated |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be copied. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> This resource is not a project.</li> |
| * <li> The project described by the given description already exists.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file |
| * system and <code>force</code> is <code>false</code>.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendents.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| */ |
| public void copy(IProjectDescription description, boolean force, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Makes a copy of this project using the given project description. |
| * The project's descendents are copied as well. The description specifies the |
| * name, location and attributes of the new project. After successful |
| * completion, corresponding new resources will exist at the given path; their |
| * contents and properties will be copies of the originals. The original |
| * resources are not affected. |
| * <p> |
| * When a resource is copied, its persistent properties are copied with it. |
| * Session properties and markers are not copied. |
| * </p> |
| * <p> The {@link #FORCE} update flag controls how this method deals with |
| * cases where the workspace is not completely in sync with the local file |
| * system. If {@link #FORCE} is not specified, the method will only attempt |
| * to copy resources that are in sync with the corresponding files and |
| * directories in the local file system; it will fail if it encounters a |
| * resource that is out of sync with the file system. However, if |
| * {@link #FORCE} is specified, the method copies all corresponding files |
| * and directories from the local file system, including ones that have been |
| * recently updated or created. Note that in both settings of the |
| * {@link #FORCE} flag, the operation fails if the newly created resources |
| * in the workspace would be out of sync with the local file system; this |
| * ensures files in the file system cannot be accidentally overwritten. |
| * </p> |
| * <p> |
| * The {@link #SHALLOW} update flag controls how this method deals with |
| * linked resources. If {@link #SHALLOW} is not specified, then the |
| * underlying contents of any linked resources in the project will always be |
| * copied in the file system. In this case, the destination of the copy will |
| * never contain any linked resources. If {@link #SHALLOW} is specified |
| * when a project containing linked resources is copied, new linked resources |
| * are created in the destination project that point to the same file system |
| * locations. In this case, no files on disk under linked resources are |
| * actually copied. The {@link #SHALLOW} update flag is ignored when copying |
| * non- linked resources. |
| * </p> |
| * <p> |
| * Update flags other than {@link #FORCE} or {@link #SHALLOW} are ignored. |
| * </p> |
| * <p> |
| * An attempt will be made to copy the local history for this resource and its children, |
| * to the destination. Since local history existence is a safety-net mechanism, failure |
| * of this action will not result in automatic failure of the copy operation. |
| * </p> |
| * <p> This operation changes resources; these changes will be reported in a |
| * subsequent resource change event that will include an indication that the |
| * resource copy has been added to its new parent. |
| * </p> |
| * <p> |
| * This operation is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param description the destination project description |
| * @param updateFlags bit-wise or of update flag constants |
| * ({@link #FORCE} and {@link #SHALLOW}) |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be copied. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> This resource is not a project.</li> |
| * <li> The project described by the given description already exists.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file |
| * system and {@link #FORCE} is not specified.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendents.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see #FORCE |
| * @see #SHALLOW |
| * @see IResourceRuleFactory#copyRule(IResource, IResource) |
| * @since 2.0 |
| */ |
| public void copy(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Creates and returns the marker with the specified type on this resource. |
| * Marker type ids should be the id of an extension installed in the |
| * <code>org.eclipse.core.resources.markers</code> extension |
| * point. The specified type string must not be <code>null</code>. |
| * |
| * @param type the type of the marker to create |
| * @return the handle of the new marker |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see IResourceRuleFactory#markerRule(IResource) |
| */ |
| public IMarker createMarker(String type) throws CoreException; |
| |
| /** |
| * Creates a resource proxy representing the current state of this resource. |
| * <p> |
| * Note that once a proxy has been created, it does not stay in sync |
| * with the corresponding resource. Changes to the resource after |
| * the proxy is created will not be reflected in the state of the proxy. |
| * </p> |
| * |
| * @return A proxy representing this resource |
| * @since 3.2 |
| */ |
| public IResourceProxy createProxy(); |
| |
| /** |
| * Deletes this resource from the workspace. |
| * <p> |
| * This is a convenience method, fully equivalent to: |
| * <pre> |
| * delete(force ? FORCE : IResource.NONE, monitor); |
| * </pre> |
| * </p> |
| * <p> |
| * This method changes resources; these changes will be reported |
| * in a subsequent resource change event. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param force a flag controlling whether resources that are not |
| * in sync with the local file system will be tolerated |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource could not be deleted for some reason.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file system |
| * and <code>force</code> is <code>false</code>.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * |
| * @see IResource#delete(int,IProgressMonitor) |
| */ |
| public void delete(boolean force, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Deletes this resource from the workspace. |
| * Deletion applies recursively to all members of this resource in a "best- |
| * effort" fashion. That is, all resources which can be deleted are deleted. |
| * Resources which could not be deleted are noted in a thrown exception. The |
| * method does not fail if resources do not exist; it fails only if resources |
| * could not be deleted. |
| * <p> |
| * Deleting a non-linked resource also deletes its contents from the local file |
| * system. In the case of a file or folder resource, the corresponding file or |
| * directory in the local file system is deleted. Deleting an open project |
| * recursively deletes its members; deleting a closed project just gets rid of |
| * the project itself (closed projects have no members); files in the project's |
| * local content area are retained; referenced projects are unaffected. |
| * </p> |
| * <p> |
| * Deleting a linked resource does not delete its contents from the file system, |
| * it just removes that resource and its children from the workspace. Deleting |
| * children of linked resources does remove the contents from the file system. |
| * </p> |
| * <p> |
| * Deleting a resource also deletes its session and persistent properties and |
| * markers. |
| * </p> |
| * <p> |
| * Deleting a non-project resource which has sync information converts the |
| * resource to a phantom and retains the sync information for future use. |
| * </p> |
| * <p> |
| * Deleting the workspace root resource recursively deletes all projects, |
| * and removes all markers, properties, sync info and other data related to the |
| * workspace root; the root resource itself is not deleted, however. |
| * </p> |
| * <p> |
| * This method changes resources; these changes will be reported |
| * in a subsequent resource change event. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * <p> |
| * The {@link #FORCE} update flag controls how this method deals with |
| * cases where the workspace is not completely in sync with the local |
| * file system. If {@link #FORCE} is not specified, the method will only |
| * attempt to delete files and directories in the local file system that |
| * correspond to, and are in sync with, resources in the workspace; it will fail |
| * if it encounters a file or directory in the file system that is out of sync |
| * with the workspace. This option ensures there is no unintended data loss; |
| * it is the recommended setting. However, if {@link #FORCE} is specified, |
| * the method will ruthlessly attempt to delete corresponding files and |
| * directories in the local file system, including ones that have been recently |
| * updated or created. |
| * </p> |
| * <p> |
| * The {@link #KEEP_HISTORY} update flag controls whether or not files that |
| * are about to be deleted from the local file system have their current |
| * contents saved in the workspace's local history. The local history mechanism |
| * serves as a safety net to help the user recover from mistakes that might |
| * otherwise result in data loss. Specifying {@link #KEEP_HISTORY} is |
| * recommended except in circumstances where past states of the files are of no |
| * conceivable interest to the user. Note that local history is maintained |
| * with each individual project, and gets discarded when a project is deleted |
| * from the workspace. Hence {@link #KEEP_HISTORY} is only really applicable |
| * when deleting files and folders, but not projects. |
| * </p> |
| * <p> |
| * The {@link #ALWAYS_DELETE_PROJECT_CONTENT} update flag controls how |
| * project deletions are handled. If {@link #ALWAYS_DELETE_PROJECT_CONTENT} |
| * is specified, then the files and folders in a project's local content area |
| * are deleted, regardless of whether the project is open or closed; |
| * {@link #FORCE} is assumed regardless of whether it is specified. If |
| * {@link #NEVER_DELETE_PROJECT_CONTENT} is specified, then the files and |
| * folders in a project's local content area are retained, regardless of whether |
| * the project is open or closed; the {@link #FORCE} flag is ignored. If |
| * neither of these flags is specified, files and folders in a project's local |
| * content area from open projects (subject to the {@link #FORCE} flag), but |
| * never from closed projects. |
| * </p> |
| * |
| * @param updateFlags bit-wise or of update flag constants ( |
| * {@link #FORCE}, {@link #KEEP_HISTORY}, |
| * {@link #ALWAYS_DELETE_PROJECT_CONTENT}, |
| * and {@link #NEVER_DELETE_PROJECT_CONTENT}) |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource could not be deleted for some reason.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file system |
| * and {@link #FORCE} is not specified.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see IFile#delete(boolean, boolean, IProgressMonitor) |
| * @see IFolder#delete(boolean, boolean, IProgressMonitor) |
| * @see #FORCE |
| * @see #KEEP_HISTORY |
| * @see #ALWAYS_DELETE_PROJECT_CONTENT |
| * @see #NEVER_DELETE_PROJECT_CONTENT |
| * @see IResourceRuleFactory#deleteRule(IResource) |
| * @since 2.0 |
| */ |
| public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Deletes all markers on this resource of the given type, and, |
| * optionally, deletes such markers from its children. If <code>includeSubtypes</code> |
| * is <code>false</code>, only markers whose type exactly matches |
| * the given type are deleted. |
| * <p> |
| * This method changes resources; these changes will be reported |
| * in a subsequent resource change event. |
| * </p> |
| * |
| * @param type the type of marker to consider, or <code>null</code> to indicate all types |
| * @param includeSubtypes whether or not to consider sub-types of the given type |
| * @param depth how far to recurse (see <code>IResource.DEPTH_* </code>) |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is a project that is not open.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| * @see IResourceRuleFactory#markerRule(IResource) |
| */ |
| public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException; |
| |
| /** |
| * Compares two objects for equality; |
| * for resources, equality is defined in terms of their handles: |
| * same resource type, equal full paths, and identical workspaces. |
| * Resources are not equal to objects other than resources. |
| * |
| * @param other the other object |
| * @return an indication of whether the objects are equals |
| * @see #getType() |
| * @see #getFullPath() |
| * @see #getWorkspace() |
| */ |
| @Override |
| public boolean equals(Object other); |
| |
| /** |
| * Returns whether this resource exists in the workspace. |
| * <p> |
| * <code>IResource</code> objects are lightweight handle objects |
| * used to access resources in the workspace. However, having a |
| * handle object does not necessarily mean the workspace really |
| * has such a resource. When the workspace does have a genuine |
| * resource of a matching type, the resource is said to |
| * <em>exist</em>, and this method returns <code>true</code>; |
| * in all other cases, this method returns <code>false</code>. |
| * In particular, it returns <code>false</code> if the workspace |
| * has no resource at that path, or if it has a resource at that |
| * path with a type different from the type of this resource handle. |
| * </p> |
| * <p> |
| * Note that no resources ever exist under a project |
| * that is closed; opening a project may bring some |
| * resources into existence. |
| * </p> |
| * <p> |
| * The name and path of a resource handle may be invalid. |
| * However, validation checks are done automatically as a |
| * resource is created; this means that any resource that exists |
| * can be safely assumed to have a valid name and path. |
| * </p> |
| * |
| * @return <code>true</code> if the resource exists, otherwise |
| * <code>false</code> |
| */ |
| public boolean exists(); |
| |
| /** |
| * Returns the marker with the specified id on this resource, |
| * Returns <code>null</code> if there is no matching marker. |
| * |
| * @param id the id of the marker to find |
| * @return a marker or <code>null</code> |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| */ |
| public IMarker findMarker(long id) throws CoreException; |
| |
| /** |
| * Returns all markers of the specified type on this resource, |
| * and, optionally, on its children. If <code>includeSubtypes</code> |
| * is <code>false</code>, only markers whose type exactly matches |
| * the given type are returned. Returns an empty array if there |
| * are no matching markers. |
| * |
| * @param type the type of marker to consider, or <code>null</code> to indicate all types |
| * @param includeSubtypes whether or not to consider sub-types of the given type |
| * @param depth how far to recurse (see <code>IResource.DEPTH_* </code>) |
| * @return an array of markers |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| */ |
| public IMarker[] findMarkers(String type, boolean includeSubtypes, int depth) throws CoreException; |
| |
| /** |
| * Returns the maximum value of the {@link IMarker#SEVERITY} attribute across markers |
| * of the specified type on this resource, and, optionally, on its children. |
| * If <code>includeSubtypes</code>is <code>false</code>, only markers whose type |
| * exactly matches the given type are considered. |
| * Returns <code>-1</code> if there are no matching markers. |
| * Returns {@link IMarker#SEVERITY_ERROR} if any of the markers has a severity |
| * greater than or equal to {@link IMarker#SEVERITY_ERROR}. |
| * |
| * @param type the type of marker to consider (normally {@link IMarker#PROBLEM} |
| * or one of its subtypes), or <code>null</code> to indicate all types |
| * |
| * @param includeSubtypes whether or not to consider sub-types of the given type |
| * @param depth how far to recurse (see <code>IResource.DEPTH_* </code>) |
| * @return {@link IMarker#SEVERITY_INFO}, {@link IMarker#SEVERITY_WARNING}, {@link IMarker#SEVERITY_ERROR}, or -1 |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| * @since 3.3 |
| */ |
| public int findMaxProblemSeverity(String type, boolean includeSubtypes, int depth) throws CoreException; |
| |
| /** |
| * Returns the file extension portion of this resource's name, |
| * or <code>null</code> if it does not have one. |
| * <p> |
| * The file extension portion is defined as the string |
| * following the last period (".") character in the name. |
| * If there is no period in the name, the path has no |
| * file extension portion. If the name ends in a period, |
| * the file extension portion is the empty string. |
| * </p> |
| * <p> |
| * This is a resource handle operation; the resource need |
| * not exist. |
| * </p> |
| * |
| * @return a string file extension |
| * @see #getName() |
| */ |
| public String getFileExtension(); |
| |
| /** |
| * Returns the full, absolute path of this resource relative to the |
| * workspace. |
| * <p> |
| * This is a resource handle operation; the resource need |
| * not exist. |
| * If this resource does exist, its path can be safely assumed to be valid. |
| * </p> |
| * <p> |
| * A resource's full path indicates the route from the root of the workspace |
| * to the resource. Within a workspace, there is exactly one such path |
| * for any given resource. The first segment of these paths name a project; |
| * remaining segments, folders and/or files within that project. |
| * The returned path never has a trailing separator. The path of the |
| * workspace root is <code>Path.ROOT</code>. |
| * </p> |
| * <p> |
| * Since absolute paths contain the name of the project, they are |
| * vulnerable when the project is renamed. For most situations, |
| * project-relative paths are recommended over absolute paths. |
| * </p> |
| * |
| * @return the absolute path of this resource |
| * @see #getProjectRelativePath() |
| * @see Path#ROOT |
| */ |
| public IPath getFullPath(); |
| |
| /** |
| * Returns a cached value of the local time stamp on disk for this resource, or |
| * {@link #NULL_STAMP} if the resource does not exist or is not local or is |
| * not accessible. The return value is represented as the number of milliseconds |
| * since the epoch (00:00:00 GMT, January 1, 1970). |
| * The returned value may not be the same as the actual time stamp |
| * on disk if the file has been modified externally since the last local refresh. |
| * <p> |
| * Note that due to varying file system timing granularities, this value is not guaranteed |
| * to change every time the file is modified. For a more reliable indication of whether |
| * the file has changed, use {@link #getModificationStamp}. |
| * |
| * @return a local file system time stamp, or {@link #NULL_STAMP}. |
| * @since 3.0 |
| */ |
| public long getLocalTimeStamp(); |
| |
| /** |
| * Returns the absolute path in the local file system to this resource, |
| * or <code>null</code> if no path can be determined. |
| * <p> |
| * If this resource is the workspace root, this method returns |
| * the absolute local file system path of the platform working area. |
| * </p><p> |
| * If this resource is a project that exists in the workspace, this method |
| * returns the path to the project's local content area. This is true regardless |
| * of whether the project is open or closed. This value will be null in the case |
| * where the location is relative to an undefined workspace path variable. |
| * </p><p> |
| * If this resource is a linked resource under a project that is open, this |
| * method returns the resolved path to the linked resource's local contents. |
| * This value will be null in the case where the location is relative to an |
| * undefined workspace path variable. |
| * </p><p> |
| * If this resource is a file or folder under a project that exists, or a |
| * linked resource under a closed project, this method returns a (non- |
| * <code>null</code>) path computed from the location of the project's local |
| * content area and the project- relative path of the file or folder. This is |
| * true regardless of whether the file or folders exists, or whether the project |
| * is open or closed. In the case of linked resources, the location of a linked resource |
| * within a closed project is too computed from the location of the |
| * project's local content area and the project-relative path of the resource. If the |
| * linked resource resides in an open project then its location is computed |
| * according to the link. |
| * </p><p> |
| * If this resource is a project that does not exist in the workspace, |
| * or a file or folder below such a project, this method returns |
| * <code>null</code>. This method also returns <code>null</code> if called |
| * on a resource that is not stored in the local file system. For such resources |
| * {@link #getLocationURI()} should be used instead. |
| * </p> |
| * |
| * @return the absolute path of this resource in the local file system, |
| * or <code>null</code> if no path can be determined |
| * @see #getRawLocation() |
| * @see #getLocationURI() |
| * @see IProjectDescription#setLocation(IPath) |
| * @see Platform#getLocation() |
| */ |
| public IPath getLocation(); |
| |
| /** |
| * Returns the absolute URI of this resource, |
| * or <code>null</code> if no URI can be determined. |
| * <p> |
| * If this resource is the workspace root, this method returns |
| * the absolute location of the platform working area. |
| * </p><p> |
| * If this resource is a project that exists in the workspace, this method |
| * returns the URI to the project's local content area. This is true regardless |
| * of whether the project is open or closed. This value will be null in the case |
| * where the location is relative to an undefined workspace path variable. |
| * </p><p> |
| * If this resource is a linked resource under a project that is open, this |
| * method returns the resolved URI to the linked resource's local contents. |
| * This value will be null in the case where the location is relative to an |
| * undefined workspace path variable. |
| * </p><p> |
| * If this resource is a file or folder under a project that exists, or a |
| * linked resource under a closed project, this method returns a (non- |
| * <code>null</code>) URI computed from the location of the project's local |
| * content area and the project- relative path of the file or folder. This is |
| * true regardless of whether the file or folders exists, or whether the project |
| * is open or closed. In the case of linked resources, the location of a linked resource |
| * within a closed project is computed from the location of the |
| * project's local content area and the project-relative path of the resource. If the |
| * linked resource resides in an open project then its location is computed |
| * according to the link. |
| * </p><p> |
| * If this resource is a project that does not exist in the workspace, |
| * or a file or folder below such a project, this method returns |
| * <code>null</code>. |
| * </p> |
| * |
| * @return the absolute URI of this resource, |
| * or <code>null</code> if no URI can be determined |
| * @see #getRawLocation() |
| * @see IProjectDescription#setLocation(IPath) |
| * @see Platform#getLocation() |
| * @see java.net.URI |
| * @since 3.2 |
| */ |
| public URI getLocationURI(); |
| |
| /** |
| * Returns a marker handle with the given id on this resource. |
| * This resource is not checked to see if it has such a marker. |
| * The returned marker need not exist. |
| * This resource need not exist. |
| * |
| * @param id the id of the marker |
| * @return the specified marker handle |
| * @see IMarker#getId() |
| */ |
| public IMarker getMarker(long id); |
| |
| /** |
| * Returns a non-negative modification stamp, or {@link #NULL_STAMP} if |
| * the resource does not exist or is not local or is not accessible. |
| * <p> |
| * A resource's modification stamp gets updated each time a resource is modified. |
| * If a resource's modification stamp is the same, the resource has not changed. |
| * Conversely, if a resource's modification stamp is different, some aspect of it |
| * (other than properties) has been modified at least once (possibly several times). |
| * Resource modification stamps are preserved across project close/re-open, |
| * and across workspace shutdown/restart. |
| * The magnitude or sign of the numerical difference between two modification stamps |
| * is not significant. |
| * </p> |
| * <p> |
| * The following things affect a resource's modification stamp: |
| * <ul> |
| * <li>creating a non-project resource (changes from {@link #NULL_STAMP})</li> |
| * <li>changing the contents of a file</li> |
| * <li><code>touch</code>ing a resource</li> |
| * <li>setting the attributes of a project presented in a project description</li> |
| * <li>deleting a resource (changes to {@link #NULL_STAMP})</li> |
| * <li>moving a resource (source changes to {@link #NULL_STAMP}, |
| destination changes from {@link #NULL_STAMP})</li> |
| * <li>copying a resource (destination changes from {@link #NULL_STAMP})</li> |
| * <li>making a resource local</li> |
| * <li>closing a project (changes to {@link #NULL_STAMP})</li> |
| * <li>opening a project (changes from {@link #NULL_STAMP})</li> |
| * <li>adding or removing a project nature (changes from {@link #NULL_STAMP})</li> |
| * </ul> |
| * The following things do not affect a resource's modification stamp: |
| * <ul> |
| * <li>"reading" a resource</li> |
| * <li>adding or removing a member of a project or folder</li> |
| * <li>setting a session property</li> |
| * <li>setting a persistent property</li> |
| * <li>saving the workspace</li> |
| * <li>shutting down and re-opening a workspace</li> |
| * </ul> |
| * </p> |
| * |
| * @return the modification stamp, or {@link #NULL_STAMP} if this resource either does |
| * not exist or exists as a closed project |
| * @see IResource#NULL_STAMP |
| * @see #revertModificationStamp(long) |
| */ |
| public long getModificationStamp(); |
| |
| /** |
| * Returns the name of this resource. |
| * The name of a resource is synonymous with the last segment |
| * of its full (or project-relative) path for all resources other than the |
| * workspace root. The workspace root's name is the empty string. |
| * <p> |
| * This is a resource handle operation; the resource need |
| * not exist. |
| * </p> |
| * <p> |
| * If this resource exists, its name can be safely assumed to be valid. |
| * </p> |
| * |
| * @return the name of the resource |
| * @see #getFullPath() |
| * @see #getProjectRelativePath() |
| */ |
| public String getName(); |
| |
| /** |
| * Returns the path variable manager for this resource. |
| * |
| * @return the path variable manager |
| * @see IPathVariableManager |
| * @since 3.6 |
| */ |
| public IPathVariableManager getPathVariableManager(); |
| |
| /** |
| * Returns the resource which is the parent of this resource, |
| * or <code>null</code> if it has no parent (that is, this |
| * resource is the workspace root). |
| * <p> |
| * The full path of the parent resource is the same as this |
| * resource's full path with the last segment removed. |
| * </p> |
| * <p> |
| * This is a resource handle operation; neither the resource |
| * nor the resulting resource need exist. |
| * </p> |
| * |
| * @return the parent resource of this resource, |
| * or <code>null</code> if it has no parent |
| */ |
| public IContainer getParent(); |
| |
| /** |
| * Returns a copy of the map of this resource's persistent properties. |
| * Returns an empty map if this resource has no persistent properties. |
| * |
| * @return the map containing the persistent properties where the key is |
| * the {@link QualifiedName} of the property and the value is the {@link String} |
| * value of the property. |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see #setPersistentProperty(QualifiedName, String) |
| * @since 3.4 |
| */ |
| public Map<QualifiedName, String> getPersistentProperties() throws CoreException; |
| |
| /** |
| * Returns the value of the persistent property of this resource identified |
| * by the given key, or <code>null</code> if this resource has no such property. |
| * |
| * @param key the qualified name of the property |
| * @return the string value of the property, |
| * or <code>null</code> if this resource has no such property |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see #setPersistentProperty(QualifiedName, String) |
| */ |
| public String getPersistentProperty(QualifiedName key) throws CoreException; |
| |
| /** |
| * Returns the project which contains this resource. |
| * Returns itself for projects and <code>null</code> |
| * for the workspace root. |
| * <p> |
| * A resource's project is the one named by the first segment |
| * of its full path. |
| * </p> |
| * <p> |
| * This is a resource handle operation; neither the resource |
| * nor the resulting project need exist. |
| * </p> |
| * |
| * @return the project handle |
| */ |
| public IProject getProject(); |
| |
| /** |
| * Returns a relative path of this resource with respect to its project. |
| * Returns the empty path for projects and the workspace root. |
| * <p> |
| * This is a resource handle operation; the resource need not exist. |
| * If this resource does exist, its path can be safely assumed to be valid. |
| * </p> |
| * <p> |
| * A resource's project-relative path indicates the route from the project |
| * to the resource. Within a project, there is exactly one such path |
| * for any given resource. The returned path never has a trailing slash. |
| * </p> |
| * <p> |
| * Project-relative paths are recommended over absolute paths, since |
| * the former are not affected if the project is renamed. |
| * </p> |
| * |
| * @return the relative path of this resource with respect to its project |
| * @see #getFullPath() |
| * @see #getProject() |
| * @see Path#EMPTY |
| */ |
| public IPath getProjectRelativePath(); |
| |
| /** |
| * Returns the file system location of this resource, or <code>null</code> if no |
| * path can be determined. The returned path will either be an absolute file |
| * system path, or a relative path whose first segment is the name of a |
| * workspace path variable. |
| * <p> |
| * If this resource is an existing project, the returned path will be equal to |
| * the location path in the project description. If this resource is a linked |
| * resource in an open project, the returned path will be equal to the location |
| * path supplied when the linked resource was created. In all other cases, this |
| * method returns the same value as {@link #getLocation()}. |
| * </p> |
| * |
| * @return the raw path of this resource in the local file system, or |
| * <code>null</code> if no path can be determined |
| * @see #getLocation() |
| * @see IFile#createLink(IPath, int, IProgressMonitor) |
| * @see IFolder#createLink(IPath, int, IProgressMonitor) |
| * @see IPathVariableManager |
| * @see IProjectDescription#getLocation() |
| * @since 2.1 |
| */ |
| public IPath getRawLocation(); |
| |
| /** |
| * Returns the raw location of this resource, or <code>null</code> if no |
| * path can be determined. The returned path will either be an absolute URI, |
| * or a relative URI whose first path segment is the name of a workspace path variable. |
| * Since the returned location may contain unresolved variables, the resulting URI |
| * is typically only suitable for display. To access or manipulate the actual resource |
| * backing location, clients should obtain the resolved location using {@link #getLocationURI()}. |
| * <p> |
| * If this resource is an existing project, the returned location will be equal to |
| * the location URI in the project description. If this resource is a linked |
| * resource in an open project, the returned location will be equal to the location URI |
| * supplied when the linked resource was created. In all other cases, this |
| * method returns the same value as {@link #getLocationURI()}. |
| * </p> |
| * |
| * @return the raw location of this resource, or <code>null</code> if no |
| * location can be determined |
| * @see #getLocationURI() |
| * @see IFile#createLink(URI, int, IProgressMonitor) |
| * @see IFolder#createLink(URI, int, IProgressMonitor) |
| * @see IPathVariableManager |
| * @see IProjectDescription#getLocationURI() |
| * @since 3.2 |
| */ |
| public URI getRawLocationURI(); |
| |
| /** |
| * Gets this resource's extended attributes from the file system, |
| * or <code>null</code> if the attributes could not be obtained. |
| * <p> |
| * Reasons for a <code>null</code> return value include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * </p><p> |
| * Attributes that are not supported by the underlying file system |
| * will have a value of <code>false</code>. |
| * </p><p> |
| * Sample usage: <br> |
| * <br> |
| * <code> |
| * IResource resource; <br> |
| * ... <br> |
| * ResourceAttributes attributes = resource.getResourceAttributes(); <br> |
| * if (attributes != null) { |
| * attributes.setExecutable(true); <br> |
| * resource.setResourceAttributes(attributes); <br> |
| * } |
| * </code> |
| * </p> |
| * |
| * @return the extended attributes from the file system, or |
| * <code>null</code> if they could not be obtained |
| * @see #setResourceAttributes(ResourceAttributes) |
| * @see ResourceAttributes |
| * @since 3.1 |
| */ |
| public ResourceAttributes getResourceAttributes(); |
| |
| /** |
| * Returns a copy of the map of this resource's session properties. |
| * Returns an empty map if this resource has no session properties. |
| * |
| * @return the map containing the session properties where the key is |
| * the {@link QualifiedName} of the property and the value is the property |
| * value (an {@link Object}. |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see #setSessionProperty(QualifiedName, Object) |
| * @since 3.4 |
| */ |
| public Map<QualifiedName, Object> getSessionProperties() throws CoreException; |
| |
| /** |
| * Returns the value of the session property of this resource identified |
| * by the given key, or <code>null</code> if this resource has no such property. |
| * |
| * @param key the qualified name of the property |
| * @return the value of the session property, |
| * or <code>null</code> if this resource has no such property |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see #setSessionProperty(QualifiedName, Object) |
| */ |
| public Object getSessionProperty(QualifiedName key) throws CoreException; |
| |
| /** |
| * Returns the type of this resource. |
| * The returned value will be one of {@link #FILE}, {@link #FOLDER}, {@link #PROJECT}, {@link #ROOT}. |
| * <p> |
| * <ul> |
| * <li> All resources of type {@link #FILE} implement {@link IFile}.</li> |
| * <li> All resources of type {@link #FOLDER} implement {@link IFolder}.</li> |
| * <li> All resources of type {@link #PROJECT} implement {@link IProject}.</li> |
| * <li> All resources of type {@link #ROOT} implement {@link IWorkspaceRoot}.</li> |
| * </ul> |
| * </p> |
| * <p> |
| * This is a resource handle operation; the resource need not exist in the workspace. |
| * </p> |
| * |
| * @return the type of this resource |
| * @see #FILE |
| * @see #FOLDER |
| * @see #PROJECT |
| * @see #ROOT |
| */ |
| public int getType(); |
| |
| /** |
| * Returns the workspace which manages this resource. |
| * <p> |
| * This is a resource handle operation; the resource need not exist in the workspace. |
| * </p> |
| * |
| * @return the workspace |
| */ |
| public IWorkspace getWorkspace(); |
| |
| /** |
| * Returns whether this resource is accessible. For files and folders, |
| * this is equivalent to existing; for projects, |
| * this is equivalent to existing and being open. The workspace root |
| * is always accessible. |
| * |
| * @return <code>true</code> if this resource is accessible, and <code>false</code> otherwise |
| * @see #exists() |
| * @see IProject#isOpen() |
| */ |
| public boolean isAccessible(); |
| |
| /** |
| * Returns whether this resource subtree is marked as derived. Returns |
| * <code>false</code> if this resource does not exist. |
| * |
| * <p> |
| * This is a convenience method, |
| * fully equivalent to <code>isDerived(IResource.NONE)</code>. |
| * </p> |
| * |
| * @return <code>true</code> if this resource is marked as derived, and |
| * <code>false</code> otherwise |
| * @see #setDerived(boolean) |
| * @since 2.0 |
| */ |
| public boolean isDerived(); |
| |
| /** |
| * Returns whether this resource subtree is marked as derived. Returns |
| * <code>false</code> if this resource does not exist. |
| * |
| * <p> |
| * The {@link #CHECK_ANCESTORS} option flag indicates whether this method |
| * should consider ancestor resources in its calculation. If the |
| * {@link #CHECK_ANCESTORS} flag is present, this method will return |
| * <code>true</code>, if this resource, or any parent resource, is marked |
| * as derived. If the {@link #CHECK_ANCESTORS} option flag is not specified, |
| * this method returns false for children of derived resources. |
| * </p> |
| * |
| * @param options bit-wise or of option flag constants (only {@link #CHECK_ANCESTORS} is applicable) |
| * @return <code>true</code> if this resource subtree is derived, and <code>false</code> otherwise |
| * @see IResource#setDerived(boolean) |
| * @since 3.4 |
| */ |
| public boolean isDerived(int options); |
| |
| /** |
| * Returns whether this resource is hidden in the resource tree. Returns |
| * <code>false</code> if this resource does not exist. |
| * <p> |
| * This operation is not related to the file system hidden attribute accessible using |
| * {@link ResourceAttributes#isHidden()}. |
| * </p> |
| * |
| * @return <code>true</code> if this resource is hidden, and <code>false</code> otherwise |
| * @see #setHidden(boolean) |
| * @since 3.4 |
| */ |
| public boolean isHidden(); |
| |
| /** |
| * Returns whether this resource is hidden in the resource tree. Returns |
| * <code>false</code> if this resource does not exist. |
| * <p> |
| * This operation is not related to the file system hidden attribute |
| * accessible using {@link ResourceAttributes#isHidden()}. |
| * </p> |
| * <p> |
| * The {@link #CHECK_ANCESTORS} option flag indicates whether this method |
| * should consider ancestor resources in its calculation. If the |
| * {@link #CHECK_ANCESTORS} flag is present, this method will return |
| * <code>true</code> if this resource, or any parent resource, is a hidden |
| * resource. If the {@link #CHECK_ANCESTORS} option flag is not specified, |
| * this method returns false for children of hidden resources. |
| * </p> |
| * |
| * @param options |
| * bit-wise or of option flag constants (only |
| * {@link #CHECK_ANCESTORS} is applicable) |
| * @return <code>true</code> if this resource is hidden , and |
| * <code>false</code> otherwise |
| * @see #setHidden(boolean) |
| * @since 3.5 |
| */ |
| public boolean isHidden(int options); |
| |
| /** |
| * Returns whether this resource has been linked to |
| * a location other than the default location calculated by the platform. |
| * <p> |
| * This is a convenience method, fully equivalent to |
| * <code>isLinked(IResource.NONE)</code>. |
| * </p> |
| * |
| * @return <code>true</code> if this resource is linked, and |
| * <code>false</code> otherwise |
| * @see IFile#createLink(IPath, int, IProgressMonitor) |
| * @see IFolder#createLink(IPath, int, IProgressMonitor) |
| * @since 2.1 |
| */ |
| public boolean isLinked(); |
| |
| /** |
| * Returns whether this resource is a virtual resource. Returns <code>true</code> |
| * for folders that have been marked virtual using the {@link #VIRTUAL} update |
| * flag. Returns <code>false</code> in all other cases, including |
| * the case where this resource does not exist. The workspace root, projects |
| * and files currently cannot be made virtual. |
| * |
| * @return <code>true</code> if this resource is virtual, and |
| * <code>false</code> otherwise |
| * @see IFile#create(java.io.InputStream, int, IProgressMonitor) |
| * @see #VIRTUAL |
| * @since 3.6 |
| */ |
| public boolean isVirtual(); |
| |
| /** |
| * Returns <code>true</code> if this resource has been linked to |
| * a location other than the default location calculated by the platform. This |
| * location can be outside the project's content area or another location |
| * within the project. Returns <code>false</code> in all other cases, including |
| * the case where this resource does not exist. The workspace root and |
| * projects are never linked. |
| * <p> |
| * This method returns true for a resource that has been linked using |
| * the <code>createLink</code> method. |
| * </p> |
| * <p> |
| * The {@link #CHECK_ANCESTORS} option flag indicates whether this method |
| * should consider ancestor resources in its calculation. If the |
| * {@link #CHECK_ANCESTORS} flag is present, this method will return |
| * <code>true</code> if this resource, or any parent resource, is a linked |
| * resource. If the {@link #CHECK_ANCESTORS} option flag is not specified, |
| * this method returns false for children of linked resources. |
| * </p> |
| * |
| * @param options bit-wise or of option flag constants |
| * (only {@link #CHECK_ANCESTORS} is applicable) |
| * @return <code>true</code> if this resource is linked, and |
| * <code>false</code> otherwise |
| * @see IFile#createLink(IPath, int, IProgressMonitor) |
| * @see IFolder#createLink(IPath, int, IProgressMonitor) |
| * @since 3.2 |
| */ |
| public boolean isLinked(int options); |
| |
| /** |
| * Returns whether this resource and its members (to the |
| * specified depth) are expected to have their contents (and properties) |
| * available locally. Returns <code>false</code> in all other cases, |
| * including the case where this resource does not exist. The workspace |
| * root and projects are always local. |
| * <p> |
| * When a resource is not local, its content and properties are |
| * unavailable for both reading and writing. |
| * </p> |
| * |
| * @param depth valid values are {@link #DEPTH_ZERO}, {@link #DEPTH_ONE}, or {@link #DEPTH_INFINITE} |
| * @return <code>true</code> if this resource is local, and <code>false</code> otherwise |
| * |
| * @see #setLocal(boolean, int, IProgressMonitor) |
| * @deprecated This API is no longer in use. Note that this API is unrelated |
| * to whether the resource is in the local file system versus some other file system. |
| */ |
| @Deprecated |
| public boolean isLocal(int depth); |
| |
| /** |
| * Returns whether this resource is a phantom resource. |
| * <p> |
| * The workspace uses phantom resources to remember outgoing deletions and |
| * incoming additions relative to an external synchronization partner. Phantoms |
| * appear and disappear automatically as a byproduct of synchronization. |
| * Since the workspace root cannot be synchronized in this way, it is never a phantom. |
| * Projects are also never phantoms. |
| * </p> |
| * <p> |
| * The key point is that phantom resources do not exist (in the technical |
| * sense of <code>exists</code>, which returns <code>false</code> |
| * for phantoms) are therefore invisible except through a handful of |
| * phantom-enabled API methods (notably <code>IContainer.members(boolean)</code>). |
| * </p> |
| * |
| * @return <code>true</code> if this resource is a phantom resource, and |
| * <code>false</code> otherwise |
| * @see #exists() |
| * @see IContainer#members(boolean) |
| * @see IContainer#findMember(String, boolean) |
| * @see IContainer#findMember(IPath, boolean) |
| * @see ISynchronizer |
| */ |
| public boolean isPhantom(); |
| |
| /** |
| * Returns whether this resource is marked as read-only in the file system. |
| * |
| * @return <code>true</code> if this resource is read-only, |
| * <code>false</code> otherwise |
| * @deprecated use {@link #getResourceAttributes()} |
| */ |
| @Deprecated |
| public boolean isReadOnly(); |
| |
| /** |
| * Returns whether this resource and its descendents to the given depth |
| * are considered to be in sync with the local file system. |
| * <p> |
| * A resource is considered to be in sync if all of the following |
| * conditions are true: |
| * <ul> |
| * <li>The resource exists in both the workspace and the file system.</li> |
| * <li>The timestamp in the file system has not changed since the |
| * last synchronization.</li> |
| * <li>The resource in the workspace is of the same type as the corresponding |
| * file in the file system (they are either both files or both folders).</li> |
| * </ul> |
| * A resource is also considered to be in sync if it is missing from both |
| * the workspace and the file system. In all other cases the resource is |
| * considered to be out of sync. |
| * </p> |
| * <p> |
| * This operation interrogates files and folders in the local file system; |
| * depending on the speed of the local file system and the requested depth, |
| * this operation may be time-consuming. |
| * </p> |
| * |
| * @param depth the depth (one of {@link #DEPTH_ZERO}, {@link #DEPTH_ONE}, or {@link #DEPTH_INFINITE}) |
| * @return <code>true</code> if this resource and its descendents to the |
| * specified depth are synchronized, and <code>false</code> in all other |
| * cases |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| * @see #refreshLocal(int, IProgressMonitor) |
| * @since 2.0 |
| */ |
| public boolean isSynchronized(int depth); |
| |
| /** |
| * Returns whether this resource is a team private member of its parent container. |
| * Returns <code>false</code> if this resource does not exist. |
| * |
| * @return <code>true</code> if this resource is a team private member, and |
| * <code>false</code> otherwise |
| * @see #setTeamPrivateMember(boolean) |
| * @since 2.0 |
| */ |
| public boolean isTeamPrivateMember(); |
| |
| /** |
| * Returns whether this resource is a team private member of its parent |
| * container. Returns <code>false</code> if this resource does not exist. |
| * <p> |
| * The {@link #CHECK_ANCESTORS} option flag indicates whether this method |
| * should consider ancestor resources in its calculation. If the |
| * {@link #CHECK_ANCESTORS} flag is present, this method will return |
| * <code>true</code> if this resource, or any parent resource, is a team |
| * private member. If the {@link #CHECK_ANCESTORS} option flag is not |
| * specified, this method returns false for children of team private |
| * members. |
| * </p> |
| * |
| * @param options |
| * bit-wise or of option flag constants (only |
| * {@link #CHECK_ANCESTORS} is applicable) |
| * @return <code>true</code> if this resource is a team private member, and |
| * <code>false</code> otherwise |
| * @see #setTeamPrivateMember(boolean) |
| * @since 3.5 |
| */ |
| public boolean isTeamPrivateMember(int options); |
| |
| /** |
| * Moves this resource so that it is located at the given path. |
| * <p> |
| * This is a convenience method, fully equivalent to: |
| * <pre> |
| * move(destination, force ? FORCE : IResource.NONE, monitor); |
| * </pre> |
| * </p> |
| * <p> |
| * This method changes resources; these changes will be reported |
| * in a subsequent resource change event that will include |
| * an indication that the resource has been removed from its parent |
| * and that a corresponding resource has been added to its new parent. |
| * Additional information provided with resource delta shows that these |
| * additions and removals are related. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param destination the destination path |
| * @param force a flag controlling whether resources that are not |
| * in sync with the local file system will be tolerated |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be moved. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> The source or destination is the workspace root.</li> |
| * <li> The source is a project but the destination is not.</li> |
| * <li> The destination is a project but the source is not.</li> |
| * <li> The resource corresponding to the parent destination path does not exist.</li> |
| * <li> The resource corresponding to the parent destination path is a closed |
| * project.</li> |
| * <li> A resource at destination path does exist.</li> |
| * <li> A resource of a different type exists at the destination path.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file |
| * system and <code>force</code> is <code>false</code>.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendents.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * <li> The source resource is a file and the destination path specifies a project.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see IResourceDelta#getFlags() |
| */ |
| public void move(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Moves this resource so that it is located at the given path. |
| * The path of the resource must not be a prefix of the destination path. The |
| * workspace root may not be the source or destination location of a move |
| * operation, and a project can only be moved to another project. After |
| * successful completion, the resource and any direct or indirect members will |
| * no longer exist; but corresponding new resources will now exist at the given |
| * path. |
| * <p> |
| * The supplied path may be absolute or relative. Absolute paths fully specify |
| * the new location for the resource, including its project. Relative paths are |
| * considered to be relative to the container of the resource being moved. A |
| * trailing slash is ignored. |
| * </p> |
| * <p> |
| * Calling this method with a one segment absolute destination path is |
| * equivalent to calling: |
| * <pre> |
| IProjectDescription description = getDescription(); |
| description.setName(path.lastSegment()); |
| move(description, updateFlags, monitor); |
| * </pre> |
| * </p> |
| * <p> When a resource moves, its session and persistent properties move with |
| * it. Likewise for all other attributes of the resource including markers. |
| * </p> |
| * <p> |
| * The {@link #FORCE} update flag controls how this method deals with cases |
| * where the workspace is not completely in sync with the local file system. If |
| * {@link #FORCE} is not specified, the method will only attempt to move |
| * resources that are in sync with the corresponding files and directories in |
| * the local file system; it will fail if it encounters a resource that is out |
| * of sync with the file system. However, if {@link #FORCE} is specified, |
| * the method moves all corresponding files and directories from the local file |
| * system, including ones that have been recently updated or created. Note that |
| * in both settings of the {@link #FORCE} flag, the operation fails if the |
| * newly created resources in the workspace would be out of sync with the local |
| * file system; this ensures files in the file system cannot be accidentally |
| * overwritten. |
| * </p> |
| * <p> |
| * The {@link #KEEP_HISTORY} update flag controls whether or not |
| * file that are about to be deleted from the local file system have their |
| * current contents saved in the workspace's local history. The local history |
| * mechanism serves as a safety net to help the user recover from mistakes that |
| * might otherwise result in data loss. Specifying {@link #KEEP_HISTORY} |
| * is recommended except in circumstances where past states of the files are of |
| * no conceivable interest to the user. Note that local history is maintained |
| * with each individual project, and gets discarded when a project is deleted |
| * from the workspace. Hence {@link #KEEP_HISTORY} is only really applicable |
| * when moving files and folders, but not whole projects. |
| * </p> |
| * <p> |
| * If this resource is not a project, an attempt will be made to copy the local history |
| * for this resource and its children, to the destination. Since local history existence |
| * is a safety-net mechanism, failure of this action will not result in automatic failure |
| * of the move operation. |
| * </p> |
| * <p> |
| * The {@link #SHALLOW} update flag controls how this method deals with linked |
| * resources. If {@link #SHALLOW} is not specified, then the underlying |
| * contents of the linked resource will always be moved in the file system. In |
| * this case, the destination of the move will never be a linked resource or |
| * contain any linked resources. If {@link #SHALLOW} is specified when a |
| * linked resource is moved into another project, a new linked resource is |
| * created in the destination project that points to the same file system |
| * location. When a project containing linked resources is moved, the new |
| * project will contain the same linked resources pointing to the same file |
| * system locations. For either of these cases, no files on disk under the |
| * linked resource are actually moved. With the {@link #SHALLOW} flag, |
| * moving of linked resources into anything other than a project is not |
| * permitted. The {@link #SHALLOW} update flag is ignored when moving non- |
| * linked resources. |
| * </p> |
| * <p> |
| * Update flags other than {@link #FORCE}, {@link #KEEP_HISTORY}and |
| * {@link #SHALLOW} are ignored. |
| * </p> |
| * <p> |
| * This method changes resources; these changes will be reported in a subsequent |
| * resource change event that will include an indication that the resource has |
| * been removed from its parent and that a corresponding resource has been added |
| * to its new parent. Additional information provided with resource delta shows |
| * that these additions and removals are related. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param destination the destination path |
| * @param updateFlags bit-wise or of update flag constants |
| * ({@link #FORCE}, {@link #KEEP_HISTORY} and {@link #SHALLOW}) |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be moved. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> The source or destination is the workspace root.</li> |
| * <li> The source is a project but the destination is not.</li> |
| * <li> The destination is a project but the source is not.</li> |
| * <li> The resource corresponding to the parent destination path does not exist.</li> |
| * <li> The resource corresponding to the parent destination path is a closed |
| * project.</li> |
| * <li> The source is a linked resource, but the destination is not a project |
| * and {@link #SHALLOW} is specified.</li> |
| * <li> A resource at destination path does exist.</li> |
| * <li> A resource of a different type exists at the destination path.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file system |
| * and <code>force</code> is <code>false</code>.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendents.</li> |
| * <li> The source resource is a file and the destination path specifies a project.</li> |
| * <li> The location of the source resource on disk is the same or a prefix of |
| * the location of the destination resource on disk.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see IResourceDelta#getFlags() |
| * @see #FORCE |
| * @see #KEEP_HISTORY |
| * @see #SHALLOW |
| * @see IResourceRuleFactory#moveRule(IResource, IResource) |
| * @since 2.0 |
| */ |
| public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Renames or relocates this project so that it is the project specified by the given project |
| * description. |
| * <p> |
| * This is a convenience method, fully equivalent to: |
| * <pre> |
| * move(description, (keepHistory ? KEEP_HISTORY : IResource.NONE) | (force ? FORCE : IResource.NONE), monitor); |
| * </pre> |
| * </p> |
| * <p> |
| * This operation changes resources; these changes will be reported |
| * in a subsequent resource change event that will include |
| * an indication that the resource has been removed from its parent |
| * and that a corresponding resource has been added to its new parent. |
| * Additional information provided with resource delta shows that these |
| * additions and removals are related. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param description the destination project description |
| * @param force a flag controlling whether resources that are not |
| * in sync with the local file system will be tolerated |
| * @param keepHistory a flag indicating whether or not to keep |
| * local history for files |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be moved. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> This resource is not a project.</li> |
| * <li> The project at the destination already exists.</li> |
| * <li> This resource or one of its descendents is out of sync with the local file |
| * system and <code>force</code> is <code>false</code>.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendents.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see IResourceDelta#getFlags() |
| */ |
| public void move(IProjectDescription description, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Renames or relocates this project so that it is the project specified by the |
| * given project description. The description specifies the name and location |
| * of the new project. After successful completion, the old project |
| * and any direct or indirect members will no longer exist; but corresponding |
| * new resources will now exist in the new project. |
| * <p> |
| * When a resource moves, its session and persistent properties move with it. |
| * Likewise for all the other attributes of the resource including markers. |
| * </p> |
| * <p> |
| * When this project's location is the default location, then the directories |
| * and files on disk are moved to be in the location specified by the given |
| * description. If the given description specifies the default location for the |
| * project, the directories and files are moved to the default location. If the name |
| * in the given description is the same as this project's name and the location |
| * is different, then the project contents will be moved to the new location. |
| * In all other cases the directories and files on disk are left untouched. |
| * Parts of the supplied description other than the name and location are ignored. |
| * </p> |
| * <p> |
| * The {@link #FORCE} update flag controls how this method deals with cases |
| * where the workspace is not completely in sync with the local file system. If |
| * {@link #FORCE} is not specified, the method will only attempt to move |
| * resources that are in sync with the corresponding files and directories in |
| * the local file system; it will fail if it encounters a resource that is out |
| * of sync with the file system. However, if {@link #FORCE} is specified, |
| * the method moves all corresponding files and directories from the local file |
| * system, including ones that have been recently updated or created. Note that |
| * in both settings of the {@link #FORCE} flag, the operation fails if the |
| * newly created resources in the workspace would be out of sync with the local |
| * file system; this ensures files in the file system cannot be accidentally |
| * overwritten. |
| * </p> |
| * <p> |
| * The {@link #KEEP_HISTORY} update flag controls whether or not file that |
| * are about to be deleted from the local file system have their current |
| * contents saved in the workspace's local history. The local history mechanism |
| * serves as a safety net to help the user recover from mistakes that might |
| * otherwise result in data loss. Specifying {@link #KEEP_HISTORY} is |
| * recommended except in circumstances where past states of the files are of no |
| * conceivable interest to the user. Note that local history is maintained |
| * with each individual project, and gets discarded when a project is deleted |
| * from the workspace. Hence {@link #KEEP_HISTORY} is only really applicable |
| * when moving files and folders, but not whole projects. |
| * </p> |
| * <p> |
| * Local history information for this project and its children will not be moved to the |
| * destination. |
| * </p> |
| * <p> |
| * The {@link #SHALLOW} update flag controls how this method deals with linked |
| * resources. If {@link #SHALLOW} is not specified, then the underlying |
| * contents of any linked resource will always be moved in the file system. In |
| * this case, the destination of the move will not contain any linked resources. |
| * If {@link #SHALLOW} is specified when a project containing linked |
| * resources is moved, new linked resources are created in the destination |
| * project pointing to the same file system locations. In this case, no files |
| * on disk under any linked resource are actually moved. The |
| * {@link #SHALLOW} update flag is ignored when moving non- linked |
| * resources. |
| * </p> |
| * <p> |
| * The {@link #REPLACE} update flag controls how this method deals |
| * with a change of location. If the location changes and the {@link #REPLACE} |
| * flag is not specified, then the projects contents on disk are moved to the new |
| * location. If the location changes and the {@link #REPLACE} |
| * flag is specified, then the project is reoriented to correspond to the new |
| * location, but no contents are moved on disk. The contents already on |
| * disk at the new location become the project contents. If the new project |
| * location does not exist, it will be created. |
| * </p> |
| * <p> |
| * Update flags other than those listed above are ignored. |
| * </p> |
| * <p> |
| * This method changes resources; these changes will be reported in a subsequent |
| * resource change event that will include an indication that the resource has |
| * been removed from its parent and that a corresponding resource has been added |
| * to its new parent. Additional information provided with resource delta shows |
| * that these additions and removals are related. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param description the destination project description |
| * @param updateFlags bit-wise or of update flag constants |
| * ({@link #FORCE}, {@link #KEEP_HISTORY}, {@link #SHALLOW} and {@link #REPLACE}). |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this resource could not be moved. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource or one of its descendents is not local.</li> |
| * <li> This resource is not a project.</li> |
| * <li> The project at the destination already exists.</li> |
| * <li> This resource or one of its descendents is out of sync with the |
| * local file system and {@link #FORCE} is not specified.</li> |
| * <li> The workspace and the local file system are out of sync |
| * at the destination resource or one of its descendents.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * <li> The destination file system location is occupied. When moving a project |
| * in the file system, the destination directory must either not exist or be empty.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see IResourceDelta#getFlags() |
| * @see #FORCE |
| * @see #KEEP_HISTORY |
| * @see #SHALLOW |
| * @see #REPLACE |
| * @see IResourceRuleFactory#moveRule(IResource, IResource) |
| * @since 2.0 |
| */ |
| public void move(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Refreshes the resource hierarchy from this resource and its |
| * children (to the specified depth) relative to the local file system. |
| * Creations, deletions, and changes detected in the local file system |
| * will be reflected in the workspace's resource tree. |
| * This resource need not exist or be local. |
| * <p> |
| * This method may discover changes to resources; any such |
| * changes will be reported in a subsequent resource change event. |
| * </p> |
| * <p> |
| * If a new file or directory is discovered in the local file |
| * system at or below the location of this resource, |
| * any parent folders required to contain the new |
| * resource in the workspace will also be created automatically as required. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param depth valid values are {@link #DEPTH_ZERO}, {@link #DEPTH_ONE}, or {@link #DEPTH_INFINITE} |
| * @param monitor a progress monitor, or <code>null</code> if progress reporting is not desired |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see IResource#DEPTH_ZERO |
| * @see IResource#DEPTH_ONE |
| * @see IResource#DEPTH_INFINITE |
| * @see IResourceRuleFactory#refreshRule(IResource) |
| */ |
| public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Reverts this resource's modification stamp. This is intended to be used by |
| * a client that is rolling back or undoing a previous change to this resource. |
| * <p> |
| * It is the caller's responsibility to ensure that the value of the reverted |
| * modification stamp matches this resource's modification stamp prior to the |
| * change that has been rolled back. More generally, the caller must ensure |
| * that the specification of modification stamps outlined in |
| * <code>getModificationStamp</code> is honored; the modification stamp |
| * of two distinct resource states should be different if and only if one or more |
| * of the attributes listed in the specification as affecting the modification |
| * stamp have changed. |
| * <p> |
| * Reverting the modification stamp will <b>not</b> be reported in a |
| * subsequent resource change event. |
| * <p> |
| * Note that a resource's modification stamp is unrelated to the local |
| * time stamp for this resource on disk, if any. A resource's local time |
| * stamp is modified using the <code>setLocalTimeStamp</code> method. |
| * |
| * @param value A non-negative modification stamp value |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is not accessible.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see #getModificationStamp() |
| * @since 3.1 |
| */ |
| public void revertModificationStamp(long value) throws CoreException; |
| |
| /** |
| * Sets whether this resource subtree is marked as derived. |
| * <p> |
| * A <b>derived</b> resource is a regular file or folder that is |
| * created in the course of translating, compiling, copying, or otherwise |
| * processing other files. Derived resources are not original data, and can be |
| * recreated from other resources. It is commonplace to exclude derived |
| * resources from version and configuration management because they would |
| * otherwise clutter the team repository with version of these ever-changing |
| * files as each user regenerates them. |
| * </p> |
| * <p> |
| * If a resource or any of its ancestors is marked as derived, a team |
| * provider should assume that the resource is not under version and |
| * configuration management <i>by default</i>. That is, the resource |
| * should only be stored in a team repository if the user explicitly indicates |
| * that this resource is worth saving. |
| * </p> |
| * <p> |
| * Newly-created resources are not marked as derived; rather, the mark must be |
| * set explicitly using <code>setDerived(true)</code>. Derived marks are maintained |
| * in the in-memory resource tree, and are discarded when the resources are deleted. |
| * Derived marks are saved to disk when a project is closed, or when the workspace |
| * is saved. |
| * </p> |
| * <p> |
| * Projects and the workspace root are never considered derived; attempts to |
| * mark them as derived are ignored. |
| * </p> |
| * <p> |
| * This operation does <b>not</b> result in a resource change event, and does not |
| * trigger autobuilds. |
| * </p> |
| * |
| * @param isDerived <code>true</code> if this resource is to be marked |
| * as derived, and <code>false</code> otherwise |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see #isDerived() |
| * @since 2.0 |
| * @deprecated Replaced by {@link #setDerived(boolean, IProgressMonitor)} which |
| * is a workspace operation and reports changes in resource deltas. |
| */ |
| @Deprecated |
| public void setDerived(boolean isDerived) throws CoreException; |
| |
| /** |
| * Sets whether this resource subtree is marked as derived. |
| * <p> |
| * A <b>derived</b> resource is a regular file or folder that is |
| * created in the course of translating, compiling, copying, or otherwise |
| * processing other files. Derived resources are not original data, and can be |
| * recreated from other resources. It is commonplace to exclude derived |
| * resources from version and configuration management because they would |
| * otherwise clutter the team repository with version of these ever-changing |
| * files as each user regenerates them. |
| * </p> |
| * <p> |
| * If a resource or any of its ancestors is marked as derived, a team |
| * provider should assume that the resource is not under version and |
| * configuration management <i>by default</i>. That is, the resource |
| * should only be stored in a team repository if the user explicitly indicates |
| * that this resource is worth saving. |
| * </p> |
| * <p> |
| * Newly-created resources are not marked as derived; rather, the mark must be |
| * set explicitly using <code>setDerived(true, IProgressMonitor)</code>. Derived marks are maintained |
| * in the in-memory resource tree, and are discarded when the resources are deleted. |
| * Derived marks are saved to disk when a project is closed, or when the workspace |
| * is saved. |
| * </p> |
| * <p> |
| * Projects and the workspace root are never considered derived; attempts to |
| * mark them as derived are ignored. |
| * </p> |
| * <p> |
| * These changes will be reported in a subsequent resource change event, |
| * including an indication that this file's derived flag has changed. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param isDerived <code>true</code> if this resource is to be marked |
| * as derived, and <code>false</code> otherwise |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see #isDerived() |
| * @see IResourceRuleFactory#derivedRule(IResource) |
| * @since 3.6 |
| */ |
| public void setDerived(boolean isDerived, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Sets whether this resource and its members are hidden in the resource tree. |
| * <p> |
| * Hidden resources are invisible to most clients. Newly-created resources |
| * are not hidden resources by default. |
| * </p> |
| * <p> |
| * The workspace root is never considered hidden resource; |
| * attempts to mark it as hidden are ignored. |
| * </p> |
| * <p> |
| * This operation does <b>not</b> result in a resource change event, and does not |
| * trigger autobuilds. |
| * </p> |
| * <p> |
| * This operation is not related to {@link ResourceAttributes#setHidden(boolean)}. |
| * Whether a resource is hidden in the resource tree is unrelated to whether the |
| * underlying file is hidden in the file system. |
| * </p> |
| * |
| * @param isHidden <code>true</code> if this resource is to be marked |
| * as hidden, and <code>false</code> otherwise |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see #isHidden() |
| * @since 3.4 |
| */ |
| public void setHidden(boolean isHidden) throws CoreException; |
| |
| /** |
| * Set whether or not this resource and its members (to the |
| * specified depth) are expected to have their contents (and properties) |
| * available locally. The workspace root and projects are always local and |
| * attempting to set either to non-local (i.e., passing <code>false</code>) |
| * has no effect on the resource. |
| * <p> |
| * When a resource is not local, its content and properties are |
| * unavailable for both reading and writing. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param flag whether this resource should be considered local |
| * @param depth valid values are {@link #DEPTH_ZERO}, {@link #DEPTH_ONE}, or {@link #DEPTH_INFINITE} |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting is not desired |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See {@link IResourceChangeEvent} for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see #isLocal(int) |
| * @deprecated This API is no longer in use. Note that this API is unrelated |
| * to whether the resource is in the local file system versus some other file system. |
| */ |
| @Deprecated |
| public void setLocal(boolean flag, int depth, IProgressMonitor monitor) throws CoreException; |
| |
| /** |
| * Sets the local time stamp on disk for this resource. The time must be represented |
| * as the number of milliseconds since the epoch (00:00:00 GMT, January 1, 1970). |
| * Returns the actual time stamp that was recorded. |
| * Due to varying file system timing granularities, the provided value may be rounded |
| * or otherwise truncated, so the actual recorded time stamp that is returned may |
| * not be the same as the supplied value. |
| * |
| * @param value a time stamp in milliseconds. |
| * @return a local file system time stamp. |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is not accessible.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @since 3.0 |
| */ |
| public long setLocalTimeStamp(long value) throws CoreException; |
| |
| /** |
| * Sets the value of the persistent property of this resource identified |
| * by the given key. If the supplied value is <code>null</code>, |
| * the persistent property is removed from this resource. The change |
| * is made immediately on disk. |
| * <p> |
| * Persistent properties are intended to be used by plug-ins to store |
| * resource-specific information that should be persisted across platform sessions. |
| * The value of a persistent property is a string that must be short - |
| * 2KB or less in length. Unlike session properties, persistent properties are |
| * stored on disk and maintained across workspace shutdown and restart. |
| * </p> |
| * <p> |
| * The qualifier part of the property name must be the unique identifier |
| * of the declaring plug-in (e.g. <code>"com.example.plugin"</code>). |
| * </p> |
| * |
| * @param key the qualified name of the property |
| * @param value the string value of the property, |
| * or <code>null</code> if the property is to be removed |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see #getPersistentProperty(QualifiedName) |
| * @see #isLocal(int) |
| */ |
| public void setPersistentProperty(QualifiedName key, String value) throws CoreException; |
| |
| /** |
| * Sets or unsets this resource as read-only in the file system. |
| * |
| * @param readOnly <code>true</code> to set it to read-only, |
| * <code>false</code> to unset |
| * @deprecated use <tt>IResource#setResourceAttributes(ResourceAttributes)</tt> |
| */ |
| @Deprecated |
| public void setReadOnly(boolean readOnly); |
| |
| /** |
| * Sets this resource with the given extended attributes. This sets the |
| * attributes in the file system. Only attributes that are supported by |
| * the underlying file system will be set. |
| * <p> |
| * Sample usage: <br> |
| * <br> |
| * <code> |
| * IResource resource; <br> |
| * ... <br> |
| * if (attributes != null) { |
| * attributes.setExecutable(true); <br> |
| * resource.setResourceAttributes(attributes); <br> |
| * } |
| * </code> |
| * </p> |
| * <p> |
| * Note that a resource cannot be converted into a symbolic link by |
| * setting resource attributes with {@link ResourceAttributes#isSymbolicLink()} |
| * set to true. |
| * </p> |
| * |
| * @param attributes the attributes to set |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * </ul> |
| * @see #getResourceAttributes() |
| * @since 3.1 |
| */ |
| void setResourceAttributes(ResourceAttributes attributes) throws CoreException; |
| |
| /** |
| * Sets the value of the session property of this resource identified |
| * by the given key. If the supplied value is <code>null</code>, |
| * the session property is removed from this resource. |
| * <p> |
| * Sessions properties are intended to be used as a caching mechanism |
| * by ISV plug-ins. They allow key-object associations to be stored with |
| * existing resources in the workspace. These key-value associations are |
| * maintained in memory (at all times), and the information is lost when a |
| * resource is deleted from the workspace, when the parent project |
| * is closed, or when the workspace is closed. |
| * </p> |
| * <p> |
| * The qualifier part of the property name must be the unique identifier |
| * of the declaring plug-in (e.g. <code>"com.example.plugin"</code>). |
| * </p> |
| * |
| * @param key the qualified name of the property |
| * @param value the value of the session property, |
| * or <code>null</code> if the property is to be removed |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> This resource is a project that is not open.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see #getSessionProperty(QualifiedName) |
| */ |
| public void setSessionProperty(QualifiedName key, Object value) throws CoreException; |
| |
| /** |
| * Sets whether this resource subtree is a team private member of its parent container. |
| * <p> |
| * A <b>team private member</b> resource is a special file or folder created by a team |
| * provider to hold team-provider-specific information. Resources marked as team private |
| * members are invisible to most clients. |
| * </p> |
| * <p> |
| * Newly-created resources are not team private members by default; rather, the |
| * team provider must mark a resource explicitly using |
| * <code>setTeamPrivateMember(true)</code>. Team private member marks are |
| * maintained in the in-memory resource tree, and are discarded when the |
| * resources are deleted. Team private member marks are saved to disk when a |
| * project is closed, or when the workspace is saved. |
| * </p> |
| * <p> |
| * Projects and the workspace root are never considered team private members; |
| * attempts to mark them as team private are ignored. |
| * </p> |
| * <p> |
| * This operation does <b>not</b> result in a resource change event, and does not |
| * trigger autobuilds. |
| * </p> |
| * |
| * @param isTeamPrivate <code>true</code> if this resource is to be marked |
| * as team private, and <code>false</code> otherwise |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @see #isTeamPrivateMember() |
| * @since 2.0 |
| */ |
| public void setTeamPrivateMember(boolean isTeamPrivate) throws CoreException; |
| |
| /** |
| * Marks this resource as having changed even though its content |
| * may not have changed. This method can be used to trigger |
| * the rebuilding of resources/structures derived from this resource. |
| * Touching the workspace root has no effect. |
| * <p> |
| * This method changes resources; these changes will be reported |
| * in a subsequent resource change event. If the resource is a project, |
| * the change event will indicate a description change. |
| * </p> |
| * <p> |
| * This method is long-running; progress and cancellation are provided |
| * by the given progress monitor. |
| * </p> |
| * |
| * @param monitor a progress monitor, or <code>null</code> if progress reporting is not desired |
| * @exception CoreException if this method fails. Reasons include: |
| * <ul> |
| * <li> This resource does not exist.</li> |
| * <li> This resource is not local.</li> |
| * <li> Resource changes are disallowed during certain types of resource change |
| * event notification. See <code>IResourceChangeEvent</code> for more details.</li> |
| * </ul> |
| * @exception OperationCanceledException if the operation is canceled. |
| * Cancellation can occur even if no progress monitor is provided. |
| * @see IResourceRuleFactory#modifyRule(IResource) |
| * @see IResourceDelta#CONTENT |
| * @see IResourceDelta#DESCRIPTION |
| */ |
| public void touch(IProgressMonitor monitor) throws CoreException; |
| } |