通过EMF比较计算得出的ADD差异中的“值匹配”

问题描述 投票:0回答:1

我对EMF还是陌生的,最近开始使用EMF Compare计算两个模型之间的差异。目前,这些差异只是打印到控制台上,我尝试从中检索所有有用的信息。

例如,当我打印与eAttribute的添加相对应的ADD Diff时,它看起来像这样:

UNRESOLVED LEFT ADD org.eclipse.emf.compare.internal.spec.ReferenceChangeSpec{
  reference=EClass.eStructuralFeatures,
  value=EAttribute@7e8dcdaanom,
  parentMatch=org.eclipse.emf.compare.internal.spec.MatchSpec{
    left=EClass@5cdd09b1SystemOfAirport,
    right=EClass@8c11eeeSystemOfAirport,
    origin=<null>,
    #differences=2,
    #submatches=5
  },
  match of value=org.eclipse.emf.compare.internal.spec.MatchSpec{
    left=EAttribute@7e8dcdaanom,
    right=<null>,
    origin=<null>,
    #differences=1,
    #submatches=0
  }
}

我想检索的是与MatchSpec值匹配属性相对应的ReferenceChangeSpec。但是,我似乎在ReferenceChangeSpec文档中找不到相应的吸气剂。我曾尝试研究Diffs的GitHub代码,尤其是Diff.toString(),但并没有给我带来更多的帮助,这就是为什么我寻求您的帮助。

java eclipse emf eclipse-emf emf-compare
1个回答
0
投票

EMF Compare forum上问了这个问题之后,我已经能够找到解决问题的方法。

诀窍是使用Comparison.getMatch(EObject)。因此,对于类型为[[ADD的Difference d,您要检索值的匹配Match matchOfValue = comparison.getMatch(((ReferenceChangeSpec) difference).getValue());

© www.soinside.com 2019 - 2024. All rights reserved.