使用 EMF Validation 框架来验证 EMF 模型
2010-03-03 00:00:00 来源:WEB开发网清单 7 是对之前定义的 bacth constraint 定义的修改,当事件类型不为空是,也就是说验证服务收到了模型属性变更的通知事件,此时触发验证检查新的属性值是否为空。
清单 7. 之前定义的 bacth constraint 定义的修改
public class NonEmptyNamesConstraint extends AbstractModelConstraint {
public IStatus validate(IValidationContext ctx) {
EObject eObj = ctx.getTarget();
EMFEventType eType = ctx.getEventType();
// bacth 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()});
}
// live validation 时调用
} else {
Object newValue = ctx.getFeatureNewValue();
if (newValue == null || ((String)newValue).length() == 0) {
return ctx.createFailureStatus(new Object[] {eObj.eClass().getName()});
}
}
return ctx.createSuccessStatus();
}
}
Tags:使用 EMF Validation
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接