package pl.pwr.smartkill.db;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;
public class UserHelper {//TODO use sqlite to store data about users
private static final String DEBUG_TAG = "SqLiteUserManager";
private static final int DB_VERSION = 1;
private static final String DB_NAME = "database.db";
private static final String DB_TABLE = "users";
public static final String KEY_ID = "_id";
public static final String ID_OPTIONS = "INTEGER PRIMARY KEY AUTOINCREMENT";
public static final int ID_COLUMN = 0;
public static final String KEY_DESCRIPTION = "description";
public static final String DESCRIPTION_OPTIONS = "TEXT NOT NULL";
public static final int DESCRIPTION_COLUMN = 1;
public static final String KEY_COMPLETED = "completed";
public static final String COMPLETED_OPTIONS = "INTEGER DEFAULT 0";
public static final int COMPLETED_COLUMN = 2;
private static final String DB_CREATE_TABLE =
"CREATE TABLE " + DB_TABLE + "( " +
KEY_ID + " " + ID_OPTIONS + ", " +
KEY_DESCRIPTION + " " + DESCRIPTION_OPTIONS + ", " +
KEY_COMPLETED + " " + COMPLETED_OPTIONS +
");";
private static final String DROP_TABLE =
"DROP TABLE IF EXISTS " + DB_TABLE;
private SQLiteDatabase db;
private Context context;
private DbHelper dbHelper;
public UserHelper(Context context){
this.context = context;
}
public UserHelper open(){
dbHelper = new DbHelper(context, DB_NAME, null, DB_VERSION);
try {
db = dbHelper.getWritableDatabase();
} catch (SQLException e) {
db = dbHelper.getReadableDatabase();
}
return this;
}
public void close() {
dbHelper.close();
}
private static class DbHelper extends SQLiteOpenHelper {
private static final String TAG = "db";
private Context context;
public DbHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_CREATE_TABLE);
Log.d(TAG, "Database creating...");
Log.d(TAG, "Table " + DB_TABLE + " ver." + DB_VERSION + " created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//TODO rewrite on change version
db.execSQL(DROP_TABLE);
Log.d(TAG, "Database updating...");
Log.d(TAG, "Table " + DB_TABLE + " updated from ver." + oldVersion + " to ver." + newVersion);
Log.d(TAG, "All data is lost.");
onCreate(db);
}
}
}