`

EMF模型文件对比/比较(emf.compare)

阅读更多

如果使用Text形式比较EMF模型文件,对于模型的移动,不能很好的处理。如果使用EMF-compare则能很清晰的展现这种差异,对于团队协作对比/查看 修改的内容很有用。

 

dev环境搭建:

1、获取emf.compare的源码, https://github.com/eclipse/emf.compare

2、获取google的相关插件(恰好RAP插件中有,我就直接用了。也可以从下载链接中的google-dropins获得,把这些jars放到dropins目录下)

3、把源码导入到工作空间。

/org.eclipse.emf.compare
/org.eclipse.emf.compare.edit
/org.eclipse.emf.compare.ide
/org.eclipse.emf.compare.ide.ui

 

运行

去掉平台默认的compare的插件,选中工作空间中的compare的插件。



 

 

查看Compare的效果:



 

实现自定义EMF模型的比较:

1、实现自定义EMF模型,使用Example提供的例子即可搭建一个简单的EMF例子(我这里通过Examples->EMF Validation Framework Plug-ins->General Validation Example创建);

2、为自己的模型定义添加EMF-Compare功能。

先看效果:



 

要实现这样的功能,其实很简单,只要为文件的后缀添加compare的扩展点即可。

 

   <extension
         point="org.eclipse.compare.structureMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.EMFCompareStructureMergeViewerCreator"
            extensions="extlibrary"
            id="o.e.compare.ide.ui.internal.structureMergeViewer"
            label="libCompare Structure Merge Viewer">
      </viewer>
   </extension>

 

Compare源码相关:

和其他包括schema的插件不同,解析Compare的扩展点的代码都放置在CompareUIPlugin类里面。

 

org.eclipse.compare.internal.CompareUIPlugin.registerExtensions()

 

 

在org.eclipse.emf.compare.ide.ui的插件里面添加了compare的两个扩展点:

 · org.eclipse.compare.structureMergeViewers

比较结果的呈现视图,也就是对比的两个EMF文件的差异视图。

 · org.eclipse.compare.contentMergeViewers

选中两个EMF的文件,比较之后差异显示在以树形结构的StructureCompareView中,通过双击其中的节点后,就会用到contentMergeViewers视图来呈现真正内容的不同。(包括了eobject,emfcompare_diff,eText,resource_contents四种

 

------------老版本,比较烦,需要定义contentType---------

  org.eclipse.emf.compare;bundle-version="1.2.2",
 org.eclipse.emf.compare.diff;bundle-version="1.2.2",
 org.eclipse.emf.compare.epatch;bundle-version="1.2.0",
 org.eclipse.emf.compare.ui;bundle-version="1.2.2",
 org.eclipse.emf.common.ui;bundle-version="2.7.0",
 org.eclipse.core.contenttype;bundle-version="3.4.100"

 

   <extension
         point="org.eclipse.compare.contentMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ui.viewer.content.ParameterizedContentMergeViewerCreator"
            id="test.org.eclipse.emf.compare.ui.contentmergeviewer.ModelContentMergeViewer"/>
            
            <contentTypeBinding
            contentMergeViewerId="org.eclipse.emf.compare.ui.contentmergeviewer.ModelContentMergeViewer"
            contentTypeId="test.org.eclipse.emf.compare.ui.contenttype.ModelContentType"/>
   </extension>
   <extension
         point="org.eclipse.compare.structureMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ui.viewer.structure.ParameterizedStructureMergeViewerCreator"
            extensions="*"
            id="test.org.eclipse.emf.compare.ui.structuremergeviewer.ModelStructureMergeViewer"/>
  <contentTypeBinding
            structureMergeViewerId="test.org.eclipse.emf.compare.ui.structuremergeviewer.ModelStructureMergeViewer"
            contentTypeId="test.org.eclipse.emf.compare.ui.contenttype.ModelContentType"/>
  
   </extension>
   
      <extension
         point="org.eclipse.core.runtime.contentTypes">
      <content-type
            file-extensions="database,logicview,action,entity"
            id="test.org.eclipse.emf.compare.ui.contenttype.ModelContentType"
            name="modelContentTypeName"
            priority="normal">
      </content-type>
   </extension>

 

参考链接:

1、[借用Eclipse 实现文本内容对比功能](http://lggege.iteye.com/blog/505837)

  • 大小: 54.5 KB
  • 大小: 31.7 KB
  • 大小: 18.9 KB
分享到:
评论

相关推荐

    emf教程入门和插件

    例如,EMF Compare用于模型的版本比较和合并,EMF Forms提供了用户界面组件来显示和编辑模型数据。在本教程中,你将学习如何安装和使用这些插件,提升你的EMF开发体验。 7. **实战演练** 通过实际操作,你会学习...

    EMF Developer Guide

    4. **EMF Compare**:提供模型的比较和合并功能,有助于版本控制和团队协作。 5. **XMI兼容性**:EMF遵循XMI(eXtensible Metadata Interchange)标准,可以与其他符合该标准的工具交换模型。 除了官方提供的文档,...

    emf eclipse

    同时,EMF提供的工具集,如EMF Edit和EMF Compare,可以帮助开发者在模型之间进行比较、编辑和调试,提高开发效率。 压缩包子文件的文件名“android splash”可能指的是Android应用的启动画面(Splash Screen)。这...

    eclipse EMF javadoc

    通过阅读这些文档,开发者可以学习如何创建、操作和序列化EMF模型,以及如何将模型转换为代码或者从代码反向生成模型。 EMF的核心组件包括: 1. **Ecore**: Ecore是EMF的基础元模型,它定义了基本的数据结构,如类...

    HANA Studio安装BW4客户端工具说明

    - 接下来,你需要安装四个特定的Eclipse组件:EMF Model Query, Mylyn Commons, Mylyn Task-Focused Interface, 和 Model Comparison (EMF Compare)。这些组件增强了HANA Studio的功能,特别是对于模型管理和任务...

    eclipse emf插件

    用户可以通过编写XSD(XML Schema Definition)文件来描述模型结构,然后EMF可以将这些XSD转换为Java类和相应的元模型。 2. **代码生成**:一旦模型被定义,EMF可以自动生成Java源代码,这些代码对应于模型中的每个...

    15 分钟学会 Eclipse GMF

    3. EMF Compare:用于比较和合并模型的工具。 六、实践操作 在15分钟内,你可以快速完成以下步骤: 1. 创建Ecore模型:使用EMF的Ecore Editor定义你的数据模型。 2. 设计图形编辑器:使用GMF Tooling的Diagram ...

    HANA Studio安装BW4客户端工具说明1.0.docx

    * Model Comparison (EMF Compare) 这些组件都是Eclipse的插件,旨在提供更多的功能和工具来支持开发者开发应用程序。 三、安装ABAP Core Development Tools组件 ABAP Core Development Tools是HANA Studio的一个...

    高级autocad工程师绘图技巧范本.doc

    46. **对比检查两个图**:使用“COMPARE”命令比较两个图形的差异。 47. **多段线宽度**:使用“PE”命令编辑多段线,调整线宽属性。 48. **扩大绘图空间**:在“模型空间”中使用“LIMITS”命令设置绘图范围。 ...

    CAD2004 高级工程师绘图技巧

    46. **比较两个图**:使用`COMPARE`或第三方比较工具。 47. **多段线宽度**:在多段线属性中设置。 48. **曲线绘制**:使用`SPLINE`或`POLYLINE`命令的拟合点。 49. **绘图比例**:根据需要选择适合的比例,保持...

    高级AutoCAD工程师绘图技巧

    55. **对比检查**:使用`COMPARE`命令比较两个图形的差异。 56. **多段线宽度**:在“线型”选项卡中设置多段线的宽度。 57. **虚线打印问题**:检查布局视图的“打印样式”设置,确保虚线在打印样式表中正确配置...

    85条高级AutoCAD工程师绘图技巧【pdf版,带标签】

    - 在AutoCAD中将图形导出为WMF或EMF格式,然后再插入Word文档。 - 在Word中插入图形后,调整其分辨率设置。 ### 7. 将AutoCAD中的图形插入WORD时的线宽问题。 插入AutoCAD图形到Word时,线宽可能会出现问题。可以...

Global site tag (gtag.js) - Google Analytics