package com.yc.database.sql;
import android.content.Context;
import java.util.HashMap;
import com.yc.database.utils.ValueUtil;
/**
*
* @author yangchong
* email : yangchong211@163.com
* time : 2017/8/6
* desc : 数据库管理工厂
* revise:
*
*/
public class SQLiteDBFactory {
/**
* 多个数据库集合对象
*/
private static HashMap dbMap = new HashMap();
/**
* 生成一个名为dnName的数据库,目录为默认目录(参考SQLiteDBConfig里面的目录设置)}
* @param context
* @param dbName 要生成的数据库名称
* @return
*/
public static SQLiteDB createSQLiteDB(Context context, String dbName) {
SQLiteDBConfig confing = new SQLiteDBConfig(context);
confing.setDbName(dbName);
return createSQLiteDB(confing);
}
/**
* 在默认目录下生成默认名称的数据库
* @param context
* @return
*/
public static SQLiteDB createSQLiteDB(Context context) {
return createSQLiteDB(new SQLiteDBConfig(context));
}
/**
* 根据自定义配置生成数据库
* @param config
* @return
*/
public static SQLiteDB createSQLiteDB(SQLiteDBConfig config) {
if(config.getVersion() < 0) {
config.setVersion(SQLiteDBConfig.DEFAULT_VERSION);
}
if(ValueUtil.isEmpty(config.getDbName())) {
config.setDbName(SQLiteDBConfig.DEFAULT_DB_NAME);
}
if(ValueUtil.isEmpty(config.getDbDirectoryPath())) {
config.setDbDirectoryPath(SQLiteDBConfig.DEFAULT_DB_DIRECTORY_PATH);
}
if(!dbMap.containsKey(config.getDbName())) {
synchronized (SQLiteDBFactory.class) {
if(!dbMap.containsKey(config.getDbName())) {
dbMap.put(config.getDbName(), new SQLiteDB(config));
}
}
}
SQLiteDB db = dbMap.get(config.getDbName());
if(!db.isOpen()) {
db.reOpen();
}
return dbMap.get(config.getDbName());
}
}