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

win.doyto.query.core.CommonUtil Maven / Gradle / Ivy

// Generated by delombok at Sat Aug 10 11:56:00 CST 2019
package win.doyto.query.core;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.commons.lang3.reflect.MethodUtils;
import win.doyto.query.config.GlobalConfiguration;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.persistence.*;

/**
 * CommonUtil
 *
 * @author f0rb on 2019-05-31
 */
class CommonUtil {
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(CommonUtil.class);
    private static final Pattern PTN_$EX = Pattern.compile("\\$\\{(\\w+)}");
    private static final Pattern PTN_CAPITAL_CHAR = Pattern.compile("([A-Z])");
    private static final Pattern PTN_SPLIT_OR = Pattern.compile("Or(?=[A-Z])");

    static boolean isDynamicTable(String input) {
        return PTN_$EX.matcher(input).find();
    }

    static String replaceHolderInString(Object entity, String input) {
        Matcher matcher = PTN_$EX.matcher(input);
        if (!matcher.find()) {
            return input;
        }
        StringBuffer sb = new StringBuffer();
        do {
            String fieldName = matcher.group(1);
            String replacement = StringUtils.remove(String.valueOf(readField(entity, fieldName)), ' ');
            matcher.appendReplacement(sb, replacement);
        } while (matcher.find());
        return matcher.appendTail(sb).toString();
    }

    static Object readFieldGetter(Field field, Object target) {
        Object value;
        try {
            String fieldName = field.getName();
            String prefix = field.getType().isAssignableFrom(boolean.class) ? "is" : "get";
            value = MethodUtils.invokeMethod(target, true, prefix + StringUtils.capitalize(fieldName));
        } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
            log.warn("is/get调用异常 : {}-{}", e.getClass().getName(), e.getMessage());
            value = readField(field, target);
        }
        if (value instanceof Enum) {
            Enumerated enumerated = field.getAnnotation(Enumerated.class);
            if (enumerated != null && enumerated.value() == EnumType.STRING) {
                value = value.toString();
            } else {
                value = ((Enum) value).ordinal();
            }
        }
        return value;
    }

    static Object readField(Field field, Object target) {
        try {
            return FieldUtils.readField(field, target, true);
        } catch (final java.lang.Throwable $ex) {
            throw lombok.Lombok.sneakyThrow($ex);
        }
    }

    static Object readField(Object target, String fieldName) {
        return readField(getField(target, fieldName), target);
    }

    static Field getField(Object target, String fieldName) {
        return FieldUtils.getField(target.getClass(), fieldName, true);
    }

    static void writeField(Field field, Object target, Object value) {
        try {
            FieldUtils.writeField(field, target, value, true);
        } catch (final java.lang.Throwable $ex) {
            throw lombok.Lombok.sneakyThrow($ex);
        }
    }

    static boolean ignoreField(Field field) {
        return  // $jacocoData
        // static field
        // id
        field.getName().startsWith("$") || Modifier.isStatic(field.getModifiers()) || field.isAnnotationPresent(GeneratedValue.class) || field.isAnnotationPresent(Transient.class) // Transient field
        ;
    }

    static String wrapWithParenthesis(String input) {
        return "(" + input + ")";
    }

    static String escapeLike(String like) {
        return StringUtils.isBlank(like) ? like : "%" + escape(like) + "%";
    }

    static String escapeStart(String like) {
        return StringUtils.isBlank(like) ? like : escape(like) + "%";
    }

    private static String escape(String like) {
        return like.replaceAll("[%|_]", "\\\\$0");
    }

    static String convertColumn(String columnName) {
        return GlobalConfiguration.instance().isMapCamelCaseToUnderscore() ? camelCaseToUnderscore(columnName) : columnName;
    }

    private static String camelCaseToUnderscore(String camel) {
        return PTN_CAPITAL_CHAR.matcher(camel).replaceAll("_$1").toLowerCase();
    }

    static boolean isValidValue(Object value, Field field) {
        return !(value == null || (value instanceof Boolean && field.getType().isPrimitive() && Boolean.FALSE.equals(value)) || (value instanceof Collection && field.getName().endsWith(QuerySuffix.NotIn.name()) && ((Collection) value).isEmpty()));
    }

    static String camelize(String or) {
        return or.substring(0, 1).toLowerCase() + or.substring(1);
    }

    static String[] splitByOr(String columnName) {
        return PTN_SPLIT_OR.split(columnName, 0);
    }

    static String toCamelCase(String input) {
        String[] parts = input.split("_");
        StringBuilder result = new StringBuilder(parts[0]);
        for (int i = 1; i < parts.length; i++) {
            result.append(StringUtils.capitalize(parts[i]));
        }
        return result.toString();
    }

    static String resolveColumn(Field field) {
        Column column = field.getAnnotation(Column.class);
        return column != null && !column.name().isEmpty() ? column.name() : convertColumn(field.getName());
    }

    static String selectAs(Field field) {
        String columnName = resolveColumn(field);
        return columnName.equalsIgnoreCase(field.getName()) ? columnName : columnName + " AS " + field.getName();
    }

    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    private CommonUtil() {
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy