org.aspectj.org.eclipse.jdt.internal.core
Class MultiOperation

java.lang.Object
  extended by org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
      extended by org.aspectj.org.eclipse.jdt.internal.core.MultiOperation
Direct Known Subclasses:
CopyElementsOperation, CopyResourceElementsOperation, DeleteElementsOperation, DeleteResourceElementsOperation

public abstract class MultiOperation
extends JavaModelOperation

This class is used to perform operations on multiple IJavaElement. It is responible for running each operation in turn, collecting the errors and merging the corresponding JavaElementDeltas.

If several errors occured, they are collected in a multi-status JavaModelStatus. Otherwise, a simple JavaModelStatus is thrown.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
JavaModelOperation.IPostAction
 
Field Summary
protected  java.util.Map insertBeforeElements
          Table specifying insertion positions for elements being copied/moved/renamed.
protected  java.util.Map newParents
          Table specifying the new parent for elements being copied/moved/renamed.
protected  java.util.Map renamings
          This table presents the data in fRenamingList in a more convenient way.
protected  java.lang.String[] renamingsList
          The list of renamings supplied to the operation
 
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
actions, actionsEnd, actionsStart, APPEND, attributes, elementsToProcess, force, HAS_MODIFIED_RESOURCE_ATTR, isNested, KEEP_EXISTING, NO_ELEMENTS, OPERATION_STACKS, parentElements, POST_ACTION_VERBOSE, progressMonitor, REMOVEALL_APPEND, resultElements, TRUE
 
Constructor Summary
protected MultiOperation(IJavaElement[] elementsToProcess, boolean force)
          Creates a new MultiOperation on elementsToProcess.
protected MultiOperation(IJavaElement[] elementsToProcess, IJavaElement[] parentElements, boolean force)
          Creates a new MultiOperation.
 
Method Summary
protected  void error(int code, IJavaElement element)
          Convenience method to create a JavaModelException embending a JavaModelStatus.
protected  void executeOperation()
          Executes the operation.
protected  IJavaElement getDestinationParent(IJavaElement child)
          Returns the parent of the element being copied/moved/renamed.
protected abstract  java.lang.String getMainTaskName()
          Returns the name to be used by the progress monitor.
protected  java.lang.String getNewNameFor(IJavaElement element)
          Returns the new name for element, or null if there are no renamings specified.
protected  boolean isMove()
          Returns true if this operation represents a move or rename, false if this operation represents a copy.
Note: a rename is just a move within the same parent with a name change.
protected  boolean isRename()
          Returns true if this operation represents a rename, false if this operation represents a copy or move.
protected abstract  void processElement(IJavaElement element)
          Subclasses must implement this method to process a given IJavaElement.
protected  void processElements()
          Processes all the IJavaElements in turn, collecting errors and updating the progress monitor.
 void setInsertBefore(IJavaElement modifiedElement, IJavaElement newSibling)
          Sets the insertion position in the new container for the modified element.
 void setRenamings(java.lang.String[] renamingsList)
          Sets the new names to use for each element being copied.
protected abstract  void verify(IJavaElement element)
          This method is called for each IJavaElement before processElement.
protected  void verifyDestination(IJavaElement element, IJavaElement destination)
          Verifies that the destination specified for the element is valid for the types of the element and destination.
protected  void verifyRenaming(IJavaElement element)
          Verify that the new name specified for element is valid for that type of Java element.
protected  void verifySibling(IJavaElement element, IJavaElement destination)
          Verifies that the positioning sibling specified for the element is exists and its parent is the destination container of this element.
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
addAction, addDelta, addReconcileDelta, applyTextEdit, beginTask, canModifyRoots, checkCanceled, commonVerify, copyResources, createFile, createFolder, deleteEmptyPackageFragment, deleteResource, deleteResources, done, equalsOneOf, executeNestedOperation, firstActionWithID, getAttribute, getCompilationUnitFor, getCurrentOperationStack, getDocument, getElementToProcess, getJavaModel, getNestedFolders, getParentElement, getParentElements, getResultElements, getSchedulingRule, getSubProgressMonitor, hasModifiedResource, internalWorked, isCanceled, isReadOnly, isTopLevelOperation, moveResources, newJavaElementDelta, popOperation, postAction, prefixesOneOf, pushOperation, removeAllPostAction, removeReconcileDelta, run, runOperation, runPostActions, setAttribute, setCanceled, setNested, setTaskName, subTask, verify, worked
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

insertBeforeElements

protected java.util.Map insertBeforeElements
Table specifying insertion positions for elements being copied/moved/renamed. Keyed by elements being processed, and values are the corresponding insertion point.

See Also:
processElements()

newParents

protected java.util.Map newParents
Table specifying the new parent for elements being copied/moved/renamed. Keyed by elements being processed, and values are the corresponding destination parent.


renamings

protected java.util.Map renamings
This table presents the data in fRenamingList in a more convenient way.


renamingsList

protected java.lang.String[] renamingsList
The list of renamings supplied to the operation

Constructor Detail

MultiOperation

protected MultiOperation(IJavaElement[] elementsToProcess,
                         boolean force)
Creates a new MultiOperation on elementsToProcess.


MultiOperation

protected MultiOperation(IJavaElement[] elementsToProcess,
                         IJavaElement[] parentElements,
                         boolean force)
Creates a new MultiOperation.

Method Detail

error

protected void error(int code,
                     IJavaElement element)
              throws JavaModelException
Convenience method to create a JavaModelException embending a JavaModelStatus.

Throws:
JavaModelException

executeOperation

protected void executeOperation()
                         throws JavaModelException
Executes the operation.

Specified by:
executeOperation in class JavaModelOperation
Throws:
JavaModelException - if one or several errors occured during the operation. If multiple errors occured, the corresponding JavaModelStatus is a multi-status. Otherwise, it is a simple one.

getDestinationParent

protected IJavaElement getDestinationParent(IJavaElement child)
Returns the parent of the element being copied/moved/renamed.


getMainTaskName

protected abstract java.lang.String getMainTaskName()
Returns the name to be used by the progress monitor.


getNewNameFor

protected java.lang.String getNewNameFor(IJavaElement element)
                                  throws JavaModelException
Returns the new name for element, or null if there are no renamings specified.

Throws:
JavaModelException

isMove

protected boolean isMove()
Returns true if this operation represents a move or rename, false if this operation represents a copy.
Note: a rename is just a move within the same parent with a name change.


isRename

protected boolean isRename()
Returns true if this operation represents a rename, false if this operation represents a copy or move.


processElement

protected abstract void processElement(IJavaElement element)
                                throws JavaModelException
Subclasses must implement this method to process a given IJavaElement.

Throws:
JavaModelException

processElements

protected void processElements()
                        throws JavaModelException
Processes all the IJavaElements in turn, collecting errors and updating the progress monitor.

Throws:
JavaModelException - if one or several operation(s) was unable to be completed.

setInsertBefore

public void setInsertBefore(IJavaElement modifiedElement,
                            IJavaElement newSibling)
Sets the insertion position in the new container for the modified element. The element being modified will be inserted before the specified new sibling. The given sibling must be a child of the destination container specified for the modified element. The default is null, which indicates that the element is to be inserted at the end of the container.


setRenamings

public void setRenamings(java.lang.String[] renamingsList)
Sets the new names to use for each element being copied. The renamings correspond to the elements being processed, and the number of renamings must match the number of elements being processed. A null entry in the list indicates that an element is not to be renamed.

Note that some renamings may not be used. If both a parent and a child have been selected for copy/move, only the parent is changed. Therefore, if a new name is specified for the child, the child's name will not be changed.


verify

protected abstract void verify(IJavaElement element)
                        throws JavaModelException
This method is called for each IJavaElement before processElement. It should check that this element can be processed.

Throws:
JavaModelException

verifyDestination

protected void verifyDestination(IJavaElement element,
                                 IJavaElement destination)
                          throws JavaModelException
Verifies that the destination specified for the element is valid for the types of the element and destination.

Throws:
JavaModelException

verifyRenaming

protected void verifyRenaming(IJavaElement element)
                       throws JavaModelException
Verify that the new name specified for element is valid for that type of Java element.

Throws:
JavaModelException

verifySibling

protected void verifySibling(IJavaElement element,
                             IJavaElement destination)
                      throws JavaModelException
Verifies that the positioning sibling specified for the element is exists and its parent is the destination container of this element.

Throws:
JavaModelException