六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 127|回复: 0

启用EMF的自动生成UUID功能

[复制链接]

升级  48%

32

主题

32

主题

32

主题

秀才

Rank: 2

积分
122
 楼主| 发表于 2013-2-7 19:32:43 | 显示全部楼层 |阅读模式
原文:http://www.cnblogs.com/bjzhanghao/archive/2008/07/24/1250873.html
缺省条件下,EMF不会为每个对象维护一个唯一的id,这在一些情况下不太方便,例如要在web环境下编辑一个EMF模型实例,通常需要在URL里传递对象的id以便确定目标。
有两种方式解决这类问题。第一种是在模型里给每个对象增加一个id属性,并维护使其保持唯一,例如在XXXFactory的createXXX()方法里为这个属性赋值。另一种方式是借助EMF的功能。其实EMF的XMIResource维护了一个id与对象的映射表,并且会为每个新创建的对象自动赋值,只要稍微设置一下就可以启用这个功能,具体的方法如下。
1. 在xxx.genmodel里选中package节点,在属性视图里把Resource Type属性的值设置为XMI。
 
2. 重新生成代码,EMF生成的代码里会比原来多出XXXResourceImpl.java文件。
3. 在XXXResourceImpl.java里,覆盖useUUIDs()方法,让其返回true(缺省返回的是false)。
4. 重新生成代码。(删除以前的Manifest.MF和plugin.xml文件以便这两个文件能得到更新)
这样,如果用文本方式查看新创建的模型实例文件,会发现每个对象都多出一个xmi:id属性,如xmi:id="_gitpslkoEd2PdI7FPnuunA"。要在程序里使用这个id,只需要用resource.getId(eobject)即可得到,其中resource可以通过eobject.eResource()很方便的获得。
参考链接:
How To Enable UUID In EMF Generated Model To Get Copy&Paste Working(这个链接里的方法太麻烦了,但功效一样。)
Eclipse GMF - Enabling UUIDs in Semantic model - The Simplest Way(用GMF的时候这个链接里的方法应该比较方便)
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表