当前位置: 首页 > 知识库问答 >
问题:

EMF模型比较与EMF比较

东方森
2023-03-14

我有两个基于同一ecore模型的EMF实例版本。我需要以以下格式准备一个从v1到v2更改的事物列表

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{left=BillableSystemEvent@1b5340c Application Processed, right=BillableSystemEvent@16c163f Application Processed, origin=<null>, #differences=2, #submatches=2}
State: UNRESOLVED

d.getKind(): DELETE
d.getMatch(): MatchSpec{left=BillableSystemEvent@1b5340c Application Processed, right=BillableSystemEvent@16c163f Application Processed, origin=<null>, #differences=2, #submatches=2}
State: UNRESOLVED

共有1个答案

许兴文
2023-03-14

我不能说我真的理解您想要实现的一切,但据我所知,您对EMF Compare格式的差异并不真正感兴趣。相反,您正在尝试为差异生成一种不同的表示形式。

您可能对重新实现IDiffProcessor感兴趣。每次我们检测到变化时,都会通知Diff处理器。默认情况下,我们创建“diff”实例...没有什么可以阻止您生成DML语句。您可以在这里快速了解IDiffProcessor API。

 类似资料:
  • 我想在EMF Compare的匹配结果中隐藏一些树节点,因为它们只是对我们的用户没有意义的容器。 null 谢谢, 马蒂亚斯

  • 我试图在一个独立的Java应用程序中使用EMF比较。在Eclipse foruns中,有人建议我使用Git中的版本。 我克隆了存储库。然后,我导入了一个工作区中的所有项目。我读到我只需要主EMF比较库,所以我将项目org.eclipse.EMF.Compare导出到一个可部署的插件和片段中,并将其放在默认eclipse目录的plugins文件夹中。 在我的项目中,我现在可以导入org.eclips

  • 如何在Eclipse上签出和设置EMF比较?我找到了EMF Compare的网站贡献者指南:http://wiki.eclipse.org/emf_compare/contributor_guide 但他们没有足够的指示。我查看了master branch,git存储库中没有包含大量其他依赖项。例如番石榴、纸莎草和UML2。 我正在寻找对EMF进行调整比较,我需要在Eclipse上设置它,这样我就

  • 我有一个基于emf的模型。在模型中,我有一个feature类,我可以向这些feature添加约束。例如,特性A“暗示”特性B。我正在尝试使用emf命令堆栈向特性添加约束。它将约束添加到特征中,但缺少属性。我的代码如下

  • [编辑]我检查了emf compare模块,结果发现emf compare只提供了“compare with”菜单中的“compare with ether”选项。正在比较两个文件。所以剩下的问题是如何使选项“compare with”>“Latest from Repository”与emf compare editor一起工作