Class SolidResourceComparisonParticipant
java.lang.Object
com._1c.g5.v8.dt.internal.compare.SolidResourceComparisonParticipant
- All Implemented Interfaces:
IComparisonParticipant
A comparison participant for comparing and merging objects as solid resources.
Used for objects for which honest model comparison is not currently supported.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanTells whether to able to break the correspondence for the specified node.addNewTopObjectToComparison(IComparisonSession comparisonSession, String mainSymlink, org.eclipse.emf.ecore.EClass eClass) Adds a new node to the comparison for the top object.booleanadoptExternalProperty(IComparisonSession session, ExternalPropertyComparisonData extPropData) Adopts the given external property if it is supported by the participant instance.org.eclipse.emf.ecore.EStructuralFeatureadoptMainSideFeature(org.eclipse.emf.ecore.EStructuralFeature mainSideFeature, IComparisonSession session) Converts, if possible, the main side feature into a other supported by the other side object.voidbreakCorrespondence(ComparisonContext comparisonContext, ComparisonNode node) Breaks the correspondence for the specified node.voidbreakMainSideCorrespondence(IComparisonSession session, ComparisonNode node) Breaks the main side correspondence represented by the specified model node.voidclear()Clears the participant caches.voidcombineOneSideNodes(ComparisonContext comparisonContext, ComparisonNode mainNode, ComparisonNode otherNode, List<Long> newNodeIds) Combines the specified two one-side nodes.compare(TopComparisonNode node, ComparisonContext comparisonContext, org.eclipse.core.runtime.IProgressMonitor monitor) Compares objects contained in the specified model top node and returns a list of child nodes to be compared.createMergeContext(TopComparisonNode node, IMergeSession mergeSession, ComparisonContext comparisonContext) Creates merge context for an upcoming merge operation.getDefaultMergeRule(ComparisonNode node, IComparisonSession session) Returns the default merge rule for the given node.getDefaultMustBeMerged(ComparisonNode node, IComparisonSession session) Returns the default must be merged value for the given node.getForcedDDRebuildScope(TopComparisonNode topNode, MergeContext context) In case if the merge process changes the top object it should supply information about affected DDs.org.eclipse.emf.ecore.EPackageGet EMF model package.getPotentialCorrespondingNodes(ComparisonNode node, ComparisonSide sourceSide) Returns a list of candidate nodes for setting as corresponding to the specified node.getPotentialMergeProblemsDescriptions(ComparisonNode node, ComparisonContext comparisonContext) Returns human-readable descriptions of potential merge problems if the the specified node is merged.booleanisCandidateForPotentialMergeProblems(ComparisonNode node, IComparisonSession session) Tells whether the given node may break the configuration if it is merged.booleanisExcludedFromComparison(org.eclipse.emf.ecore.EStructuralFeature feature, AbstractComparedEmfObjects<?> comparedContextObjects, IComparisonSession session) Checks whether the feature must be excluded from the comparison.org.eclipse.core.runtime.IStatusmerge(TopComparisonNode node, MergeContext context, org.eclipse.core.runtime.IProgressMonitor monitor) Merges the differences in the specified top node in the specified merge session.mergeUsingExternalTool(ComparisonNode node, ComparisonContext comparisonContext, org.eclipse.core.runtime.IProgressMonitor monitor) Merges nodes using an external tool that are supported by this participant.voidonChildrenMerged(TopComparisonNode node, MergeContext context) Called when the child nodes of the specified top node have been merged.prepareRenameOperations(IMergeSession mergeSession, ComparisonContext context) Gets a list of rename operations prepared by this participant.voidrestoreCustomSettings(ComparisonNode node, SerializableMergeSettings container, IComparisonSession session) Restores custom settings for the specified node from the given merge settings container.retrieveComparedObjects(ComparisonContext comparisonContext, ComparisonNode node) Returns a comparedEObjects triple for the specified model node.voidsaveCustomSettings(ComparisonNode node, SerializableMergeSettings container, IComparisonSession session) Saves custom settings for the specified node into the given merge settings container.booleansupports(ComparisonNode node) Indicates whether the participant supports comparison and merging of the specified node.booleansupportsCustomMerging(ComparisonNode node, IComparisonSession session) Tells whether the given node supports custom merging.booleansupportsMergingUsingExternalTool(ComparisonNode node, IComparisonSession session) Tells whether the given node supports merging using external tool.booleansupportsPrioritizedMerging(ComparisonNode node, IComparisonSession session) Tells whether the given node supports prioritized merging.voidupdateComparison(ComparisonContext comparisonContext, ComparisonNode node, List<Long> newNodeIds) Updates comparison for the given result node.voidvalidateMerge(IMergeSession mergeSession, ComparisonContext comparisonContext, ComparisonNode node, List<MergeValidationProblem> validationProblems) Validates the process of merge of the specified model node.
-
Constructor Details
-
SolidResourceComparisonParticipant
public SolidResourceComparisonParticipant()
-
-
Method Details
-
supports
Description copied from interface:IComparisonParticipantIndicates whether the participant supports comparison and merging of the specified node.- Specified by:
supportsin interfaceIComparisonParticipant- Parameters:
node- the node, notnull- Returns:
trueif the participant supports comparison and merging,falseotherwise
-
getModelPackage
public org.eclipse.emf.ecore.EPackage getModelPackage()Description copied from interface:IComparisonParticipantGet EMF model package.- Specified by:
getModelPackagein interfaceIComparisonParticipant- Returns:
- the EMF model packge. Never code
null.
-
clear
public void clear()Description copied from interface:IComparisonParticipantClears the participant caches.- Specified by:
clearin interfaceIComparisonParticipant
-
compare
public List<Long> compare(TopComparisonNode node, ComparisonContext comparisonContext, org.eclipse.core.runtime.IProgressMonitor monitor) Description copied from interface:IComparisonParticipantCompares objects contained in the specified model top node and returns a list of child nodes to be compared.- Specified by:
comparein interfaceIComparisonParticipant- Parameters:
node- the top node to run comparison for, notnullcomparisonContext- the comparison context, notnullmonitor- the progress monitor, can benull. The clients are not supposed to report work to the monitor, except for the top object matching phase- Returns:
- a list of model node identifiers, never
null
-
validateMerge
public void validateMerge(IMergeSession mergeSession, ComparisonContext comparisonContext, ComparisonNode node, List<MergeValidationProblem> validationProblems) Description copied from interface:IComparisonParticipantValidates the process of merge of the specified model node.- Specified by:
validateMergein interfaceIComparisonParticipant- Parameters:
mergeSession- the merge session, notnullcomparisonContext- the comparison context, notnullnode- the model nodevalidationProblems- the list of collected validation problems to add new problem to
-
createMergeContext
public MergeContext createMergeContext(TopComparisonNode node, IMergeSession mergeSession, ComparisonContext comparisonContext) Description copied from interface:IComparisonParticipantCreates merge context for an upcoming merge operation.- Specified by:
createMergeContextin interfaceIComparisonParticipant- Parameters:
node- the top node to be merged, notnullmergeSession- the current merge session, notnullcomparisonContext- the comparison context, notnull- Returns:
-
merge
public org.eclipse.core.runtime.IStatus merge(TopComparisonNode node, MergeContext context, org.eclipse.core.runtime.IProgressMonitor monitor) Description copied from interface:IComparisonParticipantMerges the differences in the specified top node in the specified merge session. This may include deletion of the main object if the other object is absent, or, conversely, import ("copying") of the other object if the main object is absent.- Specified by:
mergein interfaceIComparisonParticipant- Parameters:
node- the top node to run merge for, notnullcontext- the current merge context, notnullmonitor- the progress monitor, notnull- Returns:
- the result of the merge operation
-
getPotentialCorrespondingNodes
public List<ComparisonNode> getPotentialCorrespondingNodes(ComparisonNode node, ComparisonSide sourceSide) Description copied from interface:IComparisonParticipantReturns a list of candidate nodes for setting as corresponding to the specified node.- Specified by:
getPotentialCorrespondingNodesin interfaceIComparisonParticipant- Parameters:
node- the comparison result node to find potential correspondences for, notnullsourceSide- the source side of the correspondence, notnull- Returns:
- a list of comparison result nodes, may be empty, never
null
-
onChildrenMerged
Description copied from interface:IComparisonParticipantCalled when the child nodes of the specified top node have been merged.- Specified by:
onChildrenMergedin interfaceIComparisonParticipant- Parameters:
node- the top node, notnullcontext- Current merge operation context, notnull
-
breakCorrespondence
Description copied from interface:IComparisonParticipantBreaks the correspondence for the specified node.- Specified by:
breakCorrespondencein interfaceIComparisonParticipant- Parameters:
comparisonContext- the comparison context, notnullnode- the node with the correspondence to break, notnull
-
updateComparison
public void updateComparison(ComparisonContext comparisonContext, ComparisonNode node, List<Long> newNodeIds) Description copied from interface:IComparisonParticipantUpdates comparison for the given result node. Participants could introduce their own specific logic for managing internal states on comparison update.- Specified by:
updateComparisonin interfaceIComparisonParticipant- Parameters:
comparisonContext- the comparison context, notnullnode- the node to update comparison for, notnullnewNodeIds- the list of created new node Ids to fill, notnull
-
addNewTopObjectToComparison
public TopComparisonNode addNewTopObjectToComparison(IComparisonSession comparisonSession, String mainSymlink, org.eclipse.emf.ecore.EClass eClass) Description copied from interface:IComparisonParticipantAdds a new node to the comparison for the top object. Participants could introduce their own specific logic for managing internal states on comparison update.- Specified by:
addNewTopObjectToComparisonin interfaceIComparisonParticipant- Parameters:
comparisonSession- the comparison session hosting the model, notnullmainSymlink- the symlink for the top object to add, notnulleClass- of the object ot add, notnull- Returns:
- The created result node for the object if supports.
nullotherwise.
-
combineOneSideNodes
public void combineOneSideNodes(ComparisonContext comparisonContext, ComparisonNode mainNode, ComparisonNode otherNode, List<Long> newNodeIds) Description copied from interface:IComparisonParticipantCombines the specified two one-side nodes. The participant fills array of new node Ids created while combining the specified nodes. These node Ids must be scheduled for comparison in the external code.- Specified by:
combineOneSideNodesin interfaceIComparisonParticipant- Parameters:
comparisonContext- the comparison context, notnullmainNode- the one-side MAIN node to be combined, notnullotherNode- the one-side OTHER node to be combined, notnullnewNodeIds- the list of new node Ids to fill, notnull
-
ableToBreakCorrespondence
Description copied from interface:IComparisonParticipantTells whether to able to break the correspondence for the specified node.- Specified by:
ableToBreakCorrespondencein interfaceIComparisonParticipant- Parameters:
node- the comparison node to check, notnull- Returns:
trueif it is possible to break the correspondence,falseotherwise
-
retrieveComparedObjects
public IComparedObjects<?> retrieveComparedObjects(ComparisonContext comparisonContext, ComparisonNode node) Description copied from interface:IComparisonParticipantReturns a comparedEObjects triple for the specified model node.- Specified by:
retrieveComparedObjectsin interfaceIComparisonParticipant- Parameters:
comparisonContext- the comparison context, notnullnode- the model node, cannot benull- Returns:
- the compared objects triple, never
null
-
prepareRenameOperations
public List<IRenameOnMergeOperation> prepareRenameOperations(IMergeSession mergeSession, ComparisonContext context) Description copied from interface:IComparisonParticipantGets a list of rename operations prepared by this participant.- Specified by:
prepareRenameOperationsin interfaceIComparisonParticipant- Parameters:
mergeSession- the merge session, notnullcontext- the comparison context, notnull- Returns:
- the list of rename operations, never
null
-
adoptExternalProperty
public boolean adoptExternalProperty(IComparisonSession session, ExternalPropertyComparisonData extPropData) Description copied from interface:IComparisonParticipantAdopts the given external property if it is supported by the participant instance. If adopting is possible, the method fills the provided comparison data container by its own data to be used for adoption.- Specified by:
adoptExternalPropertyin interfaceIComparisonParticipant- Parameters:
session- the comparison session, notnullextPropData- the data of the external property to be adopted, cannot benull- Returns:
trueif adopting is possible,falseotherwise
-
supportsPrioritizedMerging
Description copied from interface:IComparisonParticipantTells whether the given node supports prioritized merging.- Specified by:
supportsPrioritizedMergingin interfaceIComparisonParticipant- Parameters:
node- the node to check, cannot benullsession- the comparison session, cannot benull- Returns:
trueif the node supports prioritized merging,falseotherwise
-
supportsCustomMerging
Description copied from interface:IComparisonParticipantTells whether the given node supports custom merging.- Specified by:
supportsCustomMergingin interfaceIComparisonParticipant- Parameters:
node- the node to check, cannot benullsession- the comparison session, cannot benull- Returns:
trueif the node supports custom merging,falseotherwise
-
supportsMergingUsingExternalTool
Description copied from interface:IComparisonParticipantTells whether the given node supports merging using external tool.- Specified by:
supportsMergingUsingExternalToolin interfaceIComparisonParticipant- Parameters:
node- the comparison node to check, cannot benullsession- the comparison session, cannot benull- Returns:
trueif the node supports merging using external tool,falseotherwise
-
breakMainSideCorrespondence
Description copied from interface:IComparisonParticipantBreaks the main side correspondence represented by the specified model node.- Specified by:
breakMainSideCorrespondencein interfaceIComparisonParticipant- Parameters:
session- the comparison session hosting the model, can not benullnode- the node with the correspondence to break, can not benull
-
isExcludedFromComparison
public boolean isExcludedFromComparison(org.eclipse.emf.ecore.EStructuralFeature feature, AbstractComparedEmfObjects<?> comparedContextObjects, IComparisonSession session) Description copied from interface:IComparisonParticipantChecks whether the feature must be excluded from the comparison.- Specified by:
isExcludedFromComparisonin interfaceIComparisonParticipant- Parameters:
feature- the feature to check, cannot benullcomparedContextObjects- the triple of compared objects, cannot benullsession- the comparison session, cannot benull- Returns:
trueif the feature must be excluded,falseotherwise
-
getForcedDDRebuildScope
public Map<String,IBmObject> getForcedDDRebuildScope(TopComparisonNode topNode, MergeContext context) Description copied from interface:IComparisonParticipantIn case if the merge process changes the top object it should supply information about affected DDs.- Specified by:
getForcedDDRebuildScopein interfaceIComparisonParticipant- Parameters:
topNode- The top node of the comparison model representing the merged object, notnullcontext- Current merge operation context, notnull- Returns:
- The map of the affected DD segments and corresponding objects, may be empty, never
null
-
getDefaultMergeRule
Description copied from interface:IComparisonParticipantReturns the default merge rule for the given node.- Specified by:
getDefaultMergeRulein interfaceIComparisonParticipant- Parameters:
node- the node to get default merge rule for, can not benullsession- the comparison session, can not benull- Returns:
- the default merge rule or
nullif it wasn't specified
-
adoptMainSideFeature
public org.eclipse.emf.ecore.EStructuralFeature adoptMainSideFeature(org.eclipse.emf.ecore.EStructuralFeature mainSideFeature, IComparisonSession session) Description copied from interface:IComparisonParticipantConverts, if possible, the main side feature into a other supported by the other side object.- Specified by:
adoptMainSideFeaturein interfaceIComparisonParticipant- Parameters:
mainSideFeature- the main side feature to convert, cannot benullsession- the comparison session, cannot benull- Returns:
- the converted feature applicable for other side object or
null
-
getDefaultMustBeMerged
Description copied from interface:IComparisonParticipantReturns the default must be merged value for the given node.- Specified by:
getDefaultMustBeMergedin interfaceIComparisonParticipant- Parameters:
node- the node to get default must be merged value for, can not benullsession- the comparison session, can not benull- Returns:
- the default must be merged value or
nullif it wasn't specified
-
saveCustomSettings
public void saveCustomSettings(ComparisonNode node, SerializableMergeSettings container, IComparisonSession session) Description copied from interface:IComparisonParticipantSaves custom settings for the specified node into the given merge settings container. Does nothing if the node doesn't have any custom settings.- Specified by:
saveCustomSettingsin interfaceIComparisonParticipant- Parameters:
node- the comparison node to save custom settings for, cannot benullcontainer- the container of serializable settings, cannot benullsession- the comparison session, cannot benull
-
restoreCustomSettings
public void restoreCustomSettings(ComparisonNode node, SerializableMergeSettings container, IComparisonSession session) Description copied from interface:IComparisonParticipantRestores custom settings for the specified node from the given merge settings container.- Specified by:
restoreCustomSettingsin interfaceIComparisonParticipant- Parameters:
node- the comparison node to restore custom settings for, cannot benullcontainer- the container of serializable settings, cannot benullsession- the comparison session, cannot benull
-
isCandidateForPotentialMergeProblems
public boolean isCandidateForPotentialMergeProblems(ComparisonNode node, IComparisonSession session) Description copied from interface:IComparisonParticipantTells whether the given node may break the configuration if it is merged.- Specified by:
isCandidateForPotentialMergeProblemsin interfaceIComparisonParticipant- Parameters:
node- the node to check, cannot benullsession- the comparison session, cannot benull- Returns:
trueif the node may break the configuration,falseotherwise
-
getPotentialMergeProblemsDescriptions
public List<PotentialMergeProblemDescription> getPotentialMergeProblemsDescriptions(ComparisonNode node, ComparisonContext comparisonContext) Description copied from interface:IComparisonParticipantReturns human-readable descriptions of potential merge problems if the the specified node is merged.- Specified by:
getPotentialMergeProblemsDescriptionsin interfaceIComparisonParticipant- Parameters:
node- the node to get merge problems descriptions for, cannot benullcomparisonContext- the comparison context, cannot benull- Returns:
- the list of descriptions, never
null, can be empty if the node doesn't bring any merge problems
-
mergeUsingExternalTool
public ExternalMergeToolResult mergeUsingExternalTool(ComparisonNode node, ComparisonContext comparisonContext, org.eclipse.core.runtime.IProgressMonitor monitor) Description copied from interface:IComparisonParticipantMerges nodes using an external tool that are supported by this participant.- Specified by:
mergeUsingExternalToolin interfaceIComparisonParticipant- Parameters:
node- the comparison node, cannot benullcomparisonContext- the comparison context, cannot benullmonitor- the progress monitor, cannot benull- Returns:
- the external merge tool result or
nullif no nodes were merged
-