📄 validatormanager.java.svn-base
字号:
.getValue();
if (vds.size() > 0) {
for (int i = 0; i < vds.size(); i++) {
if (validateObject == null)
validateObject = this.addValidateObject(vds.get(i),
property);
else
updateValidateObject(validateObject, vds.get(i));
}
Object key = en.getKey();
if (key instanceof Field) {
Field f = (Field) key;
if (!StringUtils.hasLength(validateObject
.getDisplayName()))
validateObject.setDisplayName(f.name());
if (validateObject.getKey() == null)
validateObject.setKey(f.key());
if (!StringUtils.hasLength(validateObject
.getFieldName()))
validateObject.setFieldName(f.fieldName());
} else if (key instanceof FormPO) {
if (validateObject.getFieldName() == null
|| validateObject.getFieldName().indexOf(',') > 0)
validateObject.setFieldName(property.getName());
}
if (!StringUtils.hasLength(validateObject.getFieldName()))
validateObject.setFieldName(property.getName());
}
}
}
if (validateObject != null && validateObject.getFieldName() == null)
validateObject.setFieldName(property.getName());
return validateObject;
}
/**
* 通过Validator,Field及FormPO标签中的validators标签中的标签来判断验证对象配置。该方法将返回一个结构奇怪的数据结构,也即List<Map<Annonation,List<Validator>>>。即把针对字段的Field、Validator标签;针对方法的Field、Validator标签以;针对AFormPO的标签等分别放在存放在返回列表中。
*
* @param property
* 属性名称
* @return List<Map<Annonation,List<Validator>>>
*/
private java.util.List findValidators1(
java.beans.PropertyDescriptor property) {
java.util.List ret = new java.util.ArrayList();
java.lang.reflect.Method method = property.getWriteMethod();// 只有setter才需要进入验证
if (method != null) {
// 首先查询property对应的Field属性中的Field配置
try {
java.lang.reflect.Field f = method.getDeclaringClass()
.getDeclaredField(property.getName());
java.util.List<com.easyjf.container.annonation.Validator> vds = new java.util.ArrayList<com.easyjf.container.annonation.Validator>();
java.util.Map<Object, List<com.easyjf.container.annonation.Validator>> map = new java.util.HashMap<Object, List<com.easyjf.container.annonation.Validator>>();
// 首先通过Validator标签来判断验证对象
com.easyjf.container.annonation.Validator vc = method
.getAnnotation(com.easyjf.container.annonation.Validator.class);
if (vc != null) {
vds.add(vc);
}
Field field = f.getAnnotation(Field.class);
if (field != null)
vds.addAll(findValidators(field));
map.put(field, vds);
ret.add(map);
} catch (Exception e) {
// 没找到在field上的验证标签定义
}
{
java.util.List<com.easyjf.container.annonation.Validator> vds = new java.util.ArrayList<com.easyjf.container.annonation.Validator>();
java.util.Map<Object, List<com.easyjf.container.annonation.Validator>> map = new java.util.HashMap<Object, List<com.easyjf.container.annonation.Validator>>();
// 首先通过Validator标签来判断验证对象
com.easyjf.container.annonation.Validator vc = method
.getAnnotation(com.easyjf.container.annonation.Validator.class);
// TargetObject validateObject = null;
if (vc != null) {
vds.add(vc);
}
/**
* 通过Field标签中的validator及validators来判断验证对象配置
*/
Field field = method.getAnnotation(Field.class);
if (field != null)
vds.addAll(findValidators(field));
map.put(field, vds);
ret.add(map);
}
// 通过FormPO中的validators属性来检测配置对象
java.util.List<com.easyjf.container.annonation.Validator> vds = new java.util.ArrayList<com.easyjf.container.annonation.Validator>();
java.util.Map<Object, List<com.easyjf.container.annonation.Validator>> map = new java.util.HashMap<Object, List<com.easyjf.container.annonation.Validator>>();
Class clz= method.getDeclaringClass();
FormPO tempPO=null;
while(clz.getSuperclass()!=Object.class){
FormPO po =(FormPO)clz.getAnnotation(FormPO.class);
if(po!=null && tempPO==null)tempPO=po;
if (po != null && po.validators() != null) {
vds.addAll(findValidators(po, property.getName()));
}
clz=clz.getSuperclass();
}
if(tempPO!=null)
map.put(tempPO, vds);
ret.add(map);
}
return ret;
}
/**
* 根据属性查询验证器列表
*
* @param property
* 属性名称
* @return 查询结果
*/
public java.util.List<com.easyjf.container.annonation.Validator> findValidators(
java.beans.PropertyDescriptor property) {
java.util.List<com.easyjf.container.annonation.Validator> vds = new java.util.ArrayList<com.easyjf.container.annonation.Validator>();
java.util.List ret = findValidators1(property);
java.util.Iterator it = ret.iterator();
while (it.hasNext()) {
Map map = (Map) it.next();
java.util.Iterator vsi = map.entrySet().iterator();
while (vsi.hasNext()) {
Map.Entry en = (Map.Entry) vsi.next();
vds.addAll((List) en.getValue());
}
}
return vds;
}
/**
* 解析Field这个标签,返回验证器对象
*
* @param field
* @return 查询结果
*/
protected java.util.List<com.easyjf.container.annonation.Validator> findValidators(
Field field) {
java.util.List<com.easyjf.container.annonation.Validator> vds = new java.util.ArrayList<com.easyjf.container.annonation.Validator>();
if (field != null) {
if (!"NULL".equalsIgnoreCase(field.validator().name())) {
com.easyjf.container.annonation.Validator vconfig = field
.validator();
vds.add(vconfig);
}
if (field.validators() != null) {
for (int i = 0; i < field.validators().length; i++) {
com.easyjf.container.annonation.Validator vtor = field
.validators()[i];
vds.add(vtor);
}
}
}
return vds;
}
/**
* 从标签FormPO中,返回
*
* @param formPo
* @param name
* @return 查询结果
*/
public java.util.List<com.easyjf.container.annonation.Validator> findValidators(
FormPO formPo, String name) {
java.util.List<com.easyjf.container.annonation.Validator> vds = new java.util.ArrayList<com.easyjf.container.annonation.Validator>();
if (formPo != null && formPo.validators() != null) {
for (int i = 0; i < formPo.validators().length; i++) {
String fs = formPo.validators()[i].field();
fs = fs + ",";
if (fs.toLowerCase().indexOf(name.toLowerCase() + ",") >= 0)
vds.add(formPo.validators()[i]);
}
}
return vds;
}
/**
* 更新验证目标对象中的内容
*
* @param targetObject
* @param vc
*/
private void updateValidateObject(TargetObject targetObject,
com.easyjf.container.annonation.Validator vc) {
targetObject.setType(vc.type());
if (!"".equals(vc.msg()))
targetObject.setDefaultMessage(vc.msg());
if (!"".equals(vc.displayName()))
targetObject.setDisplayName(vc.displayName());
if (!"".equals(vc.field()))
targetObject.setFieldName(vc.field());
if (!"".equals(vc.key()))
targetObject.setKey(vc.key());
if (vc.required())
targetObject.setRequried(vc.required());
if (!"".equals(vc.value()))
targetObject.setValues(vc.value());
Validator vtor = this.getValidator(vc.name());
targetObject.addValidator(vtor);
}
/**
* 根据验证对象配置信息创建验证对象
*
* @param vc
* 基于annotations的配置信息
* @param target
* 属性所属的目标对象
* @return 新创建或者已经存在的验证TargetObject
*/
private TargetObject createValidateObject(
com.easyjf.container.annonation.Validator vc, Object target) {
TargetObject obj = new TargetObject(this);
obj.setTarget(target);
this.updateValidateObject(obj, vc);
return obj;
}
/**
* 往错误结果集中加入自定义的错误
*
* @param name
* @param msg
* @param type
*/
public void addCustomError(String name, String msg, ValidateType type) {
TargetObject tempTarget = new TargetObject();
tempTarget.setDefaultMessage(msg);
tempTarget.setFieldName(name);
tempTarget.setDisplayName(name);
tempTarget.setType(type);
ValidateResult vr = new ValidateResult(tempTarget);
this.getErrors().addError(vr);
}
/**
* 根据验证对象配置信息把验证对象添加到缓存中,并返回该对象,以供调用者使用
*
* @param vc
* 基于annotations的验证对象配置信息
* @param target
* 验证对象所属的目标对象
* @return 具体的验证对象
*/
private TargetObject addValidateObject(
com.easyjf.container.annonation.Validator vc, Object target) {
TargetObject obj = createValidateObject(vc, target);
this.addValidateObject(obj);
return obj;
}
public Class findTargetType(String name) {
return targetTypes.get(name);
}
public void addTargetType(String name, Class clz) {
if (targetTypes.containsKey(name))
logger.warn("覆盖名为" + name + "的验证类!");
targetTypes.put(name, clz);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -