package com.xiaomi.xms.sales.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.xiaomi.xms.sales.db.DBContract.Cache;
import com.xiaomi.xms.sales.db.DBContract.DataStats;
import com.xiaomi.xms.sales.db.DBContract.Region;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DB_VERSION = 6;
private static final String DB_NAME = "xmssales.db";
private static DatabaseHelper sInstance;
private static Context mContext;
public interface Tables {
public static final String CACHE = "cache";
public static final String CATEGORY = "category";
public static final String REGION = "region";
public static final String DATASTATS = "data_stats";
}
public final class Index {
public static final String REGION_PARENT = "region_parent";
}
public final class DataStatsTypes {
public static final String REGION = "region_cache";
}
public static synchronized DatabaseHelper getInstance(Context context) {
if (sInstance == null) {
sInstance = new DatabaseHelper(context);
mContext = context;
}
return sInstance;
}
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + Tables.CACHE + "(" +
Cache.KEY + " TEXT PRIMARY KEY," +
Cache.CONTENT + " TEXT NOT NULL," +
Cache.ETAG + " TEXT," +
Cache.ACCOUNT_ID + " TEXT);"
);
db.execSQL("CREATE TABLE " + Tables.REGION + "(" +
Region._ID + " INTEGER PRIMARY KEY," +
Region.TYPE + " INTEGER NOT NULL," +
Region.PARENT + " INTEGER NOT NULL," +
Region.NAME + " TEXT NOT NULL," +
Region.ZIPCODE + " INTEGER);");
db.execSQL("CREATE INDEX IF NOT EXISTS " + Index.REGION_PARENT + " ON " + Tables.REGION
+ " (" + Region.PARENT + ");");
db.execSQL("CREATE TABLE " + Tables.DATASTATS + "(" +
DataStats._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
DataStats.TYPE + " TEXT NOT NULL," +
DataStats.STATS + " TEXT NOT NULL);");
// load region cache into database from raw file
// must after Tables.DATASTATS created
RegionDBHelper.getInstance(mContext).initialDB(db);
}
// 覆盖API level 11及以上系统默认实现(默认实现会抛出SQLiteException)
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}