Получение "соответствия значения" в ADD Diff, вычисленном с помощью EMF Compare
Я новичок в EMF и недавно начал использовать EMF Compare для вычисления различий между двумя моделями. На данный момент эти различия просто выводятся на консоль, и я пытаюсь извлечь из них всю полезную информацию.
Когда я печатаю ADD Diff, например, для добавления eAttribute
, это выглядит так:
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
документация. Я попытался изучить код GitHub для Diffs и особенноDiff.toString()
, но дальше меня это не продвинуло, поэтому прошу вашей помощи.
1 ответ
Задав этот вопрос на форуме EMF Compare, я смог найти решение моей проблемы.
Хитрость в том, чтобы использовать Comparison.getMatch(EObject)
. Так что дляDifference d
вида ADD, вы хотите получить совпадение значения:Match matchOfValue = comparison.getMatch(((ReferenceChangeSpec) difference).getValue());