Package org.eclipse.emf.compare.merge
Class ResourceChangeAdapter
- java.lang.Object
-
- org.eclipse.emf.common.notify.impl.AdapterImpl
-
- org.eclipse.emf.compare.merge.ResourceChangeAdapter
-
- All Implemented Interfaces:
Adapter
,Adapter.Internal
public class ResourceChangeAdapter extends AdapterImpl
This adapter is supposed to be installed on aComparison
'sResourceSet
s and theirResource
s to react to content changes. Participants can then react to such changes to jointly decide whether a resource must be marked for deletion. The same instance of adapter should be used for all the resources of a comparison'sResourceSet
s. EMFCompare installs such an adapter on the comparison to make it easy to retrieve.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
ResourceChangeAdapter.IResourceChangeParticipant
A participant in a Resource content change, useful to indicate whether an empty resource must actually be deleted or not, and which other resources need to be deleted/undeleted along.-
Nested classes/interfaces inherited from interface org.eclipse.emf.common.notify.Adapter
Adapter.Internal
-
-
Field Summary
-
Fields inherited from class org.eclipse.emf.common.notify.impl.AdapterImpl
target
-
-
Constructor Summary
Constructors Constructor Description ResourceChangeAdapter(Comparison comparison, IComparisonScope scope)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addParticipant(ResourceChangeAdapter.IResourceChangeParticipant participant)
Register the given participant.protected org.eclipse.emf.compare.merge.ResourceChangeAdapter.ResourceMatch
getResourceMatch(Resource resource)
Returns the MatchResource corresponding to the givenresource
.protected ResourceSet
getResourceSetOnOtherSide(Resource r)
Get the resource set on the other side of the given resource.boolean
isAdapterForType(Object type)
boolean
isEmptyAndMissingOnOtherSide(Resource resource)
Indicate whether a resource is empty and is only on its side of the comparison (i.e. if it should be deleted unless a special restriction prevents it).boolean
mustDelete(Resource r)
Indicate whether a given Resource needs to be deleted.void
notifyChanged(Notification msg)
void
removeParticipant(ResourceChangeAdapter.IResourceChangeParticipant participant)
Unregister the given participant, has no action if the participant was not previously registered.protected void
resourceAdded(Resource resource)
Callback invoked when a resource has just been added to a resource set.protected void
resourceContentsChanged(Resource resource, Notification msg)
React to a Resource contents change to determine if this change involves the deletion of one or several resources.-
Methods inherited from class org.eclipse.emf.common.notify.impl.AdapterImpl
getTarget, setTarget, unsetTarget
-
-
-
-
Constructor Detail
-
ResourceChangeAdapter
public ResourceChangeAdapter(Comparison comparison, IComparisonScope scope)
Constructor.- Parameters:
comparison
- The comparison, cannot benull
.scope
- The scope, cannot benull
. Moreover, the left and right notifiers of the scope must beResourceSet
s.
-
-
Method Detail
-
notifyChanged
public void notifyChanged(Notification msg)
- Specified by:
notifyChanged
in interfaceAdapter
- Overrides:
notifyChanged
in classAdapterImpl
-
isAdapterForType
public boolean isAdapterForType(Object type)
- Specified by:
isAdapterForType
in interfaceAdapter
- Overrides:
isAdapterForType
in classAdapterImpl
-
addParticipant
public void addParticipant(ResourceChangeAdapter.IResourceChangeParticipant participant)
Register the given participant.- Parameters:
participant
- The participant, must not benull
-
removeParticipant
public void removeParticipant(ResourceChangeAdapter.IResourceChangeParticipant participant)
Unregister the given participant, has no action if the participant was not previously registered.- Parameters:
participant
- The participant to unregister
-
mustDelete
public boolean mustDelete(Resource r)
Indicate whether a given Resource needs to be deleted.- Parameters:
r
- The resource- Returns:
true
if the given resource has been marked for deletion.
-
resourceAdded
protected void resourceAdded(Resource resource)
Callback invoked when a resource has just been added to a resource set. By default, it walks over the interested participants and creates all the associated resources that these participants declare as associated to the given resource.- Parameters:
resource
- The newly added resource
-
getResourceSetOnOtherSide
protected ResourceSet getResourceSetOnOtherSide(Resource r)
Get the resource set on the other side of the given resource.- Parameters:
r
- The resource, which must be either on the left or on the right of the comparison.- Returns:
- The ResourceSet on the other side, never
null
. - Throws:
IllegalArgumentException
- If the given resource is neither on the left nor on the right.
-
resourceContentsChanged
protected void resourceContentsChanged(Resource resource, Notification msg)
React to a Resource contents change to determine if this change involves the deletion of one or several resources. A Resource must be deleted if:- Their contents is
null
or empty; - It is not matched on the other side of the comparison;
- Every participant is OK to delete it.
- Parameters:
resource
- The resource the contents of which have changedmsg
- The notification of the change
- Their contents is
-
isEmptyAndMissingOnOtherSide
public boolean isEmptyAndMissingOnOtherSide(Resource resource)
Indicate whether a resource is empty and is only on its side of the comparison (i.e. if it should be deleted unless a special restriction prevents it).- Parameters:
resource
- The resource- Returns:
true
if the resource is empty and is not matched on the other side of the comparison.
-
getResourceMatch
protected org.eclipse.emf.compare.merge.ResourceChangeAdapter.ResourceMatch getResourceMatch(Resource resource)
Returns the MatchResource corresponding to the givenresource
.- Parameters:
resource
- Resource for which we need a MatchResource.- Returns:
- The MatchResource corresponding to the given
resource
,null
if the resource is not in any side of this comparison (package, profiles, ...).
-
-