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

cn.jiangzeyin.database.CommonEntityInfoConfig Maven / Gradle / Ivy

package cn.jiangzeyin.database;

import cn.jiangzeyin.entity.defaults.PageTemplate;
import cn.jiangzeyin.entity.defaults.QuartzInfo;
import cn.jiangzeyin.entity.defaults.SiteInfo;
import cn.jiangzeyin.entity.defaults.SystemParameter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;

/**
 * @author jiangzeyin
 * Created by jiangzeyin on 2017/2/3.
 */
public class CommonEntityInfoConfig {

    private static final HashMap DEFAULT_TAG = new HashMap<>();
    private static final HashMap DEFAULT_CLASS = new HashMap<>();
    private static final HashMap DEFAULT_TABLE_NAME = new HashMap<>();

    static {
        DEFAULT_CLASS.put(SiteInfo.class, "siteInfo");
        DEFAULT_CLASS.put(PageTemplate.class, "pageTemplate");
        DEFAULT_CLASS.put(QuartzInfo.class, "quartzInfo");
        DEFAULT_CLASS.put(SystemParameter.class, "systemParameter");
    }

    static void init(JSONObject jsonObject) throws ClassNotFoundException {
        JSONArray default_json = jsonObject.getJSONArray("default_database_name");
        if (default_json != null) {
            for (Object object : default_json) {
                JSONObject item = (JSONObject) object;
                String type = item.getString("name");
                String tag = item.getString("tag");
                DEFAULT_TAG.put(type, tag);
            }
        }

        JSONArray default_table_name = jsonObject.getJSONArray("default_table_name");
        if (default_table_name != null) {
            for (Object object : default_table_name) {
                JSONObject item = (JSONObject) object;
                String type = item.getString("name");
                String table = item.getString("table");
                DEFAULT_TABLE_NAME.put(type, table);
            }
        }
    }

    private volatile static ConvertEntity convertEntity;

    public static void setConvertEntity(ConvertEntity convertEntity) {
        CommonEntityInfoConfig.convertEntity = convertEntity;
    }


    /**
     * @param cls cls
     * @return name
     */
    static String getDatabaseName(Class cls) {
        String name = DEFAULT_CLASS.get(cls);
        if (name != null) {
            String tag = DEFAULT_TAG.get(name);
            if (tag == null)
                throw new RuntimeException("please config entity mapper " + cls);
            return tag;
        }
        if (convertEntity == null)
            throw new RuntimeException("please config ConvertEntity " + cls);
        return convertEntity.getDatabaseName(cls);
    }

    /**
     * @param object obj
     * @return obj
     */
    public String getDatabaseName(Object object) {
        if (object == null)
            throw new IllegalArgumentException("object is null");
        return getDatabaseName(object.getClass());
    }

    static String getTableName(Class class1, boolean isIndex, String index, boolean isDatabaseName) {
        String name = DEFAULT_CLASS.get(class1);
        if (name != null) {
            String tag = DEFAULT_TABLE_NAME.get(name);
            if (tag == null)
                throw new RuntimeException("please config entity mapper" + class1);
            return tag;
        }
        if (convertEntity == null)
            throw new RuntimeException("please config ConvertEntity" + class1);
        return convertEntity.getTableName(class1, isIndex, index, isDatabaseName);
    }

    /**
     * convert database name
     */
    public interface ConvertEntity {
        String getDatabaseName(Class cls);

        String getTableName(Class class1, boolean isIndex, String index, boolean isDatabaseName);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy