package net.yasite.dao;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.content.Context;
import android.content.res.AssetManager;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import de.greenrobot.dao.AbstractDaoMaster;
import de.greenrobot.dao.identityscope.IdentityScopeType;
import de.greenrobot.dao.query.QueryBuilder;
public class DaoMaster extends AbstractDaoMaster {
private static DaoMaster instance;
private static DaoSession daoSession;
public static DaoMaster getInstance(Context context){
// QueryBuilder.LOG_VALUES = true;
// QueryBuilder.LOG_SQL = true;
if(instance == null){
synchronized (DaoMaster.class) {
if(instance == null){
instance = new DaoMaster(context);
}
}
}
return instance;
}
private DaoMaster(Context context){
super((new DaoMaster.OpenHelper(context, DBConstant.DBNAME, null)).getWritableDatabase(),
DBConstant.DBVERSION);
// registerDaoClass(PlayRoundDao.class);
// registerDaoClass(MatchDao.class);
// registerDaoClass(ChannelInfoEntityDao.class);
registerDaoClass(UserDao.class);
registerDaoClass(NewsDao.class);
// registerDaoClass(ThreadTempDao.class);
}
private static void createAllTables(SQLiteDatabase db, boolean ifNotExists) {
// PlayRoundDao.createTable(db, ifNotExists);
// MatchDao.createTable(db, ifNotExists);
// ChannelInfoEntityDao.createTable(db, ifNotExists);
UserDao.createTable(db, ifNotExists);
NewsDao.createTable(db, ifNotExists);
// ThreadTempDao.createTable(db, ifNotExists);
}
private static class OpenHelper extends SQLiteOpenHelper {
private Context context;
public OpenHelper(Context context, String name, CursorFactory factory) {
super(context, name, factory, DBConstant.DBVERSION);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
createAllTables(db, false);
// loadAssetsData(db,context);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion){
// case 1:
// MatchDao.createTable(db, true);
// case 2:
// ChannelInfoEntityDao.createTable(db, true);
// case 3:
// UserDao.createTable(db, true);
// case 4:
// String sql = "ALTER TABLE " + MatchDao.TABLENAME + " ADD `webLivingFlag` TEXT";
// db.execSQL(sql.toString());
// NewsDao.createTable(db, true);
// case 5:
// ThreadTempDao.createTable(db, true);
}
}
}
public DaoSession newSession() {
return newSession(IdentityScopeType.None);
}
public DaoSession newSession(IdentityScopeType type) {
if(daoSession == null){
daoSession = new DaoSession(instance.db, type, instance.daoConfigMap);
}
return daoSession;
}
public static void clear(){
instance = null;
daoSession = null;
}
public static void loadAssetsData(SQLiteDatabase db,Context context){
AssetManager assetManager = context.getAssets();
try {
InputStream is = assetManager.open("sql.txt");
if(is == null){
throw new RuntimeException("sql.txt不存在");
}
String encoding="GBK";
InputStreamReader read = new InputStreamReader(is,encoding);
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
StringBuffer sql = new StringBuffer(0);
while((lineTxt = bufferedReader.readLine()) != null){
sql.append(lineTxt);
if(lineTxt.endsWith(";")){
db.execSQL(sql.toString());
sql.setLength(0);
}
}
read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}