ADD file via upload

main
pe9vkn3zc 5 months ago
parent cf2e3d8e25
commit d47155210a

@ -0,0 +1,202 @@
package com.utils;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import com.entity.EIException;
/**
* Hibernate Validator
*
*
*
*
* 1. JSR-303/JSR-380Bean Validation
* 2. 使Hibernate Validator
* 3.
* 4.
*
*
* -
* -
* -
* -
*
* 使
* -
* -
* -
* - API
*/
public class ValidatorUtils {
/**
*
* 使
*/
private static Validator validator;
// 静态初始化块,在类加载时初始化验证器
static {
// 创建默认的验证器工厂并获取验证器实例
validator = Validation.buildDefaultValidatorFactory().getValidator();
}
/**
*
*
*
* @param object
* @param groups
* @throws EIException
*/
public static void validateEntity(Object object, Class<?>... groups)
throws EIException {
// 执行验证,返回违反约束的集合
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
// 如果存在验证错误
if (!constraintViolations.isEmpty()) {
// 获取第一个验证错误(快速失败模式)
ConstraintViolation<Object> constraint = (ConstraintViolation<Object>) constraintViolations.iterator().next();
// 抛出业务异常,包含错误消息
throw new EIException(constraint.getMessage());
}
}
// 可以添加的增强方法:
/**
*
*
* @param object
* @param groups
* @return
*/
public static Set<ConstraintViolation<Object>> validateEntityWithDetails(Object object, Class<?>... groups) {
return validator.validate(object, groups);
}
/**
*
*
* @param object
* @param groups
* @return
*/
public static Set<String> validateEntityMessages(Object object, Class<?>... groups) {
Set<ConstraintViolation<Object>> violations = validator.validate(object, groups);
Set<String> messages = new java.util.HashSet<>();
for (ConstraintViolation<Object> violation : violations) {
messages.add(violation.getMessage());
}
return messages;
}
/**
*
*
* @param object
* @param propertyName
* @param groups
* @throws EIException
*/
public static void validateProperty(Object object, String propertyName, Class<?>... groups)
throws EIException {
Set<ConstraintViolation<Object>> violations = validator.validateProperty(object, propertyName, groups);
if (!violations.isEmpty()) {
ConstraintViolation<Object> constraint = violations.iterator().next();
throw new EIException(constraint.getMessage());
}
}
/**
*
*
* @param beanType Bean
* @param propertyName
* @param value
* @param groups
* @throws EIException
*/
public static void validateValue(Class<?> beanType, String propertyName, Object value, Class<?>... groups)
throws EIException {
Set<ConstraintViolation<?>> violations = validator.validateValue(beanType, propertyName, value, groups);
if (!violations.isEmpty()) {
ConstraintViolation<?> constraint = violations.iterator().next();
throw new EIException(constraint.getMessage());
}
}
/**
*
*
* @param object
* @param groups
* @return
*/
public static String validateEntityCollectMessages(Object object, Class<?>... groups) {
Set<ConstraintViolation<Object>> violations = validator.validate(object, groups);
if (violations.isEmpty()) {
return null;
}
StringBuilder sb = new StringBuilder();
for (ConstraintViolation<Object> violation : violations) {
sb.append(violation.getPropertyPath()).append(": ").append(violation.getMessage()).append("; ");
}
return sb.toString();
}
/**
*
*
* @param object
* @param groups
* @throws EIException
*/
public static void validateEntityWithAllMessages(Object object, Class<?>... groups)
throws EIException {
Set<ConstraintViolation<Object>> violations = validator.validate(object, groups);
if (!violations.isEmpty()) {
String errorMessage = validateEntityCollectMessages(object, groups);
throw new EIException(errorMessage);
}
}
/**
*
*
* @param object
* @throws EIException
*/
public static void quickValidate(Object object) throws EIException {
validateEntity(object);
}
/**
* 便
*
* @param object
* @param group
* @throws EIException
*/
public static void validateInGroup(Object object, Class<?> group) throws EIException {
validateEntity(object, group);
}
/**
*
*
* @param objects
* @throws EIException
*/
public static void validateEntities(Object... objects) throws EIException {
for (Object object : objects) {
validateEntity(object);
}
}
}
Loading…
Cancel
Save