Package org.eclipse.emf.compare.internal.postprocessor.factories

# Class AbstractChangeFactory

java.lang.Object
org.eclipse.emf.compare.internal.postprocessor.factories.AbstractChangeFactory

All Implemented Interfaces:
  `IChangeFactory`

public abstract class AbstractChangeFactory extends Object implements IChangeFactory
Factory of difference extensions.

## Constructor Summary

Constructors
Constructor
Description
`AbstractChangeFactory()`

## Method Summary

Modifier and Type
Method
Description
`Diff`
`create(Diff input)`
Creates and returns a `extension` from the given `Diff`.
`abstract Diff`
`createExtension()`
It creates the graphical change extension.
`void`
`fillRequiredDifferences(Comparison comparison, Diff extension)`
Sets the required link of the difference extension created by the related factory.
It has to be called when all the extensions are created.
`protected final List<Diff>`
`findCrossReferences(Comparison comparison, EObject lookup, com.google.common.base.Predicate<Diff> p)`
Find the differences, on the given model object, which match with the predicate.
`protected Set<Diff>`
`getAllContainedDifferences(Diff input)`
Get all the add and delete changes on the objects contained in the one concerned by the given difference.
`Class<? extends Diff>`
`getExtensionKind()`
Returns the kind of extension that this factory has to create.
`Match`
`getParentMatch(Diff input)`
Returns the match in which the difference will be added.
`protected DifferenceKind`
`getRelatedExtensionKind(Diff input)`
Get the `DifferenceKind` of the matching diagram difference extension in relation to the given difference.
`boolean`
`handles(Diff input)`
Returns true if this factory handles the given kind of Diff, i.e., if it can create an `extension`.
`protected boolean`
`isRelatedToAnExtensionAdd(AttributeChange input)`
Check if the given attribute change is related to a graphical add.
`protected boolean`
`isRelatedToAnExtensionAdd(ReferenceChange input)`
Check if the given reference change is related to a graphical add.
`protected boolean`
`isRelatedToAnExtensionAdd(ResourceAttachmentChange input)`
Check if the given resource attachment change is related to a graphical add.
`protected boolean`
`isRelatedToAnExtensionChange(AttributeChange input)`
Check if the given attribute change is related to a graphical change.
`protected boolean`
`isRelatedToAnExtensionChange(ReferenceChange input)`
Check if the given reference change is related to a graphical change.
`protected boolean`
`isRelatedToAnExtensionChange(ResourceAttachmentChange input)`
Check if the given resource attachment change is related to a graphical change.
`protected boolean`
`isRelatedToAnExtensionDelete(AttributeChange input)`
Check if the given attribute change is related to a graphical delete.
`protected boolean`
`isRelatedToAnExtensionDelete(ReferenceChange input)`
Check if the given reference change is related to a graphical delete.
`protected boolean`
`isRelatedToAnExtensionDelete(ResourceAttachmentChange input)`
Check if the given resource attachment change is related to a graphical delete.
`protected boolean`
`isRelatedToAnExtensionMove(AttributeChange input)`
Check if the given attribute change is related to a graphical move.
`protected boolean`
`isRelatedToAnExtensionMove(ReferenceChange input)`
Check if the given reference change is related to a graphical move.
`protected boolean`
`isRelatedToAnExtensionMove(ResourceAttachmentChange input)`
Check if the given resource attachment change is related to a graphical ;ove.
`abstract void`
`setRefiningChanges(Diff extension, DifferenceKind extensionKind, Diff refiningDiff)`
Get the refining differences and set the given extension with them, from the given refining one.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### AbstractChangeFactory

public AbstractChangeFactory()

## Method Details

### handles

public boolean handles(Diff input)
Returns true if this factory handles the given kind of Diff, i.e., if it can create an `extension`.

Performance note: this method should return as quickly as possible as it will called on every `Diff` of the Comparison.

Specified by:
  `handles` in interface `IChangeFactory`
Parameters:
  `input` - the element to test
Returns:
  true if this factory handles the given input, false otherwise.
See Also:
  - `IChangeFactory.handles(org.eclipse.emf.compare.Diff)`

### create

public Diff create(Diff input)
Creates and returns a `extension` from the given `Diff`. The returned element MUST NOT be added to its parent, it will be done by the post processor.

Specified by:
  `create` in interface `IChangeFactory`
Parameters:
  `input` - The input difference element.
Returns:
  The difference extension.
See Also:
  - `IChangeFactory.create(org.eclipse.emf.compare.Diff)`

### createExtension

public abstract Diff createExtension()
It creates the graphical change extension.

Returns:
  The extension.

### setRefiningChanges

public abstract void setRefiningChanges(Diff extension, DifferenceKind extensionKind, Diff refiningDiff)
Get the refining differences and set the given extension with them, from the given refining one.

Parameters:
  `extension` - The extension to set.
  `extensionKind` - The extension kind.
  `refiningDiff` - The refining difference.

### getParentMatch

public Match getParentMatch(Diff input)
Returns the match in which the difference will be added.

Specified by:
  `getParentMatch` in interface `IChangeFactory`
Parameters:
  `input` - The input difference element.
Returns:
  The difference extension.
See Also:
  - `IChangeFactory.getParentMatch(org.eclipse.emf.compare.Diff)`

### getExtensionKind

public Class<? extends Diff> getExtensionKind()
Returns the kind of extension that this factory has to create.

Specified by:
  `getExtensionKind` in interface `IChangeFactory`
Returns:
  The kind of extension.
See Also:
  - `IChangeFactory.getExtensionKind()`

### fillRequiredDifferences

public void fillRequiredDifferences(Comparison comparison, Diff extension)
Sets the required link of the difference extension created by the related factory.
It has to be called when all the extensions are created.

Specified by:
  `fillRequiredDifferences` in interface `IChangeFactory`
Parameters:
  `comparison` - The comparison.
  `extension` - The difference extension.
See Also:
  - `IChangeFactory.fillRequiredDifferences(org.eclipse.emf.compare.Comparison, org.eclipse.emf.compare.Diff)`

### getRelatedExtensionKind

protected DifferenceKind getRelatedExtensionKind(Diff input)
Get the `DifferenceKind` of the matching diagram difference extension in relation to the given difference.

Parameters:
  `input` - The given difference.
Returns:
  The kind of the diagram difference extension if this one exists, null otherwise.

### isRelatedToAnExtensionAdd

protected boolean isRelatedToAnExtensionAdd(ReferenceChange input)
Check if the given reference change is related to a graphical add. It may be overridden in the child factories in order to precise which kind of graphical add has to be considered.

Parameters:
  `input` - The reference change.
Returns:
  True if the reference change is a good candidate, false otherwise.

### isRelatedToAnExtensionDelete

protected boolean isRelatedToAnExtensionDelete(ReferenceChange input)
Check if the given reference change is related to a graphical delete. It may be overridden in the child factories in order to precise which kind of graphical delete has to be considered.

Parameters:
  `input` - The reference change.
Returns:
  True if the reference change is a good candidate, false otherwise.

### isRelatedToAnExtensionChange

protected boolean isRelatedToAnExtensionChange(ReferenceChange input)
Check if the given reference change is related to a graphical change. It may be overridden in the child factories in order to precise which kind of graphical change has to be considered.

Parameters:
  `input` - The reference change.
Returns:
  True if the reference change is a good candidate, false otherwise.

### isRelatedToAnExtensionMove

protected boolean isRelatedToAnExtensionMove(ReferenceChange input)
Check if the given reference change is related to a graphical move. It may be overridden in the child factories in order to precise which kind of graphical move has to be considered.

Parameters:
  `input` - The reference change.
Returns:
  True if the reference change is a good candidate, false otherwise.

### isRelatedToAnExtensionAdd

protected boolean isRelatedToAnExtensionAdd(AttributeChange input)
Check if the given attribute change is related to a graphical add. It may be overridden in the child factories in order to precise which kind of graphical add has to be considered.

Parameters:
  `input` - The attribute change.
Returns:
  True if the attribute change is a good candidate, false otherwise.

### isRelatedToAnExtensionDelete

protected boolean isRelatedToAnExtensionDelete(AttributeChange input)
Check if the given attribute change is related to a graphical delete. It may be overridden in the child factories in order to precise which kind of graphical delete has to be considered.

Parameters:
  `input` - The attribute change.
Returns:
  True if the attribute change is a good candidate, false otherwise.

### isRelatedToAnExtensionChange

protected boolean isRelatedToAnExtensionChange(AttributeChange input)
Check if the given attribute change is related to a graphical change. It may be overridden in the child factories in order to precise which kind of graphical change has to be considered.

Parameters:
  `input` - The attribute change.
Returns:
  True if the attribute change is a good candidate, false otherwise.

### isRelatedToAnExtensionMove

protected boolean isRelatedToAnExtensionMove(AttributeChange input)
Check if the given attribute change is related to a graphical move. It may be overridden in the child factories in order to precise which kind of graphical move has to be considered.

Parameters:
  `input` - The attribute change.
Returns:
  True if the attribute change is a good candidate, false otherwise.

### isRelatedToAnExtensionAdd

protected boolean isRelatedToAnExtensionAdd(ResourceAttachmentChange input)
Check if the given resource attachment change is related to a graphical add. It may be overridden in the child factories in order to precise which kind of graphical add has to be considered.

Parameters:
  `input` - The resource attachment change.
Returns:
  True if the resource attachment change is a good candidate, false otherwise.

### isRelatedToAnExtensionDelete

protected boolean isRelatedToAnExtensionDelete(ResourceAttachmentChange input)
Check if the given resource attachment change is related to a graphical delete. It may be overridden in the child factories in order to precise which kind of graphical delete has to be considered.

Parameters:
  `input` - The resource attachment change.
Returns:
  True if the resource attachment change is a good candidate, false otherwise.

### isRelatedToAnExtensionChange

protected boolean isRelatedToAnExtensionChange(ResourceAttachmentChange input)
Check if the given resource attachment change is related to a graphical change. It may be overridden in the child factories in order to precise which kind of graphical change has to be considered.

Parameters:
  `input` - The resource attachment change.
Returns:
  True if the resource attachment change is a good candidate, false otherwise.

### isRelatedToAnExtensionMove

protected boolean isRelatedToAnExtensionMove(ResourceAttachmentChange input)
Check if the given resource attachment change is related to a graphical ;ove. It may be overridden in the child factories in order to precise which kind of graphical ;ove has to be considered.

Parameters:
  `input` - The resource attachment change.
Returns:
  True if the resource attachment change is a good candidate, false otherwise.

### getAllContainedDifferences

protected Set<Diff> getAllContainedDifferences(Diff input)
Get all the add and delete changes on the objects contained in the one concerned by the given difference.

Parameters:
  `input` - The given difference.
Returns:
  The found differences.

### findCrossReferences

protected final List<Diff> findCrossReferences(Comparison comparison, EObject lookup, com.google.common.base.Predicate<Diff> p)
Find the differences, on the given model object, which match with the predicate.

Parameters:
  `comparison` - The comparison.
  `lookup` - The model object.
  `p` - The predicate.
Returns:
  The found differences.