/* * Copyright (C) 2020, University of the Basque Country (UPV/EHU) * Contact for licensing options: * * The original file was part of Open Source IMSDROID * Copyright (C) 2010-2011, Mamadou Diop. * Copyright (C) 2011, Doubango Telecom. * * * Contact: Mamadou Diop * * This file is part of Open Source Doubango Framework. * * This is free software: you can redistribute it and/or modify it under the terms of * the GNU General Public License as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.doubango.ngn.utils; import android.content.Context; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import org.doubango.utils.Utils; public class NgnDataBaseHelper { protected static final String TAG = Utils.getTAG(NgnDataBaseHelper.class.getCanonicalName()); private final Context mContext; private final String mDataBaseName; private final int mDataBaseVersion; private final NgnDataBaseOpenHelper mDataBaseOpenHelper; private SQLiteDatabase mSQLiteDatabase; public NgnDataBaseHelper(Context context, String dataBaseName, int dataBaseVersion, String[][] createTableSt){ mContext = context; mDataBaseName = dataBaseName; mDataBaseVersion = dataBaseVersion; mDataBaseOpenHelper = new NgnDataBaseOpenHelper(mContext, mDataBaseName, mDataBaseVersion, createTableSt); mSQLiteDatabase = mDataBaseOpenHelper.getWritableDatabase(); } @Override protected void finalize() throws Throwable { close(); super.finalize(); } public boolean close(){ try{ if(mSQLiteDatabase != null){ mSQLiteDatabase.close(); mSQLiteDatabase = null; } return true; } catch(Exception e){ e.printStackTrace(); return false; } } public boolean isFreshDataBase(){ return mDataBaseOpenHelper.isFreshDataBase(); } public SQLiteDatabase getSQLiteDatabase(){ return mSQLiteDatabase; } public boolean deleteAll(String table, String whereClause, String[] whereArgs){ try{ mSQLiteDatabase.delete(table, whereClause, whereArgs); return true; } catch(Exception e){ e.printStackTrace(); return false; } } public boolean deleteAll(String table){ return deleteAll(table, null, null); } static class NgnDataBaseOpenHelper extends SQLiteOpenHelper { boolean mFreshDataBase; private final String[][] mCreateTableSt; NgnDataBaseOpenHelper(Context context, String dataBaseName, int dataBaseVersion, String[][] createTableSt) { super(context, dataBaseName, null, dataBaseVersion); mCreateTableSt = createTableSt; } private boolean isFreshDataBase(){ return mFreshDataBase; } private boolean createDataBase(SQLiteDatabase db){ mFreshDataBase = true; if(mCreateTableSt != null){ for(String st[] : mCreateTableSt){ try{ db.execSQL(String.format("CREATE TABLE %s(%s)", st[0], st[1])); } catch(SQLException e){ e.printStackTrace(); return false; } } } return true; } @Override public void onCreate(SQLiteDatabase db) { Log.d(TAG, "NgnDataBaseOpenHelper.onCreate()"); createDataBase(db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.d(TAG, "NgnDataBaseOpenHelper.onUpgrade("+oldVersion+","+newVersion+")"); if(mCreateTableSt != null){ for(String st[] : mCreateTableSt){ try{ db.execSQL(String.format("DROP TABLE IF EXISTS %s", st[0])); } catch(SQLException e){ e.printStackTrace(); } } } createDataBase(db); } } }