到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comBlogJava无关,不对该信息负责.通过http://kb.csdn.net/keyword/java//../../java/Articles/200605/b6947cb3-17e5-481b-9aa6-8eabeb96594c.html访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
EMF验证扩展:自定义验证规则
作者:steeven 来源:BlogJava  发布时间:2006-05-19 00:00:00.0

EMF验证方面的文档很少, 日他娘的微软拼音,真讨厌啊。
因为比较少,所以这里总结一下。

验证的定义有两种方式:
1. 生成验证方法框架,代码自己实现。参见EMF Overview:
? 添加Annotatio, Source=http://www.eclipse.org/emf/2002/Ecore, 然后添加DetailsEntry:key=constraints, Value=validateXxx
? EDataType,EClass支持,属性不支持。
2. 定义类似Schema的Facet,自动生成对应的验证代码,用于验证简单数据类型:
? 添加Annotatio, Source=http:///org/eclipse/emf/ecore/util/ExtendedMetaData, 然后添加DetailsEntry:key=maxLength, Value=2
? 支持的facet参见ExtendedMetaData。
? 仅EDataType支持,属性不支持。

示例Ecore:

新生成SqlmodelValidator.java, 代码如下:

可见Table_ValidateC, MyLabel_ValidateA,MyLabel_validateB都自动生成,修改里面的if(false)为需要的业务判断逻辑。
validateMyLabel_MaxLength()方法是根据ExtendedMetaData自动生成的,无需修改。

总结:
1. EMF验证利用了Annotation扩展,这种机制很灵活,但是给用户带来不便。
2. Attribute属性不能生成验证规则(eclipse3.2rc3),可以定义为单独的EDataType,然后引用之。
3. Constraints+Facet+本身的结构验证可以构成很强的验证规则,并且属于Model层,数据本身即可验证自身。
4. EObjectValidator.DynamicEDataTypeValidator似乎可用于动态验证,有知道用法的朋友给讲解一下~



steeven 2006-05-19 19:03

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读