📄 entitydatavalidator.java
字号:
package com.cownew.PIS.common.validator;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import com.cownew.PIS.framework.common.IBaseDAO;
import com.cownew.PIS.framework.common.IValueObject;
import com.cownew.PIS.framework.common.metaDataMgr.EntityFieldModelInfo;
import com.cownew.PIS.framework.common.metaDataMgr.EntityModelInfo;
import com.cownew.PIS.framework.common.metaDataMgr.IMetaDataLoader;
import com.cownew.PIS.framework.common.metaDataMgr.MetaDataException;
import com.cownew.PIS.framework.common.metaDataMgr.MetaDataHelper;
import com.cownew.PIS.framework.common.utils.KeyValueList;
import com.cownew.ctk.common.PropertyUtils;
import com.cownew.ctk.common.ExceptionUtils;
import com.cownew.ctk.common.StringUtils;
/**
* 值对象验证器
*/
public class EntityDataValidator
{
private IBaseDAO baseDAO;
private MetaDataHelper metaDataHelper;
private IMetaDataLoader metaDataLoader;
public EntityDataValidator(IMetaDataLoader metaDataLoader, IBaseDAO baseDAO)
{
super();
this.baseDAO = baseDAO;
metaDataHelper = new MetaDataHelper(metaDataLoader);
this.metaDataLoader = metaDataLoader;
}
/**
* 验证值对象的属性是否重复,重复则抛异常
* @param ov 被验证的ov
* @param property 被验证的属性
*/
public void checkPropertyDup(IValueObject ov, String property)
{
String propertyName = null;
try
{
propertyName = metaDataHelper.getPropertyAlias(ov, property);
} catch (MetaDataException e)
{
throw ExceptionUtils.toRuntimeException(e);
}
checkPropertyDup(ov, property, propertyName);
}
/**
* 验证值对象的属性是否重复,重复则抛异常
* @param ov被验证的ov
* @param property 被验证的属性
* @param dispalyName 属性的名称
*/
public void checkPropertyDup(IValueObject ov, String property,
String dispalyName)
{
StringBuffer sql = new StringBuffer();
KeyValueList kvList = new KeyValueList();
kvList.add("prop", PropertyUtils.getProperty(ov, property));
sql.append("from ").append(ov.getClass().getName());
sql.append(" where ");
sql.append(property).append(" = :prop ");
if (!StringUtils.isEmpty(ov.getId()))
{
sql.append(" and id<>:id");
kvList.add("id", ov.getId());
}
boolean exists = baseDAO.exists(sql.toString(), kvList);
if (exists)
{
throw new VerifyException(VerifyException.PROPDUP,
new Object[] { dispalyName });
}
}
/**
* 验证值对象的属性是否为空,为空则抛异常
* @param ov 被验证的ov
* @param property 被验证的属性
*/
public void checkEmpty(IValueObject ov, String property)
{
String propertyName = null;
try
{
propertyName = metaDataHelper.getPropertyAlias(ov, property);
} catch (MetaDataException e)
{
throw ExceptionUtils.toRuntimeException(e);
}
checkEmpty(ov, property, propertyName);
}
/**
* 验证值对象的属性是否为空,为空则抛异常
* @param ov 被验证的ov
* @param property 被验证的属性
* @param dispalyName 属性的名称
*/
public void checkEmpty(IValueObject ov, String property, String dispalyName)
{
Object value = PropertyUtils.getProperty(ov, property);
boolean isEmpty = false;
if (value == null)
{
isEmpty = true;
} else
{
if (value instanceof String)
{
isEmpty = StringUtils.isEmpty((String) value);
}
}
if (isEmpty)
{
throw new VerifyException(VerifyException.CANNOTEMPTY,
new Object[] { dispalyName });
}
}
/**
* 通过元数据设置中AllowNull属性来进行判断是否为空
*/
public void checkEmpty(IValueObject ov)
{
EntityModelInfo eInfo = metaDataLoader.loadEntityByVOClass(ov
.getClass());
String pk = eInfo.getPrimaryKey();
List fieldList = eInfo.getFields();
for (int i = 0, n = fieldList.size(); i < n; i++)
{
EntityFieldModelInfo fieldInfo = (EntityFieldModelInfo) fieldList
.get(i);
boolean isPK = fieldInfo.getName().equals(pk);
// 主键因为是uuid.hex生成,所以不校验是否为空
if (!isPK)
{
if (!fieldInfo.isAllowNull())
{
checkEmpty(ov, fieldInfo.getName(), fieldInfo.getAlias());
}
}
}
}
/**
* 验证值对象的属性是否大于0,小于等于0则抛异常
* @param ov 被验证的ov
* @param property 被验证的属性
*/
public void checkNotMoreThanZero(IValueObject ov, String property)
{
String propertyName = null;
try
{
propertyName = metaDataHelper.getPropertyAlias(ov, property);
} catch (MetaDataException e)
{
throw ExceptionUtils.toRuntimeException(e);
}
checkNotMoreThanZero(ov, property, propertyName);
}
/**
* 验证值对象的属性是否大于0,小于等于0则抛异常
* @param ov 被验证的ov
* @param property 被验证的属性
* @param dispalyName 属性的名称
*/
public void checkNotMoreThanZero(IValueObject ov, String property,
String dispalyName)
{
Object value = PropertyUtils.getProperty(ov, property);
boolean valid = true;
if (value == null)
{
valid = false;
} else if (value instanceof BigDecimal)
{
BigDecimal number = (BigDecimal) value;
valid = (number.signum() > 0);
} else if (value instanceof BigInteger)
{
BigInteger number = (BigInteger) value;
valid = (number.signum() > 0);
} else
{
Number number = (Number) value;
valid = (number.longValue() > 0);
}
if (!valid)
{
throw new VerifyException(VerifyException.NOTMORETHANZERO,
new Object[] { dispalyName });
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -