WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发Java 使用 EMF Validation 框架来验证 EMF 模型 阅读

使用 EMF Validation 框架来验证 EMF 模型

 2010-03-03 00:00:00 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鎼痪褔鏌曟繝蹇曠窗闁煎壊浜滈—鍐偓锝庡墮娴犙勭箾閸喎鐏ユい鏇樺劦椤㈡瑩鎮℃惔銇帮拷
核心提示: 图 5. 修改 Library 模型的 Base Package 属性接下来,我们就可以生成 Library 模型的 Java 实现了,使用 EMF Validation 框架来验证 EMF 模型(5),如图 6 所示,在 Library 包上单击右键,实现了基本的验证逻辑,并将验证结果通过状态

图 5. 修改 Library 模型的 Base Package 属性
使用 EMF Validation 框架来验证 EMF 模型

接下来,我们就可以生成 Library 模型的 Java 实现了。如图 6 所示,在 Library 包上单击右键,并在弹出菜单中选择 Generate Model Code 项,在 test.emf.validation 项目中生成 Library 的 Java 实现。

图 6. 生成 Library 模型的 Java 实现
使用 EMF Validation 框架来验证 EMF 模型

同样地,选择 Generate Edit Code 菜单项和 Generate Editor Code 菜单项可以生成 Library 模型的编辑器代码。在进行完迄今为止的这些步骤之后,我们可以开始编写代码来利用 EMF Validation Framework“保护”Library 模型了。

第二步 定义 batch constraint

前面提到过,用 JAVA 实现的约束都需要扩展 AbstractModelConstrain,实现 validate() 方法。在清单 3 的代码中,我们定义了一个 constraint 用来验证图书馆,书籍,作者三者的名字都不能为空,这个方法通过输入的验证上下文(IValidationContext)获取目标对象,实现了基本的验证逻辑,并将验证结果通过状态信息(IStatus)报告给用户,使用起来非常直观。

清单 3. 代码示例

 public class NonEmptyNamesConstraint extends AbstractModelConstraint { 
 public IStatus validate(IValidationContext ctx) { 
  EObject eObj = ctx.getTarget(); 
  EMFEventType eType = ctx.getEventType();  
  // batch validation 时调用 
  if (eType == EMFEventType.NULL) { 
  String name = null; 
  if (eObj instanceof Writer) { 
   name = ((Writer)eObj).getName(); 
  } else if (eObj instanceof Library) { 
   name = ((Library)eObj).getName(); 
  } else if (eObj instanceof Book) { 
   name = ((Book)eObj).getTitle(); 
  } 
  
  if (name == null || name.length() == 0) { 
 return ctx.createFailureStatus(new Object[] {eObj.eClass().getName()}); 
  } 
  }  
  return ctx.createSuccessStatus(); 
 } 
 } 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 EMF Validation

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接