import com.mycompany.guodandanexception.EntityValidateFailedException;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
public class JsrValidator<T> {
private static Validator validator;
public static Validator getValidator() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
return validator;
}
public Boolean isValidatePassed(T domain) throws EntityValidateFailedException {
JsrValidator.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(domain);
StringBuffer sb = new StringBuffer();
if (constraintViolations.size() > 0) {
for (java.util.Iterator<ConstraintViolation<T>> iterator = constraintViolations
.iterator(); iterator.hasNext();) {
ConstraintViolation<T> cnstraintViolation = (ConstraintViolation<T>) iterator.next();
sb.append(cnstraintViolation.getMessage() + "\n");
System.out.println(cnstraintViolation.getMessage());
}
throw new EntityValidateFailedException(domain.getClass().getName() + " : " + domain.toString() + "的實體驗證未通過!\n 原因爲:\n" + sb.toString());
}
return true;
}
}
public class EntityException extends RuntimeException {
private static final long serialVersionUID = 1L;
public EntityException() {
super("實體異常!");
}
public EntityException(String message) {
super(message);
}
public EntityException(String message, Throwable cause) {
super(message, cause);
}
public EntityException(Throwable cause) {
super(cause);
}
}
public class EntityValidateFailedException extends EntityException {
private static final long serialVersionUID = 1L;
public EntityValidateFailedException() {
super("實體驗證未通過!");
}
public EntityValidateFailedException(String message) {
super(message + ",實體驗證未通過!");
}
public EntityValidateFailedException(String message, Throwable cause) {
super(message, cause);
}
public EntityValidateFailedException(Throwable cause) {
super(cause);
}
}