A massive organize imports and formatting of the sources using default Eclipse code...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / core / JavaModelOperation.java
index f33c7a9..89a9a40 100644 (file)
@@ -42,30 +42,40 @@ import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
 
-
 /**
  * Defines behavior common to all Java Model operations
  */
-public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgressMonitor {
+public abstract class JavaModelOperation implements IWorkspaceRunnable,
+               IProgressMonitor {
        protected interface IPostAction {
                /*
                 * Returns the id of this action.
+                * 
                 * @see JavaModelOperation#postAction
                 */
                String getID();
+
                /*
                 * Run this action.
                 */
                void run() throws JavaModelException;
        }
+
        /*
         * Constants controlling the insertion mode of an action.
+        * 
         * @see JavaModelOperation#postAction
         */
        protected static final int APPEND = 1; // insert at the end
-       protected static final int REMOVEALL_APPEND = 2; // remove all existing ones with same ID, and add new one at the end
-       protected static final int KEEP_EXISTING = 3; // do not insert if already existing with same ID
-       
+
+       protected static final int REMOVEALL_APPEND = 2; // remove all existing
+                                                                                                               // ones with same ID,
+                                                                                                               // and add new one at
+                                                                                                               // the end
+
+       protected static final int KEEP_EXISTING = 3; // do not insert if already
+                                                                                                       // existing with same ID
+
        /*
         * Whether tracing post actions is enabled.
         */
@@ -75,143 +85,167 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
         * A list of IPostActions.
         */
        protected IPostAction[] actions;
+
        protected int actionsStart = 0;
+
        protected int actionsEnd = -1;
+
        /*
         * A HashMap of attributes that can be used by operations
         */
        protected HashMap attributes;
 
        public static final String HAS_MODIFIED_RESOURCE_ATTR = "hasModifiedResource"; //$NON-NLS-1$
+
        public static final String TRUE = "true"; //$NON-NLS-1$
-       //public static final String FALSE = "false"; //$NON-NLS-1$
-               
+
+       // public static final String FALSE = "false"; //$NON-NLS-1$
+
        /**
-        * The elements this operation operates on,
-        * or <code>null</code> if this operation
-        * does not operate on specific elements.
+        * The elements this operation operates on, or <code>null</code> if this
+        * operation does not operate on specific elements.
         */
        protected IJavaElement[] fElementsToProcess;
+
        /**
-        * The parent elements this operation operates with
-        * or <code>null</code> if this operation
-        * does not operate with specific parent elements.
+        * The parent elements this operation operates with or <code>null</code>
+        * if this operation does not operate with specific parent elements.
         */
        protected IJavaElement[] fParentElements;
+
        /**
-        * An empty collection of <code>IJavaElement</code>s - the common
-        * empty result if no elements are created, or if this
-        * operation is not actually executed.
+        * An empty collection of <code>IJavaElement</code> s - the common empty
+        * result if no elements are created, or if this operation is not actually
+        * executed.
         */
-       protected static IJavaElement[] NO_ELEMENTS= new IJavaElement[] {};
-
+       protected static IJavaElement[] NO_ELEMENTS = new IJavaElement[] {};
 
        /**
-        * The elements created by this operation - empty
-        * until the operation actually creates elements.
+        * The elements created by this operation - empty until the operation
+        * actually creates elements.
         */
-       protected IJavaElement[] resultElements= NO_ELEMENTS;
+       protected IJavaElement[] resultElements = NO_ELEMENTS;
 
        /**
         * The progress monitor passed into this operation
         */
-       protected IProgressMonitor progressMonitor= null;
+       protected IProgressMonitor progressMonitor = null;
+
        /**
         * A flag indicating whether this operation is nested.
         */
        protected boolean isNested = false;
+
        /**
-        * Conflict resolution policy - by default do not force (fail on a conflict).
+        * Conflict resolution policy - by default do not force (fail on a
+        * conflict).
         */
-       protected boolean force= false;
+       protected boolean force = false;
 
        /*
-        * A per thread stack of java model operations (PerThreadObject of ArrayList).
+        * A per thread stack of java model operations (PerThreadObject of
+        * ArrayList).
         */
        protected static PerThreadObject operationStacks = new PerThreadObject();
+
        protected JavaModelOperation() {
        }
+
        /**
         * A common constructor for all Java Model operations.
         */
        protected JavaModelOperation(IJavaElement[] elements) {
                fElementsToProcess = elements;
        }
+
        /**
         * Common constructor for all Java Model operations.
         */
-       protected JavaModelOperation(IJavaElement[] elementsToProcess, IJavaElement[] parentElements) {
+       protected JavaModelOperation(IJavaElement[] elementsToProcess,
+                       IJavaElement[] parentElements) {
                fElementsToProcess = elementsToProcess;
-               fParentElements= parentElements;
+               fParentElements = parentElements;
        }
+
        /**
         * A common constructor for all Java Model operations.
         */
-       protected JavaModelOperation(IJavaElement[] elementsToProcess, IJavaElement[] parentElements, boolean force) {
+       protected JavaModelOperation(IJavaElement[] elementsToProcess,
+                       IJavaElement[] parentElements, boolean force) {
                fElementsToProcess = elementsToProcess;
-               fParentElements= parentElements;
-               this.force= force;
+               fParentElements = parentElements;
+               this.force = force;
        }
+
        /**
         * A common constructor for all Java Model operations.
         */
        protected JavaModelOperation(IJavaElement[] elements, boolean force) {
                fElementsToProcess = elements;
-               this.force= force;
+               this.force = force;
        }
-       
+
        /**
         * Common constructor for all Java Model operations.
         */
        protected JavaModelOperation(IJavaElement element) {
-               fElementsToProcess = new IJavaElement[]{element};
+               fElementsToProcess = new IJavaElement[] { element };
        }
+
        /**
         * A common constructor for all Java Model operations.
         */
        protected JavaModelOperation(IJavaElement element, boolean force) {
-               fElementsToProcess = new IJavaElement[]{element};
-               this.force= force;
+               fElementsToProcess = new IJavaElement[] { element };
+               this.force = force;
        }
-       
+
        /*
         * Registers the given action at the end of the list of actions to run.
         */
        protected void addAction(IPostAction action) {
                int length = this.actions.length;
                if (length == ++this.actionsEnd) {
-                       System.arraycopy(this.actions, 0, this.actions = new IPostAction[length*2], 0, length);
+                       System.arraycopy(this.actions, 0,
+                                       this.actions = new IPostAction[length * 2], 0, length);
                }
                this.actions[this.actionsEnd] = action;
        }
+
        /*
         * Registers the given delta with the Java Model Manager.
         */
        protected void addDelta(IJavaElementDelta delta) {
                JavaModelManager.getJavaModelManager().registerJavaModelDelta(delta);
        }
+
        /*
         * Registers the given reconcile delta with the Java Model Manager.
         */
-       protected void addReconcileDelta(IWorkingCopy workingCopy, IJavaElementDelta delta) {
+       protected void addReconcileDelta(IWorkingCopy workingCopy,
+                       IJavaElementDelta delta) {
                HashMap reconcileDeltas = JavaModelManager.getJavaModelManager().reconcileDeltas;
-               JavaElementDelta previousDelta = (JavaElementDelta)reconcileDeltas.get(workingCopy);
+               JavaElementDelta previousDelta = (JavaElementDelta) reconcileDeltas
+                               .get(workingCopy);
                if (previousDelta != null) {
                        IJavaElementDelta[] children = delta.getAffectedChildren();
                        for (int i = 0, length = children.length; i < length; i++) {
-                               JavaElementDelta child = (JavaElementDelta)children[i];
+                               JavaElementDelta child = (JavaElementDelta) children[i];
                                previousDelta.insertDeltaTree(child.getElement(), child);
                        }
                } else {
                        reconcileDeltas.put(workingCopy, delta);
                }
        }
+
        /*
         * Deregister the reconcile delta for the given working copy
         */
        protected void removeReconcileDelta(IWorkingCopy workingCopy) {
-               JavaModelManager.getJavaModelManager().reconcileDeltas.remove(workingCopy);             
+               JavaModelManager.getJavaModelManager().reconcileDeltas
+                               .remove(workingCopy);
        }
+
        /**
         * @see IProgressMonitor
         */
@@ -220,137 +254,154 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        progressMonitor.beginTask(name, totalWork);
                }
        }
+
        /**
-        * Checks with the progress monitor to see whether this operation
-        * should be canceled. An operation should regularly call this method
-        * during its operation so that the user can cancel it.
-        *
-        * @exception OperationCanceledException if cancelling the operation has been requested
+        * Checks with the progress monitor to see whether this operation should be
+        * canceled. An operation should regularly call this method during its
+        * operation so that the user can cancel it.
+        * 
+        * @exception OperationCanceledException
+        *                if cancelling the operation has been requested
         * @see IProgressMonitor#isCanceled
         */
        protected void checkCanceled() {
                if (isCanceled()) {
-                       throw new OperationCanceledException(Util.bind("operation.cancelled")); //$NON-NLS-1$
+                       throw new OperationCanceledException(Util
+                                       .bind("operation.cancelled")); //$NON-NLS-1$
                }
        }
+
        /**
         * Common code used to verify the elements this operation is processing.
+        * 
         * @see JavaModelOperation#verify()
         */
        protected IJavaModelStatus commonVerify() {
                if (fElementsToProcess == null || fElementsToProcess.length == 0) {
-                       return new JavaModelStatus(IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS);
+                       return new JavaModelStatus(
+                                       IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS);
                }
                for (int i = 0; i < fElementsToProcess.length; i++) {
                        if (fElementsToProcess[i] == null) {
-                               return new JavaModelStatus(IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS);
+                               return new JavaModelStatus(
+                                               IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS);
                        }
                }
                return JavaModelStatus.VERIFIED_OK;
        }
+
        /**
         * Convenience method to copy resources
         */
-       protected void copyResources(IResource[] resources, IPath destinationPath) throws JavaModelException {
+       protected void copyResources(IResource[] resources, IPath destinationPath)
+                       throws JavaModelException {
                IProgressMonitor subProgressMonitor = getSubProgressMonitor(resources.length);
                IWorkspace workspace = resources[0].getWorkspace();
                try {
-                       workspace.copy(resources, destinationPath, false, subProgressMonitor);
-                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                       workspace.copy(resources, destinationPath, false,
+                                       subProgressMonitor);
+                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                } catch (CoreException e) {
                        throw new JavaModelException(e);
                }
        }
+
        /**
         * Convenience method to create a file
         */
-       protected void createFile(IContainer folder, String name, InputStream contents, boolean force) throws JavaModelException {
-               IFile file= folder.getFile(new Path(name));
+       protected void createFile(IContainer folder, String name,
+                       InputStream contents, boolean force) throws JavaModelException {
+               IFile file = folder.getFile(new Path(name));
                try {
-                       file.create(
-                               contents, 
-                               force ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY, 
-                               getSubProgressMonitor(1));
-                               this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                       file.create(contents, force ? IResource.FORCE
+                                       | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY,
+                                       getSubProgressMonitor(1));
+                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                } catch (CoreException e) {
                        throw new JavaModelException(e);
                }
        }
+
        /**
         * Convenience method to create a folder
         */
-       protected void createFolder(IContainer parentFolder, String name, boolean force) throws JavaModelException {
-               IFolder folder= parentFolder.getFolder(new Path(name));
+       protected void createFolder(IContainer parentFolder, String name,
+                       boolean force) throws JavaModelException {
+               IFolder folder = parentFolder.getFolder(new Path(name));
                try {
-                       // we should use true to create the file locally. Only VCM should use tru/false
-                       folder.create(
-                               force ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY,
-                               true, // local
-                               getSubProgressMonitor(1));
-                               this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                       // we should use true to create the file locally. Only VCM should
+                       // use tru/false
+                       folder.create(force ? IResource.FORCE | IResource.KEEP_HISTORY
+                                       : IResource.KEEP_HISTORY, true, // local
+                                       getSubProgressMonitor(1));
+                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                } catch (CoreException e) {
                        throw new JavaModelException(e);
                }
        }
+
        /**
         * Convenience method to delete an empty package fragment
         */
-       protected void deleteEmptyPackageFragment(
-               IPackageFragment fragment,
-               boolean force,
-               IResource rootResource)
-               throws JavaModelException {
-       
+       protected void deleteEmptyPackageFragment(IPackageFragment fragment,
+                       boolean force, IResource rootResource) throws JavaModelException {
+
                IContainer resource = (IContainer) fragment.getResource();
-       
+
                try {
-                       resource.delete(
-                               force ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY, 
-                               getSubProgressMonitor(1));
-                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                       resource.delete(force ? IResource.FORCE | IResource.KEEP_HISTORY
+                                       : IResource.KEEP_HISTORY, getSubProgressMonitor(1));
+                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                        while (resource instanceof IFolder) {
-                               // deleting a package: delete the parent if it is empty (eg. deleting x.y where folder x doesn't have resources but y)
+                               // deleting a package: delete the parent if it is empty (eg.
+                               // deleting x.y where folder x doesn't have resources but y)
                                // without deleting the package fragment root
                                resource = resource.getParent();
-                               if (!resource.equals(rootResource) && resource.members().length == 0) {
-                                       resource.delete(
-                                               force ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY, 
-                                               getSubProgressMonitor(1));
-                                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                               if (!resource.equals(rootResource)
+                                               && resource.members().length == 0) {
+                                       resource.delete(force ? IResource.FORCE
+                                                       | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY,
+                                                       getSubProgressMonitor(1));
+                                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                                }
                        }
                } catch (CoreException e) {
                        throw new JavaModelException(e);
                }
        }
+
        /**
         * Convenience method to delete a resource
         */
-       protected void deleteResource(IResource resource,int flags) throws JavaModelException {
+       protected void deleteResource(IResource resource, int flags)
+                       throws JavaModelException {
                try {
                        resource.delete(flags, getSubProgressMonitor(1));
-                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                } catch (CoreException e) {
                        throw new JavaModelException(e);
                }
        }
+
        /**
         * Convenience method to delete resources
         */
-       protected void deleteResources(IResource[] resources, boolean force) throws JavaModelException {
-               if (resources == null || resources.length == 0) return;
+       protected void deleteResources(IResource[] resources, boolean force)
+                       throws JavaModelException {
+               if (resources == null || resources.length == 0)
+                       return;
                IProgressMonitor subProgressMonitor = getSubProgressMonitor(resources.length);
                IWorkspace workspace = resources[0].getWorkspace();
                try {
-                       workspace.delete(
-                               resources,
-                               force ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY, 
-                               subProgressMonitor);
-                               this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                       workspace.delete(resources, force ? IResource.FORCE
+                                       | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY,
+                                       subProgressMonitor);
+                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                } catch (CoreException e) {
                        throw new JavaModelException(e);
                }
        }
+
        /**
         * @see IProgressMonitor
         */
@@ -359,6 +410,7 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        progressMonitor.done();
                }
        }
+
        /*
         * Returns whether the given path is equals to one of the given other paths.
         */
@@ -370,31 +422,35 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                }
                return false;
        }
+
        /**
-        * Verifies the operation can proceed and executes the operation.
-        * Subclasses should override <code>#verify</code> and
-        * <code>executeOperation</code> to implement the specific operation behavior.
-        *
-        * @exception JavaModelException The operation has failed.
-        */
-//     protected void execute() throws JavaModelException {
-//             IJavaModelStatus status= verify();
-//             if (status.isOK()) {
-//                     // if first time here, computes the root infos before executing the operation
-//                     DeltaProcessor deltaProcessor = JavaModelManager.getJavaModelManager().deltaProcessor;
-//                     if (deltaProcessor.roots == null) {
-//                       deltaProcessor.initializeRoots();
-//                     }
-//                     executeOperation();
-//             } else {
-//                     throw new JavaModelException(status);
-//             }
-//     }
-       
+        * Verifies the operation can proceed and executes the operation. Subclasses
+        * should override <code>#verify</code> and <code>executeOperation</code>
+        * to implement the specific operation behavior.
+        * 
+        * @exception JavaModelException
+        *                The operation has failed.
+        */
+       // protected void execute() throws JavaModelException {
+       // IJavaModelStatus status= verify();
+       // if (status.isOK()) {
+       // // if first time here, computes the root infos before executing the
+       // operation
+       // DeltaProcessor deltaProcessor =
+       // JavaModelManager.getJavaModelManager().deltaProcessor;
+       // if (deltaProcessor.roots == null) {
+       // deltaProcessor.initializeRoots();
+       // }
+       // executeOperation();
+       // } else {
+       // throw new JavaModelException(status);
+       // }
+       // }
        /**
         * Convenience method to run an operation within this operation
         */
-       public void executeNestedOperation(JavaModelOperation operation, int subWorkAmount) throws JavaModelException {
+       public void executeNestedOperation(JavaModelOperation operation,
+                       int subWorkAmount) throws JavaModelException {
                IProgressMonitor subProgressMonitor = getSubProgressMonitor(subWorkAmount);
                // fix for 1FW7IKC, part (1)
                try {
@@ -402,7 +458,7 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        operation.run(subProgressMonitor);
                } catch (CoreException ce) {
                        if (ce instanceof JavaModelException) {
-                               throw (JavaModelException)ce;
+                               throw (JavaModelException) ce;
                        } else {
                                // translate the core exception to a java model exception
                                if (ce.getStatus().getCode() == IResourceStatus.OPERATION_FAILED) {
@@ -415,55 +471,61 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        }
                }
        }
+
        /**
         * Performs the operation specific behavior. Subclasses must override.
         */
        protected abstract void executeOperation() throws JavaModelException;
+
        /*
-        * Returns the attribute registered at the given key with the top level operation.
-        * Returns null if no such attribute is found.
+        * Returns the attribute registered at the given key with the top level
+        * operation. Returns null if no such attribute is found.
         */
        protected Object getAttribute(Object key) {
                ArrayList stack = this.getCurrentOperationStack();
-               if (stack.size() == 0) return null;
-               JavaModelOperation topLevelOp = (JavaModelOperation)stack.get(0);
+               if (stack.size() == 0)
+                       return null;
+               JavaModelOperation topLevelOp = (JavaModelOperation) stack.get(0);
                if (topLevelOp.attributes == null) {
                        return null;
                } else {
                        return topLevelOp.attributes.get(key);
                }
        }
+
        /**
-        * Returns the compilation unit the given element is contained in,
-        * or the element itself (if it is a compilation unit),
-        * otherwise <code>null</code>.
+        * Returns the compilation unit the given element is contained in, or the
+        * element itself (if it is a compilation unit), otherwise <code>null</code>.
         */
        protected ICompilationUnit getCompilationUnitFor(IJavaElement element) {
-       
-               return ((JavaElement)element).getCompilationUnit();
+
+               return ((JavaElement) element).getCompilationUnit();
        }
+
        /*
-        * Returns the stack of operations running in the current thread.
-        * Returns an empty stack if no operations are currently running in this thread. 
+        * Returns the stack of operations running in the current thread. Returns an
+        * empty stack if no operations are currently running in this thread.
         */
        protected ArrayList getCurrentOperationStack() {
-               ArrayList stack = (ArrayList)operationStacks.getCurrent();
+               ArrayList stack = (ArrayList) operationStacks.getCurrent();
                if (stack == null) {
                        stack = new ArrayList();
                        operationStacks.setCurrent(stack);
                }
                return stack;
        }
+
        /**
-        * Returns the elements to which this operation applies,
-        * or <code>null</code> if not applicable.
+        * Returns the elements to which this operation applies, or
+        * <code>null</code> if not applicable.
         */
        protected IJavaElement[] getElementsToProcess() {
                return fElementsToProcess;
        }
+
        /**
-        * Returns the element to which this operation applies,
-        * or <code>null</code> if not applicable.
+        * Returns the element to which this operation applies, or <code>null</code>
+        * if not applicable.
         */
        protected IJavaElement getElementToProcess() {
                if (fElementsToProcess == null || fElementsToProcess.length == 0) {
@@ -471,6 +533,7 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                }
                return fElementsToProcess[0];
        }
+
        /**
         * Returns the Java Model this operation is operating in.
         */
@@ -481,26 +544,28 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        return fElementsToProcess[0].getJavaModel();
                }
        }
-//     protected IPath[] getNestedFolders(IPackageFragmentRoot root) throws JavaModelException {
-//             IPath rootPath = root.getPath();
-//             IClasspathEntry[] classpath = root.getJavaProject().getRawClasspath();
-//             int length = classpath.length;
-//             IPath[] result = new IPath[length];
-//             int index = 0;
-//             for (int i = 0; i < length; i++) {
-//                     IPath path = classpath[i].getPath();
-//                     if (rootPath.isPrefixOf(path) && !rootPath.equals(path)) {
-//                             result[index++] = path;
-//                     }
-//             }
-//             if (index < length) {
-//                     System.arraycopy(result, 0, result = new IPath[index], 0, index);
-//             }
-//             return result;
-//     }
-       /**
-        * Returns the parent element to which this operation applies,
-        * or <code>null</code> if not applicable.
+
+       // protected IPath[] getNestedFolders(IPackageFragmentRoot root) throws
+       // JavaModelException {
+       // IPath rootPath = root.getPath();
+       // IClasspathEntry[] classpath = root.getJavaProject().getRawClasspath();
+       // int length = classpath.length;
+       // IPath[] result = new IPath[length];
+       // int index = 0;
+       // for (int i = 0; i < length; i++) {
+       // IPath path = classpath[i].getPath();
+       // if (rootPath.isPrefixOf(path) && !rootPath.equals(path)) {
+       // result[index++] = path;
+       // }
+       // }
+       // if (index < length) {
+       // System.arraycopy(result, 0, result = new IPath[index], 0, index);
+       // }
+       // return result;
+       // }
+       /**
+        * Returns the parent element to which this operation applies, or
+        * <code>null</code> if not applicable.
         */
        protected IJavaElement getParentElement() {
                if (fParentElements == null || fParentElements.length == 0) {
@@ -508,34 +573,39 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                }
                return fParentElements[0];
        }
+
        /**
-        * Returns the parent elements to which this operation applies,
-        * or <code>null</code> if not applicable.
+        * Returns the parent elements to which this operation applies, or
+        * <code>null</code> if not applicable.
         */
        protected IJavaElement[] getParentElements() {
                return fParentElements;
        }
+
        /**
         * Returns the elements created by this operation.
         */
        public IJavaElement[] getResultElements() {
                return resultElements;
        }
+
        /*
-        * Returns the scheduling rule for this operation (i.e. the resource that needs to be locked 
-        * while this operation is running.
-        * Subclasses can override.
+        * Returns the scheduling rule for this operation (i.e. the resource that
+        * needs to be locked while this operation is running. Subclasses can
+        * override.
         */
        protected ISchedulingRule getSchedulingRule() {
                return ResourcesPlugin.getWorkspace().getRoot();
        }
+
        /**
         * Creates and returns a subprogress monitor if appropriate.
         */
        protected IProgressMonitor getSubProgressMonitor(int workAmount) {
                IProgressMonitor sub = null;
                if (progressMonitor != null) {
-                       sub = new SubProgressMonitor(progressMonitor, workAmount, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
+                       sub = new SubProgressMonitor(progressMonitor, workAmount,
+                                       SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
                }
                return sub;
        }
@@ -545,13 +615,16 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
         * Returns false if this operation has not been executed yet.
         */
        public boolean hasModifiedResource() {
-               return !this.isReadOnly() && this.getAttribute(HAS_MODIFIED_RESOURCE_ATTR) == TRUE; 
+               return !this.isReadOnly()
+                               && this.getAttribute(HAS_MODIFIED_RESOURCE_ATTR) == TRUE;
        }
+
        public void internalWorked(double work) {
                if (progressMonitor != null) {
                        progressMonitor.internalWorked(work);
                }
        }
+
        /**
         * @see IProgressMonitor
         */
@@ -561,25 +634,28 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                }
                return false;
        }
+
        /**
-        * Returns <code>true</code> if this operation performs no resource modifications,
-        * otherwise <code>false</code>. Subclasses must override.
+        * Returns <code>true</code> if this operation performs no resource
+        * modifications, otherwise <code>false</code>. Subclasses must override.
         */
        public boolean isReadOnly() {
                return false;
        }
+
        /*
-        * Returns whether this operation is the first operation to run in the current thread.
+        * Returns whether this operation is the first operation to run in the
+        * current thread.
         */
        protected boolean isTopLevelOperation() {
                ArrayList stack;
-               return 
-                       (stack = this.getCurrentOperationStack()).size() > 0
-                       && stack.get(0) == this;
+               return (stack = this.getCurrentOperationStack()).size() > 0
+                               && stack.get(0) == this;
        }
+
        /*
-        * Returns the index of the first registered action with the given id, starting from a given position.
-        * Returns -1 if not found.
+        * Returns the index of the first registered action with the given id,
+        * starting from a given position. Returns -1 if not found.
         */
        protected int firstActionWithID(String id, int start) {
                for (int i = start; i <= this.actionsEnd; i++) {
@@ -589,30 +665,36 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                }
                return -1;
        }
-       
+
        /**
         * Convenience method to move resources
         */
-       protected void moveResources(IResource[] resources, IPath destinationPath) throws JavaModelException {
+       protected void moveResources(IResource[] resources, IPath destinationPath)
+                       throws JavaModelException {
                IProgressMonitor subProgressMonitor = null;
                if (progressMonitor != null) {
-                       subProgressMonitor = new SubProgressMonitor(progressMonitor, resources.length, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
+                       subProgressMonitor = new SubProgressMonitor(progressMonitor,
+                                       resources.length,
+                                       SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
                }
                IWorkspace workspace = resources[0].getWorkspace();
                try {
-                       workspace.move(resources, destinationPath, false, subProgressMonitor);
-                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE); 
+                       workspace.move(resources, destinationPath, false,
+                                       subProgressMonitor);
+                       this.setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
                } catch (CoreException e) {
                        throw new JavaModelException(e);
                }
        }
+
        /**
-        * Creates and returns a new <code>IJavaElementDelta</code>
-        * on the Java Model.
+        * Creates and returns a new <code>IJavaElementDelta</code> on the Java
+        * Model.
         */
        public JavaElementDelta newJavaElementDelta() {
                return new JavaElementDelta(getJavaModel());
        }
+
        /*
         * Removes the last pushed operation from the stack of running operations.
         * Returns the poped operation or null if the stack was empty.
@@ -621,38 +703,43 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                ArrayList stack = getCurrentOperationStack();
                int size = stack.size();
                if (size > 0) {
-                       if (size == 1) { // top level operation 
-                               operationStacks.setCurrent(null); // release reference (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=33927)
+                       if (size == 1) { // top level operation
+                               operationStacks.setCurrent(null); // release reference (see
+                                                                                                       // http://bugs.eclipse.org/bugs/show_bug.cgi?id=33927)
                        }
-                       return (JavaModelOperation)stack.remove(size-1);
+                       return (JavaModelOperation) stack.remove(size - 1);
                } else {
                        return null;
                }
        }
+
        /*
-        * Registers the given action to be run when the outer most java model operation has finished.
-        * The insertion mode controls whether:
-        * - the action should discard all existing actions with the same id, and be queued at the end (REMOVEALL_APPEND),
-        * - the action should be ignored if there is already an action with the same id (KEEP_EXISTING),
-        * - the action should be queued at the end without looking at existing actions (APPEND)
+        * Registers the given action to be run when the outer most java model
+        * operation has finished. The insertion mode controls whether: - the action
+        * should discard all existing actions with the same id, and be queued at
+        * the end (REMOVEALL_APPEND), - the action should be ignored if there is
+        * already an action with the same id (KEEP_EXISTING), - the action should
+        * be queued at the end without looking at existing actions (APPEND)
         */
        protected void postAction(IPostAction action, int insertionMode) {
                if (POST_ACTION_VERBOSE) {
-                       System.out.print("(" + Thread.currentThread() + ") [JavaModelOperation.postAction(IPostAction, int)] Posting action " + action.getID()); //$NON-NLS-1$ //$NON-NLS-2$
-                       switch(insertionMode) {
-                               case REMOVEALL_APPEND:
-                                       System.out.println(" (REMOVEALL_APPEND)"); //$NON-NLS-1$
-                                       break;
-                               case KEEP_EXISTING:
-                                       System.out.println(" (KEEP_EXISTING)"); //$NON-NLS-1$
-                                       break;
-                               case APPEND:
-                                       System.out.println(" (APPEND)"); //$NON-NLS-1$
-                                       break;
+                       System.out
+                                       .print("(" + Thread.currentThread() + ") [JavaModelOperation.postAction(IPostAction, int)] Posting action " + action.getID()); //$NON-NLS-1$ //$NON-NLS-2$
+                       switch (insertionMode) {
+                       case REMOVEALL_APPEND:
+                               System.out.println(" (REMOVEALL_APPEND)"); //$NON-NLS-1$
+                               break;
+                       case KEEP_EXISTING:
+                               System.out.println(" (KEEP_EXISTING)"); //$NON-NLS-1$
+                               break;
+                       case APPEND:
+                               System.out.println(" (APPEND)"); //$NON-NLS-1$
+                               break;
                        }
                }
-               
-               JavaModelOperation topLevelOp = (JavaModelOperation)getCurrentOperationStack().get(0);
+
+               JavaModelOperation topLevelOp = (JavaModelOperation) getCurrentOperationStack()
+                               .get(0);
                IPostAction[] postActions = topLevelOp.actions;
                if (postActions == null) {
                        topLevelOp.actions = postActions = new IPostAction[1];
@@ -661,28 +748,31 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                } else {
                        String id = action.getID();
                        switch (insertionMode) {
-                               case REMOVEALL_APPEND :
-                                       int index = this.actionsStart-1;
-                                       while ((index = topLevelOp.firstActionWithID(id, index+1)) >= 0) {
-                                               // remove action[index]
-                                               System.arraycopy(postActions, index+1, postActions, index, topLevelOp.actionsEnd - index);
-                                               postActions[topLevelOp.actionsEnd--] = null;
-                                       }
-                                       topLevelOp.addAction(action);
-                                       break;
-                               case KEEP_EXISTING:
-                                       if (topLevelOp.firstActionWithID(id, 0) < 0) {
-                                               topLevelOp.addAction(action);
-                                       }
-                                       break;
-                               case APPEND:
+                       case REMOVEALL_APPEND:
+                               int index = this.actionsStart - 1;
+                               while ((index = topLevelOp.firstActionWithID(id, index + 1)) >= 0) {
+                                       // remove action[index]
+                                       System.arraycopy(postActions, index + 1, postActions,
+                                                       index, topLevelOp.actionsEnd - index);
+                                       postActions[topLevelOp.actionsEnd--] = null;
+                               }
+                               topLevelOp.addAction(action);
+                               break;
+                       case KEEP_EXISTING:
+                               if (topLevelOp.firstActionWithID(id, 0) < 0) {
                                        topLevelOp.addAction(action);
-                                       break;
+                               }
+                               break;
+                       case APPEND:
+                               topLevelOp.addAction(action);
+                               break;
                        }
                }
        }
+
        /*
-        * Returns whether the given path is the prefix of one of the given other paths.
+        * Returns whether the given path is the prefix of one of the given other
+        * paths.
         */
        protected boolean prefixesOneOf(IPath path, IPath[] otherPaths) {
                for (int i = 0, length = otherPaths.length; i < length; i++) {
@@ -691,20 +781,23 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        }
                }
                return false;
-       }       
+       }
+
        /*
-        * Pushes the given operation on the stack of operations currently running in this thread.
+        * Pushes the given operation on the stack of operations currently running
+        * in this thread.
         */
        protected void pushOperation(JavaModelOperation operation) {
                getCurrentOperationStack().add(operation);
        }
-       
+
        /**
-        * Main entry point for Java Model operations.  Executes this operation
-        * and registers any deltas created.
-        *
+        * Main entry point for Java Model operations. Executes this operation and
+        * registers any deltas created.
+        * 
         * @see IWorkspaceRunnable
-        * @exception CoreException if the operation fails
+        * @exception CoreException
+        *                if the operation fails
         */
        public void run(IProgressMonitor monitor) throws CoreException {
                JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -716,8 +809,9 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        try {
                                // computes the root infos before executing the operation
                                // noop if aready initialized
-                               JavaModelManager.getJavaModelManager().deltaState.initializeRoots();
-                               
+                               JavaModelManager.getJavaModelManager().deltaState
+                                               .initializeRoots();
+
                                executeOperation();
                        } finally {
                                if (this.isTopLevelOperation()) {
@@ -727,33 +821,41 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                } finally {
 
                        try {
-//                             TODO jsurfer temp-del
-                               // update JavaModel using deltas that were recorded during this operation
-//                             for (int i = previousDeltaCount, size = manager.javaModelDeltas.size(); i < size; i++) {
-//                                     manager.updateJavaModel((IJavaElementDelta)manager.javaModelDeltas.get(i));
-//                             }
-                               
+                               // update JavaModel using deltas that were recorded during this
+                               // operation
+                               for (int i = previousDeltaCount, size = manager.javaModelDeltas
+                                               .size(); i < size; i++) {
+                                       manager
+                                                       .updateJavaModel((IJavaElementDelta) manager.javaModelDeltas
+                                                                       .get(i));
+                               }
+
                                // fire only iff:
                                // - the operation is a top level operation
                                // - the operation did produce some delta(s)
                                // - but the operation has not modified any resource
-                               if (this.isTopLevelOperation()) {
-                                       if ((manager.javaModelDeltas.size() > previousDeltaCount || !manager.reconcileDeltas.isEmpty()) 
+                               if (this.isTopLevelOperation()) {
+                                       if ((manager.javaModelDeltas.size() > previousDeltaCount || !manager.reconcileDeltas
+                                                       .isEmpty())
                                                        && !this.hasModifiedResource()) {
-                                               manager.fire(null, JavaModelManager.DEFAULT_CHANGE_EVENT);
-                                       } // else deltas are fired while processing the resource delta
+                                               manager.fire(null,
+                                                               JavaModelManager.DEFAULT_CHANGE_EVENT);
+                                       } // else deltas are fired while processing the resource
+                                               // delta
                                }
                        } finally {
                                popOperation();
-                       } 
+                       }
                }
        }
+
        /**
-        * Main entry point for Java Model operations. Runs a Java Model Operation as an IWorkspaceRunnable
-        * if not read-only.
+        * Main entry point for Java Model operations. Runs a Java Model Operation
+        * as an IWorkspaceRunnable if not read-only.
         */
-       public void runOperation(IProgressMonitor monitor) throws JavaModelException {
-               IJavaModelStatus status= verify();
+       public void runOperation(IProgressMonitor monitor)
+                       throws JavaModelException {
+               IJavaModelStatus status = verify();
                if (!status.isOK()) {
                        throw new JavaModelException(status);
                }
@@ -761,17 +863,21 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        if (isReadOnly()) {
                                run(monitor);
                        } else {
-                               // Use IWorkspace.run(...) to ensure that a build will be done in autobuild mode.
-                               // Note that if the tree is locked, this will throw a CoreException, but this is ok
-                               // as this operation is modifying the tree (not read-only) and a CoreException will be thrown anyway.
-                ResourcesPlugin.getWorkspace().run(this, getSchedulingRule(), IWorkspace.AVOID_UPDATE, monitor);
+                               // Use IWorkspace.run(...) to ensure that a build will be done
+                               // in autobuild mode.
+                               // Note that if the tree is locked, this will throw a
+                               // CoreException, but this is ok
+                               // as this operation is modifying the tree (not read-only) and a
+                               // CoreException will be thrown anyway.
+                               ResourcesPlugin.getWorkspace().run(this, getSchedulingRule(),
+                                               IWorkspace.AVOID_UPDATE, monitor);
                        }
                } catch (CoreException ce) {
                        if (ce instanceof JavaModelException) {
-                               throw (JavaModelException)ce;
+                               throw (JavaModelException) ce;
                        } else {
                                if (ce.getStatus().getCode() == IResourceStatus.OPERATION_FAILED) {
-                                       Throwable e= ce.getStatus().getException();
+                                       Throwable e = ce.getStatus().getException();
                                        if (e instanceof JavaModelException) {
                                                throw (JavaModelException) e;
                                        }
@@ -780,25 +886,31 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        }
                }
        }
+
        protected void runPostActions() throws JavaModelException {
                while (this.actionsStart <= this.actionsEnd) {
                        IPostAction postAction = this.actions[this.actionsStart++];
                        if (POST_ACTION_VERBOSE) {
-                               System.out.println("(" + Thread.currentThread() + ") [JavaModelOperation.runPostActions()] Running action " + postAction.getID()); //$NON-NLS-1$ //$NON-NLS-2$
+                               System.out
+                                               .println("(" + Thread.currentThread() + ") [JavaModelOperation.runPostActions()] Running action " + postAction.getID()); //$NON-NLS-1$ //$NON-NLS-2$
                        }
                        postAction.run();
                }
        }
+
        /*
-        * Registers the given attribute at the given key with the top level operation.
+        * Registers the given attribute at the given key with the top level
+        * operation.
         */
        protected void setAttribute(Object key, Object attribute) {
-               JavaModelOperation topLevelOp = (JavaModelOperation)this.getCurrentOperationStack().get(0);
+               JavaModelOperation topLevelOp = (JavaModelOperation) this
+                               .getCurrentOperationStack().get(0);
                if (topLevelOp.attributes == null) {
                        topLevelOp.attributes = new HashMap();
                }
                topLevelOp.attributes.put(key, attribute);
        }
+
        /**
         * @see IProgressMonitor
         */
@@ -807,13 +919,16 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        progressMonitor.setCanceled(b);
                }
        }
+
        /**
         * Sets whether this operation is nested or not.
+        * 
         * @see CreateElementInCUOperation#checkCanceled
         */
        protected void setNested(boolean nested) {
                isNested = nested;
        }
+
        /**
         * @see IProgressMonitor
         */
@@ -822,6 +937,7 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        progressMonitor.setTaskName(name);
                }
        }
+
        /**
         * @see IProgressMonitor
         */
@@ -830,20 +946,20 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        progressMonitor.subTask(name);
                }
        }
+
        /**
-        * Returns a status indicating if there is any known reason
-        * this operation will fail.  Operations are verified before they
-        * are run.
-        *
-        * Subclasses must override if they have any conditions to verify
-        * before this operation executes.
-        *
+        * Returns a status indicating if there is any known reason this operation
+        * will fail. Operations are verified before they are run.
+        * 
+        * Subclasses must override if they have any conditions to verify before
+        * this operation executes.
+        * 
         * @see IJavaModelStatus
         */
        protected IJavaModelStatus verify() {
                return commonVerify();
        }
-       
+
        /**
         * @see IProgressMonitor
         */
@@ -853,4 +969,4 @@ public abstract class JavaModelOperation implements IWorkspaceRunnable, IProgres
                        checkCanceled();
                }
        }
-}
+}
\ No newline at end of file