동일한 ecore 모델을 기반으로하는 EMF 인스턴스의 두 가지 버전이 있습니다. 수정 된 속성 : 추가 속성 : 삭제 된 속성 :EMF와 EMF 비교 비교
의 각 I 모델 개체 이름에서 각 개체에 대해 다음과 같은 형식
에서 v2로 V1 변경 것들의 목록을 준비해야 이러한 emf 인스턴스 파일은 실제로는 DB 데이터의 표현입니다. 사용자는 DB를 직접 변경하지는 않지만 emf 인스턴스 파일을 변경합니다. 도구는 이러한 변경 사항을 식별 한 다음 필요한 DML 문을 생성해야합니다. 의사 코드가이를 달성하는 방법에 대해 제시 될 수 있거나 더 나은 대안이 있다면 감사하게 생각하십시오. 아래 코드는 내가 현재 가지고 있습니다
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
당신은이 결과로 기대했던 것을 정확하게 말할 수 있습니까? 여기에 XMI 파일을 비교 한 결과가 있습니까? – Kellindil
@Kellindil 차이점을 기반으로 SQL 삽입, 업데이트 및 삭제를 생성 할 수 있도록 모델 개체 당 모든 변경 사항 목록을 예상합니다. –