package nl.sense_os.service.storage;
import nl.sense_os.service.constants.SensorData.DataPoint;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
/**
* Helper class that assist in creating, opening and managing the SQLite3 database for data points.
*/
public class DbHelper extends SQLiteOpenHelper {
/**
* Name of the database on the disk
*/
private static final String DATABASE_NAME = "persistent_storage.sqlite3";
/**
* Version of the database. Increment this when the database structure is changed.
*/
private static final int DATABASE_VERSION = 4;
/**
* Name of the table with the data points.
*/
static final String TABLE = "persisted_values";
private static final String TAG = "DbHelper";
/**
* Constructor. The database is not actually created or opened until one of
* {@link #getWritableDatabase()} or {@link #getReadableDatabase()} is called.
*
* @param context
* to use to open or create the database
*/
public DbHelper(Context context) {
// if the database name is null, it will be created in-memory
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
final StringBuilder sb = new StringBuilder("CREATE TABLE " + TABLE + "(");
sb.append(BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT");
sb.append(", " + DataPoint.SENSOR_NAME + " TEXT"); //sensor name will be the table's name
sb.append(", " + DataPoint.DISPLAY_NAME + " TEXT");
sb.append(", " + DataPoint.SENSOR_DESCRIPTION + " TEXT");
sb.append(", " + DataPoint.VALUE_PATH + " TEXT");
sb.append(", " + DataPoint.DATA_TYPE + " TEXT");
sb.append(", " + DataPoint.TIMESTAMP + " INTEGER");
sb.append(", " + DataPoint.VALUE + " TEXT");
sb.append(", " + DataPoint.DEVICE_UUID + " TEXT");
sb.append(", " + DataPoint.TRANSMIT_STATE + " INTEGER");
sb.append(");");
db.execSQL(sb.toString());
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVers, int newVers) {
Log.w(TAG, "Upgrading '" + DATABASE_NAME + "' database from version " + oldVers
+ " to " + newVers + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
onCreate(db);
}
}