以下是我的emf實例文檔的2個版本。正如您所看到的,唯一改變的是'productCode'的值從KAF到更改。但是比較是把這個當成兩個變化ADD and DELETE。不知道爲什麼?EMF比較:DifferenceKind是ADD和DELETE而不是CHANGE。爲什麼?
1版
<billableSystemEvent eventType="1" description="Application Processed">
<billableProductCode productCode="KAF"/>
</billableSystemEvent>
2版
<billableSystemEvent eventType="1" description="Application Processed">
<billableProductCode productCode="Changed"/>
</billableSystemEvent>
public Comparison compare()
{
// Load the two input models
ResourceSet resourceSet1 = new ResourceSetImpl();
ResourceSet resourceSet2 = new ResourceSetImpl();
String xmi1 = "src/test/java/com/equifax/ic/provisioning/service/v1.xmi";
String xmi2 = "src/test/java/com/equifax/ic/provisioning/service/v2.xmi";
load(xmi1, resourceSet1);
load(xmi2, resourceSet2);
// Configure EMF Compare
EMFCompare comparator = EMFCompare.builder().build();
// Compare the two models
IComparisonScope scope = EMFCompare.createDefaultScope(resourceSet1, resourceSet2);
return comparator.compare(scope);
}
@Test
public void testCompare()
{
Comparison comparison = compare();
List<Diff> differences = comparison.getDifferences();
for(Diff d: differences)
{
System.err.println("d.getKind(): "+d.getKind());
System.err.println("d.getMatch(): " + d.getMatch());
System.err.println("State: " + d.getState());
}
assertSame(Integer.valueOf(12), Integer.valueOf(differences.size()));
}
輸出
d.getKind(): ADD
d.getMatch(): MatchSpec{[email protected] Application Processed, [email protected] Application Processed, origin=<null>, #differences=2, #submatches=2}
State: UNRESOLVED
d.getKind(): DELETE
d.getMatch(): MatchSpec{[email protected] Application Processed, [email protected] Application Processed, origin=<null>, #differences=2, #submatches=2}
State: UNRESOLVED