|
|
|
|
org.eclipse.team.ui.synchronize
Class ModelMergeOperation
java.lang.Object
org.eclipse.core.runtime.jobs.JobChangeAdapter
org.eclipse.team.ui.TeamOperation
org.eclipse.team.ui.synchronize.ModelOperation
org.eclipse.team.ui.synchronize.ModelMergeOperation
-
All Implemented Interfaces:
-
IJobChangeListener,
IRunnableWithProgress
-
Direct Known Subclasses:
-
ModelParticipantMergeOperation
-
public abstract class ModelMergeOperation
- extends
ModelOperation
A model operation that executes a merge according to the merge lifecycle
associated with an
IMergeContext and
IResourceMappingMerger
instances obtained from the model providers involved.
-
Since:
- 3.2
Methods inherited from class org.eclipse.team.ui.synchronize.
ModelOperation
|
beginOperation,
endOperation,
getContext,
getPreviewRequestMessage,
getScope,
getScopeManager,
initializeScope,
isPreviewRequested,
promptForInputChange,
promptIfInputChange,
run,
sortByExtension
|
Methods inherited from class org.eclipse.team.ui.
TeamOperation
|
belongsTo,
canRunAsJob,
getGotoAction,
getJobName,
getKeepOperation,
getOperationIcon,
getPart,
getSchedulingRule,
getShell,
isKeepOneProgressServiceEntry,
isPostponeAutobuild,
isSameFamilyAs,
isUserInitiated,
run,
shouldRun
|
Methods inherited from class java.lang.
Object
|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
|
ModelMergeOperation
protected ModelMergeOperation(
IWorkbenchPart part,
ISynchronizationScopeManager manager)
- Create a model merge operation.
-
Parameters:
-
part - the workbench part from which the operation was requested or null
-
manager - the scope manager
validateMerge
public static
IStatus validateMerge(
IMergeContext context,
IProgressMonitor monitor)
- Validate the merge context with the model providers that have mappings in
the scope of the context. The
IResourceMappingMerger for each
model provider will be consulted and any non-OK status will be
accumulated and returned,
-
-
Parameters:
-
context - the merge context being validated -
monitor - a progress monitor
-
Returns:
- a status or multi-status that identify any conditions that should
force a preview of the merge
execute
protected void execute(
IProgressMonitor monitor)
throws
InvocationTargetException,
InterruptedException
- Perform a merge. First
initializeContext(IProgressMonitor) is
called to determine the set of resource changes. Then the
executeMerge(IProgressMonitor) method is invoked.
-
-
Specified by:
-
execute
in class
ModelOperation
-
-
Parameters:
-
monitor - a progress monitor
-
Throws:
-
InvocationTargetException
-
InterruptedException
executeMerge
protected void executeMerge(
IProgressMonitor monitor)
throws
CoreException
- Perform a merge. This method is invoked from
execute(IProgressMonitor) after the context has been
initialized. If there are changes in the context, they will be validating
by calling
validateMerge(IMergeContext, IProgressMonitor) . If
there are no validation problems,
performMerge(IProgressMonitor)
will then be called to perform the merge. If there are problems encountered
or if a preview was requested,
handlePreviewRequest() is called.
-
-
Parameters:
-
monitor - a progress monitor
-
Throws:
-
CoreException
handlePreviewRequest
protected void handlePreviewRequest()
- A preview of the merge has been requested. By default, this method does
nothing. Subclasses that wish to support previewing must override this
method to preview the merge and the
ModelOperation.getPreviewRequestMessage()
to have the option presented to the user if the scope changes.
-
initializeContext
protected abstract void initializeContext(
IProgressMonitor monitor)
throws
CoreException
- Initialize the merge context for this merge operation.
After this method is invoked, the
ModelOperation.getContext()
method must return an instance of
IMergeContext
that is fully initialized.
-
-
Parameters:
-
monitor - a progress monitor
-
Throws:
-
CoreException
handleValidationFailure
protected void handleValidationFailure(
IStatus status)
- Method invoked when the context contains changes that failed validation
by at least one
IResourceMappingMerger .
By default, the user is prompted to inform them that unmergeable changes were found
and the
handlePreviewRequest() method is invoked.
Subclasses may override.
-
-
Parameters:
-
status - the status returned from the mergers that reported the validation failures
handleMergeFailure
protected void handleMergeFailure(
IStatus status)
- Method invoked when the context contains unmergable changes.
By default, the user is prompted to inform them that unmergeable changes were found.
Subclasses may override.
-
-
Parameters:
-
status - the status returned from the merger that reported the conflict
handleNoChanges
protected void handleNoChanges()
- Method invoked when the context contains no changes.
By default, the user is prompted to inform them that no changes were found.
Subclasses may override.
-
performMerge
protected
IStatus performMerge(
IProgressMonitor monitor)
throws
CoreException
- Attempt a headless merge of the elements in the context of this
operation. The merge is performed by obtaining the
IResourceMappingMerger for the model providers in the context's
scope. The merger of the model providers are invoked in the order
determined by the
ModelOperation.sortByExtension(ModelProvider[])
method. The method will stop on the first conflict encountered.
This method will throw a runtime exception
if the operation does not have a merge context.
-
-
Parameters:
-
monitor - a progress monitor
-
Returns:
- a status that indicates whether the merge succeeded.
-
Throws:
-
CoreException
- if an error occurred
performMerge
protected
IStatus performMerge(
ModelProvider provider,
IProgressMonitor monitor)
throws
CoreException
- Attempt to merge all the mappings that come from the given provider.
Return a status which indicates whether the merge succeeded or if
unmergeable conflicts were found. By default, this method invokes
the
IResourceMappingMerger.merge(IMergeContext, IProgressMonitor)
method but does not wait for the context to update (see
ISynchronizationContext .
Callers that are invoking the merge on multiple models should wait until the
context has updated before invoking merge on another merger. The following
line of code will wait for the context to update:
Platform.getJobManager().join(getContext(), monitor);
This method will throw a runtime exception
if the operation does not have a merge context.
-
-
Parameters:
-
provider - the model provider whose mappings are to be merged -
monitor - a progress monitor
-
Returns:
- a non-OK status if there were unmergable conflicts
-
Throws:
-
CoreException
- if an error occurred
hasChangesOfInterest
protected boolean hasChangesOfInterest()
- Return whether the context of this operation has changes that are
of interest to the operation. Subclasses may override.
-
-
Returns:
- whether the context of this operation has changes that are
of interest to the operation
Guidelines for using Eclipse APIs.
Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.
|
|
|