package org.eclipse.ant.core; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
import org.eclipse.core.resources.*; | |
import org.eclipse.core.runtime.CoreException; | |
import org.eclipse.core.runtime.Path; | |
import java.util.Vector; | |
import org.apache.tools.ant.*; | |
import org.apache.tools.ant.types.PatternSet; | |
/** | |
* An Ant task which refreshes the Eclipse Platform's view of the local filesystem. | |
* <p> | |
* <b>Note:</b> This class/interface is part of an interim API that is still under | |
* development and expected to change significantly before reaching stability. | |
* It is being made available at this early stage to solicit feedback from pioneering | |
* adopters on the understanding that any code that uses this API will almost | |
* certainly be broken (repeatedly) as the API evolves. | |
* </p> | |
* @see IResource#refreshLocal | |
*/ | |
public class RefreshLocal extends Task { | |
/** | |
* Unique identifier constant (value <code>"DEPTH_ZERO"</code>) | |
* indicating that refreshes should be performed only on the target | |
* resource itself | |
*/ | |
public static final String DEPTH_ZERO = "zero"; | |
/** | |
* Unique identifier constant (value <code>"DEPTH_ONE"</code>) | |
* indicating that refreshes should be performed on the target | |
* resource and its children | |
*/ | |
public static final String DEPTH_ONE = "one"; | |
/** | |
* Unique identifier constant (value <code>"DEPTH_INFINITE"</code>) | |
* indicating that refreshes should be performed on the target | |
* resource and all of its recursive children | |
*/ | |
public static final String DEPTH_INFINITE = "infinite"; | |
/** | |
* The resource to refresh. | |
*/ | |
protected IResource resource; | |
/** | |
* The depth to refresh to. | |
*/ | |
protected int depth = IResource.DEPTH_INFINITE; | |
private IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); | |
/** | |
* Constructs a new <code>RefreshLocal</code> instance. | |
*/ | |
public RefreshLocal() { | |
super(); | |
} | |
/** | |
* Performs the refresh operation. | |
* | |
* @exception BuildException thrown if a problem occurs during execution. | |
*/ | |
public void execute() throws BuildException { | |
// make sure we don't have an illegal set of options | |
validateAttributes(); | |
// deal with the single resource | |
if (resource != null) { | |
if (!resource.exists()) | |
throw new BuildException(Policy.bind("exception.resourceNotFound",resource.toString())); | |
try { | |
resource.refreshLocal(depth, null); | |
return; | |
} catch (CoreException e) { | |
throw new BuildException(e); | |
} | |
} else | |
throw new BuildException(Policy.bind("exception.resourceNotSpecified")); | |
} | |
/** | |
* Refreshes a collection of resources. | |
* | |
* @param resources the names of the resources to refresh | |
* @exception BuildException thrown if a problem occurs during refresh | |
*/ | |
protected void refreshResources(String[] resources) throws BuildException { | |
for (int i = 0; i < resources.length; i++) { | |
IResource target = root.findMember(resources[i]); | |
if (target == null) | |
throw new BuildException(Policy.bind("exception.resourceNotFound",resources[i].toString())); | |
try { | |
target.refreshLocal(depth, null); | |
} catch (CoreException e) { | |
throw new BuildException(e); | |
} | |
} | |
} | |
/** | |
* Sets the depth of this task appropriately. The specified argument must | |
* by one of <code>RefreshLocal.DEPTH_ZERO</code>, <code>RefreshLocal.DEPTH_ONE</code> | |
* or <code>RefreshLocal.DEPTH_INFINITE</code>. | |
* | |
* @param value the depth to refresh to | |
*/ | |
public void setDepth(String value) { | |
if (DEPTH_ZERO.equalsIgnoreCase(value)) | |
depth = IResource.DEPTH_ZERO; | |
else | |
if (DEPTH_ONE.equalsIgnoreCase(value)) | |
depth = IResource.DEPTH_ONE; | |
else | |
if (DEPTH_INFINITE.equalsIgnoreCase(value)) | |
depth = IResource.DEPTH_INFINITE; | |
} | |
/** | |
* Sets the root of the workspace resource tree to refresh. | |
* | |
* @param value the root value | |
*/ | |
public void setResource(String value) { | |
resource = ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(value)); | |
} | |
/** | |
* Performs a validation of the receiver. | |
* | |
* @exception BuildException thrown if a problem occurs during validation. | |
*/ | |
protected void validateAttributes() throws BuildException { | |
} | |
} |