package org.ecomap.android.app.data;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import org.ecomap.android.app.data.EcoMapContract.PendingProblemsEntry;
import org.ecomap.android.app.data.EcoMapContract.ProblemsEntry;
import org.ecomap.android.app.data.EcoMapContract.ResourcesEntry;
import org.ecomap.android.app.data.EcoMapContract.RevisionsEntry;
import org.ecomap.android.app.utils.SharedPreferencesHelper;
/**
* Manages a local database for weather data.
*/
public class EcoMapDBHelper extends SQLiteOpenHelper {
// If you change the database schema, you must increment the database version.
private static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "ecomap.db";
private final Context mContext;
public EcoMapDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.mContext = context;
/**
* We have to do this in order to perform onUpgrade/onDowngrade
* before EcoMapService fetch data from http://ecomap.org
* This constructor is called first by EcoMapProvider.onCreate() method.
*/
getReadableDatabase();
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
// Create a table to hold problems.
final String SQL_CREATE_PROBLEMS_TABLE = "CREATE TABLE " + ProblemsEntry.TABLE_NAME + " (" +
ProblemsEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
ProblemsEntry.COLUMN_PROBLEM_ID + " INTEGER," +
ProblemsEntry.COLUMN_STATUS + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_TITLE + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_USER_FIRST_NAME + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_USER_LAST_NAME + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_PROBLEM_TYPE_ID + " INTEGER NOT NULL, " +
ProblemsEntry.COLUMN_SEVERITY + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_NUMBER_OF_VOTES + " INTEGER NOT NULL, " +
ProblemsEntry.COLUMN_DATE + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_CONTENT + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_LATITUDE + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_LONGTITUDE + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_PROPOSAL + " TEXT NOT NULL, " +
ProblemsEntry.COLUMN_REGION_ID + " INTEGER NOT NULL, " +
ProblemsEntry.COLUMN_COMMENTS_NUMBER + " INTEGER NOT NULL, " +
ProblemsEntry.COLUMN_USER_ID + " INTEGER NOT NULL" +
" );";
final String SQL_CREATE_RESOURCES_TABLE = "CREATE TABLE " + ResourcesEntry.TABLE_NAME + " (" +
ResourcesEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
ResourcesEntry.COLUMN_TITLE + " TEXT NOT NULL, " +
ResourcesEntry.COLUMN_CONTENT + " TEXT NOT NULL" +
" );";
final String SQL_CREATE_PENDING_TABLE = "CREATE TABLE " + PendingProblemsEntry.TABLE_NAME + " (" +
PendingProblemsEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
PendingProblemsEntry.COLUMN_PROBLEM_ID + " INTEGER NOT NULL, " +
PendingProblemsEntry.COLUMN_PHOTOS + " TEXT" +
" );";
final String SQL_CREATE_REVISIONS_TABLE = "CREATE TABLE " + RevisionsEntry.TABLE_NAME + " (" +
RevisionsEntry.COLUMN_REVISION + " INTEGER DEFAULT 0" +
" );";
sqLiteDatabase.execSQL(SQL_CREATE_PROBLEMS_TABLE);
sqLiteDatabase.execSQL(SQL_CREATE_RESOURCES_TABLE);
sqLiteDatabase.execSQL(SQL_CREATE_PENDING_TABLE);
sqLiteDatabase.execSQL(SQL_CREATE_REVISIONS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + ProblemsEntry.TABLE_NAME);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + ResourcesEntry.TABLE_NAME);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + PendingProblemsEntry.TABLE_NAME);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + RevisionsEntry.TABLE_NAME);
onCreate(sqLiteDatabase);
SharedPreferencesHelper.updateNumRevision(mContext, 0);
}
@Override
public void onDowngrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + ProblemsEntry.TABLE_NAME);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + ResourcesEntry.TABLE_NAME);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + PendingProblemsEntry.TABLE_NAME);
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + RevisionsEntry.TABLE_NAME);
onCreate(sqLiteDatabase);
SharedPreferencesHelper.updateNumRevision(mContext, 0);
}
}