package com.ushahidi.android.app.database;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class OpenGeoSmsDao implements IOpenGeoSmsDao, IOpenGeoSmsSchema{
private SQLiteDatabase mDb;
public OpenGeoSmsDao(SQLiteDatabase db){
mDb = db;
}
private static String[] array(String...strs){
return strs;
}
private static String[] array(long i){
return new String[]{ String.valueOf(i) };
}
@Override
public int getReportState(long reportId) {
Cursor c = mDb.query(
TABLE,
array(STATE),
WHERE,
array(reportId),
null,
null,
null
);
if ( c.getCount() < 1 ){
//free resources
c.close();
return STATE_NOT_OPENGEOSMS;
}
c.moveToFirst();
final int reportState = c.getInt(0);
//free resources
c.close();
return reportState;
}
private static final String WHERE=REPORT_ID+"=?";
@Override
public boolean addReport(long reportId) {
ContentValues cv = new ContentValues();
cv.put(REPORT_ID, reportId);
cv.put(STATE, STATE_PENDING);
return mDb.insert(TABLE, null, cv) != -1;
}
@Override
public boolean setReportState(long reportId, int state) {
switch(state){
case STATE_PENDING:
case STATE_SENT:
ContentValues cv = new ContentValues();
cv.put(STATE, state);
return mDb.update(TABLE, cv, WHERE, array(reportId)) > 0;
default:
return false;
}
}
@Override
public boolean deleteReport(long reportId) {
return mDb.delete(TABLE, WHERE, array(reportId)) > 0;
}
@Override
public boolean deleteReports() {
mDb.delete(TABLE, null, null);
return true;
}
}