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