public static class UMLUtil.PackageMerger
extends org.eclipse.emf.ecore.util.EcoreUtil.Copier
Modifier and Type | Class and Description |
---|---|
protected class |
UMLUtil.PackageMerger.BodyMatcher |
protected class |
UMLUtil.PackageMerger.ImplicitAssociationNameMatcher |
protected class |
UMLUtil.PackageMerger.KeyMatcher |
protected class |
UMLUtil.PackageMerger.NameMatcher |
protected class |
UMLUtil.PackageMerger.ResultingQNameMatcher |
protected class |
UMLUtil.PackageMerger.SourceMatcher |
protected class |
UMLUtil.PackageMerger.StringValueMatcher |
protected class |
UMLUtil.PackageMerger.TypeMatcher |
Modifier and Type | Field and Description |
---|---|
static int |
ASSOCIATION_SPECIALIZATION
The diagnostic code for cases where an association specialization is
missing.
|
static int |
ATTRIBUTE_TRANSFORMATION
The diagnostic code for cases where an attribute transformation
should be performed.
|
static int |
CAPABILITY
The diagnostic code for cases where capability information is
missing.
|
protected java.util.Map<java.lang.Object,java.lang.Object> |
context |
protected org.eclipse.emf.common.util.DiagnosticChain |
diagnostics |
static int |
DIFFERENT_PROPERTY_STATICITY
The diagnostic code for cases where the staticity of merged
properties does not match.
|
static int |
DIFFERENT_PROPERTY_UNIQUENESS
The diagnostic code for cases where the uniqueness of merged
properties does not match.
|
static int |
EMPTY_QUALIFIED_NAME
The diagnostic code for cases where the qualified named of a
classifier in a receiving or merged package is empty.
|
static int |
EMPTY_UNION
The diagnostic code for cases where an empty union is detected.
|
static int |
IMPLICIT_REDEFINITION
The diagnostic code for cases where an implicit redefinition is
detected.
|
static int |
INDISTINGUISHABLE_CLASSIFIER
The diagnostic code for cases where a classifier in a receiving or
merged package is indistinguishable.
|
static int |
INVALID_REDEFINITION
The diagnostic code for cases where an invalid redefinition is
detected.
|
static int |
INVALID_SUBSET
The diagnostic code for cases where an invalid subset is detected.
|
protected java.util.Collection<? extends TemplateableElement> |
mergedElements |
protected java.util.Collection<Package> |
mergedPackages
Deprecated.
Use the
mergedElements , instead |
static java.lang.String |
OPTION__ASSOCIATION_SPECIALIZATIONS
The option for handling cases where an association specialization is
missing.
|
static java.lang.String |
OPTION__ATTRIBUTE_TRANSFORMATIONS
The option for handling cases where an attribute transformation
should be performed.
|
static java.lang.String |
OPTION__CAPABILITIES
The option for handling cases where capability information is
missing.
|
static java.lang.String |
OPTION__DIFFERENT_PROPERTY_STATICITY
The option for handling cases where the staticity of merged
properties does not match.
|
static java.lang.String |
OPTION__DIFFERENT_PROPERTY_UNIQUENESS
The option for handling cases where the uniqueness of merged
properties does not match.
|
static java.lang.String |
OPTION__EMPTY_QUALIFIED_NAMES
The option for handling cases where a classifier with an empty
qualified name is detected.
|
static java.lang.String |
OPTION__EMPTY_UNIONS
The option for handling cases where an empty union is detected.
|
static java.lang.String |
OPTION__IMPLICIT_REDEFINITIONS
The option for handling cases where an implicit redefinition is
detected.
|
static java.lang.String |
OPTION__INDISTINGUISHABLE_CLASSIFIERS
The option for handling cases where an indistinguishable classifier
is detected.
|
static java.lang.String |
OPTION__INVALID_REDEFINITIONS
The option for handling cases where an invalid redefinition is
detected.
|
static java.lang.String |
OPTION__INVALID_SUBSETS
The option for handling cases where an invalid subset is detected.
|
static java.lang.String |
OPTION__REDUNDANT_GENERALIZATIONS
The option for handling cases where a redundant generalization is
detected.
|
protected java.util.Map<java.lang.String,java.lang.String> |
options |
protected TemplateableElement |
receivingElement |
protected Package |
receivingPackage
Deprecated.
Use the
receivingElement , instead. |
static int |
REDUNDANT_GENERALIZATION
The diagnostic code for cases where a redundant generalization is
detected.
|
protected java.util.Map<org.eclipse.emf.ecore.EObject,java.util.List<org.eclipse.emf.ecore.EObject>> |
resultingToMergedEObjectMap |
Constructor and Description |
---|
PackageMerger() |
Modifier and Type | Method and Description |
---|---|
protected void |
cleanupMergeRelationships()
Cleans up (removing or otherwise trimming as necessary) the
relationships on the
receivingElement that define the merges
that were performed. |
org.eclipse.emf.ecore.EObject |
copy(org.eclipse.emf.ecore.EObject eObject) |
<T> java.util.Collection<T> |
copyAll(java.util.Collection<? extends T> eObjects) |
protected void |
copyAttribute(org.eclipse.emf.ecore.EAttribute eAttribute,
org.eclipse.emf.ecore.EObject eObject,
org.eclipse.emf.ecore.EObject copyEObject) |
protected void |
copyContainment(org.eclipse.emf.ecore.EReference eReference,
org.eclipse.emf.ecore.EObject eObject,
org.eclipse.emf.ecore.EObject copyEObject) |
protected void |
copyReference(org.eclipse.emf.ecore.EReference eReference,
org.eclipse.emf.ecore.EObject eObject,
org.eclipse.emf.ecore.EObject copyEObject) |
protected org.eclipse.emf.ecore.EObject |
createCopy(org.eclipse.emf.ecore.EObject eObject) |
protected java.util.Collection<Package> |
getAllMergedPackages(Package package_) |
protected UML2Util.EObjectMatcher |
getAssociationMatcher(Association association) |
protected NamedElement |
getCapability(org.eclipse.emf.ecore.EObject mergedEObject)
Obtains the element representing the capability that contributes a
merged object.
|
protected <EO extends org.eclipse.emf.ecore.EObject> |
getMatchCandidates(EO eObject) |
protected <EO extends org.eclipse.emf.ecore.EObject> |
getMergedEObjects(EO resultingEObject) |
protected <EO extends org.eclipse.emf.ecore.EObject> |
getPreviouslyMergedEObject(EO resultingEObject) |
protected NamedElement |
getReceivingElement(org.eclipse.emf.ecore.EObject resultingEObject)
Obtains the element receiving a capability from a package merge.
|
protected java.lang.String |
getResultingQName(org.eclipse.emf.ecore.EObject eObject) |
protected boolean |
isPackageMerge()
Queries whether the current operation is a package merge, or some
derivative.
|
java.util.Map<org.eclipse.emf.ecore.EObject,java.util.List<org.eclipse.emf.ecore.EObject>> |
merge(Package package_,
java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context)
Merges the contents of (all of) the packages merged by the specified
package using the specified options, reporting problems to the
specified diagnostics, within the specified context.
|
protected java.util.Map<org.eclipse.emf.ecore.EObject,java.util.List<org.eclipse.emf.ecore.EObject>> |
merge(TemplateableElement receivingElement,
java.util.Collection<? extends TemplateableElement> mergedElements,
java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context)
Merges the contents of (all of) the specified elements into the
given element using the specified options, reporting problems to the
specified diagnostics, within the specified context.
|
protected void |
mergeAssociation_IsDerived(Association receivingAssociation,
Association mergedAssociation) |
protected void |
mergeClassifier_IsAbstract(Classifier receivingClassifier,
Classifier mergedClassifier) |
protected void |
mergeClassifier_IsFinalSpecialization(Classifier receivingClassifier,
Classifier mergedClassifier) |
protected void |
mergeLiteralInteger_Value(LiteralInteger receivingLiteralInteger,
LiteralInteger mergedLiteralInteger)
Deprecated.
4.2 these values are only merged in the context of
MultiplicityElement lower-bounds, which is done by the
mergeMultiplicityElement_Lower(MultiplicityElement, MultiplicityElement)
method |
protected void |
mergeLiteralUnlimitedNatural_Value(LiteralUnlimitedNatural receivingLiteralUnlimitedNatural,
LiteralUnlimitedNatural mergedLiteralUnlimitedNatural)
Deprecated.
4.2 these values are only merged in the context of
MultiplicityElement upper-bounds, which is done by the
mergeMultiplicityElement_Upper(MultiplicityElement, MultiplicityElement)
method |
protected void |
mergeMultiplicityElement_IsOrdered(MultiplicityElement receivingMultiplicityElement,
MultiplicityElement mergedMultiplicityElement) |
protected void |
mergeMultiplicityElement_IsUnique(MultiplicityElement receivingMultiplicityElement,
MultiplicityElement mergedMultiplicityElement) |
protected void |
mergeMultiplicityElement_Lower(MultiplicityElement receivingMultiplicityElement,
MultiplicityElement mergedMultiplicityElement) |
protected void |
mergeMultiplicityElement_Upper(MultiplicityElement receivingMultiplicityElement,
MultiplicityElement mergedMultiplicityElement) |
protected void |
mergeNamedElement_Visibility(NamedElement receivingNamedElement,
NamedElement mergedNamedElement) |
protected void |
mergeProperty_IsDerived(Property receivingProperty,
Property mergedProperty) |
protected void |
mergeProperty_IsDerivedUnion(Property receivingProperty,
Property mergedProperty) |
protected void |
mergeRedefinableElement_IsLeaf(RedefinableElement receivingRedefinableElement,
RedefinableElement mergedRedefinableElement) |
protected void |
mergeStructuralFeature_IsReadOnly(StructuralFeature receivingStructuralFeature,
StructuralFeature mergedStructuralFeature) |
protected void |
mergeTypedElement_Type(TypedElement receivingTypedElement,
TypedElement mergedTypedElement) |
protected void |
processAssociationSpecializations(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processCapabilities(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processDifferentPropertyStaticity(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processDifferentPropertyUniqueness(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processEmptyQualifiedNames(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processEmptyUnions(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processImplicitRedefinitions(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processIndistinguishableClassifiers(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processInvalidRedefinitions(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processInvalidSubsets(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processOptions(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
processRedundantGeneralizations(java.util.Map<java.lang.String,java.lang.String> options,
org.eclipse.emf.common.util.DiagnosticChain diagnostics,
java.util.Map<java.lang.Object,java.lang.Object> context) |
protected void |
updateReferences()
Updates the merge results to replace references to elements in merged
packages by references to their counterparts in the merge result.
|
copyProxyURI, copyReferences, getTarget, getTarget
clear, clone, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, forEach, get, getOrDefault, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
public static final java.lang.String OPTION__DIFFERENT_PROPERTY_STATICITY
OPTION__IGNORE
and OPTION__REPORT
.public static final java.lang.String OPTION__DIFFERENT_PROPERTY_UNIQUENESS
OPTION__IGNORE
and OPTION__REPORT
.public static final java.lang.String OPTION__REDUNDANT_GENERALIZATIONS
OPTION__IGNORE
,
OPTION__REPORT
, and OPTION__DISCARD
.public static final java.lang.String OPTION__IMPLICIT_REDEFINITIONS
OPTION__IGNORE
,
OPTION__REPORT
, and OPTION__PROCESS
.public static final java.lang.String OPTION__INVALID_REDEFINITIONS
OPTION__IGNORE
,
OPTION__REPORT
, OPTION__DISCARD
, and
OPTION__PROCESS
.public static final java.lang.String OPTION__INVALID_SUBSETS
OPTION__IGNORE
,
OPTION__REPORT
, OPTION__DISCARD
, and
OPTION__PROCESS
.public static final java.lang.String OPTION__EMPTY_UNIONS
OPTION__IGNORE
,
OPTION__REPORT
, and OPTION__PROCESS
.public static final java.lang.String OPTION__ASSOCIATION_SPECIALIZATIONS
OPTION__IGNORE
,
OPTION__REPORT
, and OPTION__PROCESS
.public static final java.lang.String OPTION__CAPABILITIES
OPTION__IGNORE
,
OPTION__REPORT
, and OPTION__PROCESS
.public static final java.lang.String OPTION__EMPTY_QUALIFIED_NAMES
OPTION__IGNORE
and OPTION__REPORT
.public static final java.lang.String OPTION__INDISTINGUISHABLE_CLASSIFIERS
OPTION__IGNORE
and
OPTION__REPORT
.public static final java.lang.String OPTION__ATTRIBUTE_TRANSFORMATIONS
OPTION__IGNORE
, OPTION__REPORT
, and
OPTION__PROCESS
.public static final int DIFFERENT_PROPERTY_STATICITY
public static final int DIFFERENT_PROPERTY_UNIQUENESS
public static final int REDUNDANT_GENERALIZATION
public static final int IMPLICIT_REDEFINITION
public static final int INVALID_REDEFINITION
public static final int INVALID_SUBSET
public static final int EMPTY_UNION
public static final int ASSOCIATION_SPECIALIZATION
public static final int CAPABILITY
public static final int EMPTY_QUALIFIED_NAME
public static final int INDISTINGUISHABLE_CLASSIFIER
public static final int ATTRIBUTE_TRANSFORMATION
protected TemplateableElement receivingElement
protected java.util.Collection<? extends TemplateableElement> mergedElements
@Deprecated protected Package receivingPackage
receivingElement
, instead.@Deprecated protected java.util.Collection<Package> mergedPackages
mergedElements
, insteadprotected final java.util.Map<org.eclipse.emf.ecore.EObject,java.util.List<org.eclipse.emf.ecore.EObject>> resultingToMergedEObjectMap
protected java.util.Map<java.lang.String,java.lang.String> options
protected org.eclipse.emf.common.util.DiagnosticChain diagnostics
protected java.util.Map<java.lang.Object,java.lang.Object> context
protected <EO extends org.eclipse.emf.ecore.EObject> java.util.List<EO> getMatchCandidates(EO eObject)
protected <EO extends org.eclipse.emf.ecore.EObject> java.util.List<EO> getMergedEObjects(EO resultingEObject)
protected <EO extends org.eclipse.emf.ecore.EObject> EO getPreviouslyMergedEObject(EO resultingEObject)
protected java.lang.String getResultingQName(org.eclipse.emf.ecore.EObject eObject)
protected void mergeAssociation_IsDerived(Association receivingAssociation, Association mergedAssociation)
protected void mergeClassifier_IsAbstract(Classifier receivingClassifier, Classifier mergedClassifier)
protected void mergeClassifier_IsFinalSpecialization(Classifier receivingClassifier, Classifier mergedClassifier)
@Deprecated protected void mergeLiteralInteger_Value(LiteralInteger receivingLiteralInteger, LiteralInteger mergedLiteralInteger)
mergeMultiplicityElement_Lower(MultiplicityElement, MultiplicityElement)
method@Deprecated protected void mergeLiteralUnlimitedNatural_Value(LiteralUnlimitedNatural receivingLiteralUnlimitedNatural, LiteralUnlimitedNatural mergedLiteralUnlimitedNatural)
mergeMultiplicityElement_Upper(MultiplicityElement, MultiplicityElement)
methodprotected void mergeMultiplicityElement_IsOrdered(MultiplicityElement receivingMultiplicityElement, MultiplicityElement mergedMultiplicityElement)
protected void mergeMultiplicityElement_IsUnique(MultiplicityElement receivingMultiplicityElement, MultiplicityElement mergedMultiplicityElement)
protected void mergeMultiplicityElement_Lower(MultiplicityElement receivingMultiplicityElement, MultiplicityElement mergedMultiplicityElement)
protected void mergeMultiplicityElement_Upper(MultiplicityElement receivingMultiplicityElement, MultiplicityElement mergedMultiplicityElement)
protected void mergeNamedElement_Visibility(NamedElement receivingNamedElement, NamedElement mergedNamedElement)
protected void mergeProperty_IsDerived(Property receivingProperty, Property mergedProperty)
protected void mergeProperty_IsDerivedUnion(Property receivingProperty, Property mergedProperty)
protected void mergeRedefinableElement_IsLeaf(RedefinableElement receivingRedefinableElement, RedefinableElement mergedRedefinableElement)
protected void mergeStructuralFeature_IsReadOnly(StructuralFeature receivingStructuralFeature, StructuralFeature mergedStructuralFeature)
protected void copyAttribute(org.eclipse.emf.ecore.EAttribute eAttribute, org.eclipse.emf.ecore.EObject eObject, org.eclipse.emf.ecore.EObject copyEObject)
copyAttribute
in class org.eclipse.emf.ecore.util.EcoreUtil.Copier
protected void copyContainment(org.eclipse.emf.ecore.EReference eReference, org.eclipse.emf.ecore.EObject eObject, org.eclipse.emf.ecore.EObject copyEObject)
copyContainment
in class org.eclipse.emf.ecore.util.EcoreUtil.Copier
protected void mergeTypedElement_Type(TypedElement receivingTypedElement, TypedElement mergedTypedElement)
protected void copyReference(org.eclipse.emf.ecore.EReference eReference, org.eclipse.emf.ecore.EObject eObject, org.eclipse.emf.ecore.EObject copyEObject)
copyReference
in class org.eclipse.emf.ecore.util.EcoreUtil.Copier
protected UML2Util.EObjectMatcher getAssociationMatcher(Association association)
protected org.eclipse.emf.ecore.EObject createCopy(org.eclipse.emf.ecore.EObject eObject)
createCopy
in class org.eclipse.emf.ecore.util.EcoreUtil.Copier
public org.eclipse.emf.ecore.EObject copy(org.eclipse.emf.ecore.EObject eObject)
copy
in class org.eclipse.emf.ecore.util.EcoreUtil.Copier
public <T> java.util.Collection<T> copyAll(java.util.Collection<? extends T> eObjects)
copyAll
in class org.eclipse.emf.ecore.util.EcoreUtil.Copier
protected void updateReferences()
protected void processDifferentPropertyStaticity(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processDifferentPropertyUniqueness(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processImplicitRedefinitions(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processInvalidRedefinitions(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processInvalidSubsets(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processEmptyUnions(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processRedundantGeneralizations(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processEmptyQualifiedNames(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processIndistinguishableClassifiers(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processAssociationSpecializations(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected void processCapabilities(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
protected NamedElement getReceivingElement(org.eclipse.emf.ecore.EObject resultingEObject)
resultingEObject
- an object resulting from the copy step of a package mergenull
if there is no merge
receiver distinguished for this elementprotected NamedElement getCapability(org.eclipse.emf.ecore.EObject mergedEObject)
mergedEObject
- an source object from the copy step of a package mergenull
)protected void processOptions(java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
public java.util.Map<org.eclipse.emf.ecore.EObject,java.util.List<org.eclipse.emf.ecore.EObject>> merge(Package package_, java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
package_
- The receiving package.options
- The options to use.diagnostics
- The chain of diagnostics to which problems are to be
appended.context
- The cache of context-specific information.protected boolean isPackageMerge()
true
) or
something else (false
)protected void cleanupMergeRelationships()
receivingElement
that define the merges
that were performed.protected java.util.Map<org.eclipse.emf.ecore.EObject,java.util.List<org.eclipse.emf.ecore.EObject>> merge(TemplateableElement receivingElement, java.util.Collection<? extends TemplateableElement> mergedElements, java.util.Map<java.lang.String,java.lang.String> options, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
receivingElement
- The receiving templateable element.mergedElements
- The elements to merge.options
- The options to use.diagnostics
- The chain of diagnostics to which problems are to be
appended.context
- The cache of context-specific information.