package me.evis.mobile.noodle.db; import java.io.IOException; import java.io.InputStream; import me.evis.mobile.noodle.R; import org.apache.commons.io.IOUtils; import android.content.Context; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DatabaseHelper extends SQLiteOpenHelper { private static final String TAG = DatabaseHelper.class.getSimpleName(); private static final String DB_NAME = "noodlesmaster.db"; private static final int DB_VERSION = 1; private Context context; public DatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); this.context = context; } @Override public void onCreate(SQLiteDatabase db) { InputStream is = null; try { is = context.getResources().openRawResource(R.raw.database_init); String initSql = IOUtils.toString(is); // Split the SQL into separate statements as execSQL only accepts 1 single statement, // according to http://stackoverflow.com/questions/3805938/executing-multiple-statements-with-sqlitedatabase-execsql String[] sqlStatements = initSql.split(";"); for (String sqlStatement : sqlStatements) { db.execSQL(sqlStatement); } } catch (IOException e) { Log.e(TAG, "Error loading init SQL from raw", e); } catch (SQLException e) { Log.e(TAG, "Error executing init SQL", e); } finally { IOUtils.closeQuietly(is); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Do nothing. } }