package com.lateensoft.pathfinder.toolkit.db; import android.content.Context; import android.content.ContentValues; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseImpl extends SQLiteOpenHelper implements Database { @SuppressWarnings("unused") private final String TAG = DatabaseImpl.class.getSimpleName(); public static final String DB_NAME = "pathfinder_toolkit.db"; public static final int DB_VERSION = 1; private SQLiteDatabase database; public DatabaseImpl(Context context) { super(context, DB_NAME, null, DB_VERSION); open(); } @Override public void onCreate(SQLiteDatabase db) { TableCreator tableCreator = new TableCreator(); tableCreator.createTables(db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public void open() throws SQLException { if (database == null || !database.isOpen()) { database = getWritableDatabase(); if (!database.isReadOnly()) { // Enable foreign key constraints, as they are disabled by default in sqlite 3.7 database.execSQL("PRAGMA foreign_keys=ON;"); } } } public void close() { database.close(); } @Override public void beginTransaction() { database.beginTransaction(); } @Override public void setTransactionSuccessful() { database.setTransactionSuccessful(); } @Override public void endTransaction() { database.endTransaction(); } @Override public Cursor query(Boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) { return database.query(distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit); } @Override public Cursor query(String table, String[] columns, String selection) { open(); Cursor result = database.query(true, table, columns, selection, null, null, null, null, null); return result; } @Override public Cursor rawQuery(String query, String[] selectionArgs) { open(); return database.rawQuery(query, selectionArgs); } @Override public int update(String table, ContentValues values, String whereClause) { open(); return database.update(table, values, whereClause, null); } @Override public long insert(String table, ContentValues values) { open(); return database.insert(table, null, values); } @Override public int delete(String table, String selector) { open(); return database.delete(table, selector, null); } @Override public void execSQL(String sqlStatement) { open(); database.execSQL(sqlStatement); } }