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

cn.jiangzeyin.database.config.SystemColumn Maven / Gradle / Ivy

There is a newer version: 1.2.11
Show newest version
package cn.jiangzeyin.database.config;

import cn.jiangzeyin.StringUtil;
import cn.jiangzeyin.database.annotation.FieldConfig;
import cn.jiangzeyin.sequence.ISequence;
import cn.jiangzeyin.util.DbReflectUtil;
import com.alibaba.druid.util.StringUtils;

import java.lang.reflect.Field;
import java.util.*;

/**
 * 系统字段
 *
 * @author jiangzeyin
 */
public class SystemColumn {
    private static String pwdColumn = "";
    private static final List NOT_PUT_UPDATE = new ArrayList<>();
    private static final HashMap COLUMN_DEFAULT_VALUE = new HashMap<>();
    private static final List WRITE_DEFAULT_REMOVE = new ArrayList<>();
    private static final List READ_DEFAULT_REMOVE = new ArrayList<>();
    private static String defaultSelectColumns = "*";
    private static String defaultRefKeyName = "id";
    private static String defaultKeyName = "id";

    /**
     * @return default ref key name
     */
    public static String getDefaultRefKeyName() {
        return defaultRefKeyName;
    }

    /**
     * @return default key name
     */
    public static String getDefaultKeyName() {
        return defaultKeyName;
    }

    public static String getDefaultSelectColumns() {
        return defaultSelectColumns;
    }

    public static boolean isWriteRemove(String name) {
        return name != null && WRITE_DEFAULT_REMOVE.contains(name.toLowerCase());
    }

    public static boolean isReadRemove(String name) {
        return name != null && READ_DEFAULT_REMOVE.contains(name.toLowerCase());
    }


    /**
     * 获取字段的默认值
     *
     * @param name 字段名称
     * @return 默认值
     */
    public static String getDefaultValue(String name) {
        if (StringUtils.isEmpty(name)) {
            return null;
        }
        return COLUMN_DEFAULT_VALUE.get(name.toLowerCase());
    }

    /**
     * 判断是否为sequence 字段
     *
     * @param cls  cls
     * @param name 字段名称
     * @return true 需要生成主键
     */
    public static boolean isSequence(Class cls, String name) {
        Field field = DbReflectUtil.getField(cls, name);
        if (field == null) {
            return false;
        }
        FieldConfig fieldConfig = field.getAnnotation(FieldConfig.class);
        if (fieldConfig == null) {
            return false;
        }
        Class sequenceCls = fieldConfig.sequence();
        return sequenceCls != ISequence.class;
    }

    /**
     * 判断是否可以修改
     *
     * @param name 字段名称
     * @return true 可以修改
     */
    public static boolean notCanUpdate(String name) {
        return StringUtils.isEmpty(name) || NOT_PUT_UPDATE.contains(name.toLowerCase());
    }

    public static class Active {
        public static final int NO_ACTIVE = -100;
        private static String column = "";
        private static int activeValue = NO_ACTIVE;
        private static int inActiveValue;

        public static int getInActiveValue() {
            return inActiveValue;
        }

        public static String getColumn() {
            return column;
        }

        public static int getActiveValue() {
            return activeValue;
        }
    }

    /**
     *
     */
    public static class Modify {
        private static boolean status = false;
        private static String column;
        private static String time;

        public static String getColumn() {
            return column;
        }

        public static String getTime() {
            return time;
        }

        public static boolean isStatus() {
            return status;
        }
    }

    public static String getPwdColumn() {
        return pwdColumn;
    }

    static void init(Properties properties) {
        // 密码字段
        String tempPwdColumn = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_PWD);
        pwdColumn = StringUtil.convertNULL(tempPwdColumn);
        // 状态字段
        String column = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_ACTIVE);
        Active.column = StringUtil.convertNULL(column);
        if (!StringUtils.isEmpty(Active.column)) {
            Active.activeValue = Integer.parseInt(properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_ACTIVE_VALUE));
            Active.inActiveValue = Integer.parseInt(properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_UN_ACTIVE));
        }
        // 系统修改时间字段
        String status = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_MODIFY_STATUS);
        if (Boolean.valueOf(status)) {
            Modify.status = true;
            String userColumn = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_MODIFY_COLUMN);
            if (StringUtils.isEmpty(userColumn)) {
                throw new IllegalArgumentException(ConfigProperties.PROP_SYSTEM_COLUMN_MODIFY_COLUMN + " is null");
            }
            Modify.column = userColumn;
            String userTime = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_MODIFY_TIME);
            if (StringUtils.isEmpty(userTime)) {
                throw new IllegalArgumentException(ConfigProperties.PROP_SYSTEM_COLUMN_MODIFY_TIME + " is null");
            }
            Modify.time = userTime;
        }
        // 不允许修改的字段
        String notPutUpdate = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_NOT_PUT_UPDATE);
        if (!StringUtils.isEmpty(notPutUpdate)) {
            String[] array = StringUtil.stringToArray(notPutUpdate.toLowerCase());
            if (array != null) {
                NOT_PUT_UPDATE.addAll(Arrays.asList(array));
            }
        }
        // 默认值
        String defaultValue = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_COLUMN_DEFAULT_VALUE);
        if (!StringUtils.isEmpty(defaultValue)) {
            String[] array = StringUtil.stringToArray(defaultValue, ",");
            if (array != null) {
                for (String item : array) {
                    String[] value = item.split(":");
                    COLUMN_DEFAULT_VALUE.put(value[0].toLowerCase(), value[1]);
                }
            }
        }
        //
        String writeDef = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_WRITE_DEFAULT_REMOVE);
        if (!StringUtils.isEmpty(writeDef)) {
            String[] array = StringUtil.stringToArray(writeDef.toLowerCase());
            if (array != null) {
                WRITE_DEFAULT_REMOVE.addAll(Arrays.asList(array));
            }
        }
        //
        String readDef = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_READ_DEFAULT_REMOVE);
        if (!StringUtils.isEmpty(readDef)) {
            String[] array = StringUtil.stringToArray(readDef.toLowerCase());
            if (array != null) {
                READ_DEFAULT_REMOVE.addAll(Arrays.asList(array));
            }
        }
        //
        String columnsDef = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_SELECT_DEFAULT_COLUMNS);
        if (!StringUtils.isEmpty(columnsDef)) {
            defaultSelectColumns = columnsDef;
        }
        // 默认外键列名称
        String refKeyDef = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_DEFAULT_REF_KEY_NAME);
        if (!StringUtils.isEmpty(refKeyDef)) {
            defaultRefKeyName = refKeyDef;
        }

        // 默认主键列名称
        String keyDef = properties.getProperty(ConfigProperties.PROP_SYSTEM_COLUMN_DEFAULT_KEY_NAME);
        if (!StringUtils.isEmpty(keyDef)) {
            defaultKeyName = keyDef;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy