All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.scloudic.rabbitframework.web.utils.ValidationUtils Maven / Gradle / Ivy

package com.scloudic.rabbitframework.web.utils;

import com.scloudic.rabbitframework.core.utils.StatusCode;
import com.scloudic.rabbitframework.web.Result;
import org.apache.commons.collections.CollectionUtils;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;

/**
 * hibernate验证共公类
 *
 * @author justin.liang
 */
public class ValidationUtils {

    private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();

    public static  List validateEntity(T obj, String... fieldFilter) {
        List fieldErrors = new ArrayList();
        Set> set = validator.validate(obj, Default.class);
        if (CollectionUtils.isEmpty(set)) {
            return fieldErrors;
        }
        fieldErrors = getFiledErrors(set, fieldFilter);
        return fieldErrors;
    }

    private static  List getFiledErrors(Set> set, String... fieldFilter) {
        List filter = Arrays.asList(fieldFilter);
        List fieldErrors = new ArrayList();
        for (ConstraintViolation cv : set) {
            String fieldName = cv.getPropertyPath().toString();
            if (filter.contains(fieldName)) {
                continue;
            }
            String message = cv.getMessage();
            FieldError fieldError = getFieldError(fieldName, message);
            fieldErrors.add(fieldError);
        }
        return fieldErrors;
    }

    public static FieldError getFieldError(String fieldName, String message) {
        FieldError fieldError = new FieldError();
        if (message.indexOf("{") != -1 && message.lastIndexOf("}") != -1) {
            message = message.substring(message.indexOf("{") + 1, message.lastIndexOf("}"));
        }

        fieldError.setFieldName(fieldName);
        fieldError.setErrorMessage(ServletContextHelper.getMessage(message));
        return fieldError;
    }

    public static  Result validateProperty(T obj, String propertyName) {
        int status = StatusCode.SC_OK.getValue();
        String msg = "";
        Set> set = validator.validateProperty(obj, propertyName, Default.class);
        if (CollectionUtils.isNotEmpty(set)) {
            status = StatusCode.SC_VALID_ERROR.getValue();
            StringBuffer errorMsg = new StringBuffer();
            for (ConstraintViolation cv : set) {
                errorMsg.append("arg:");
                errorMsg.append(cv.getPropertyPath().toString());
                errorMsg.append("error:");
                errorMsg.append(cv.getMessage());
            }
            msg = errorMsg.toString();
        }
        return Result.failure(status, msg);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy