1
0
forked from GitHub/gf-core

forgot to add the DBManager

This commit is contained in:
krasimir
2015-07-01 09:51:01 +00:00
parent 34ef01f613
commit 7daf119cbc

View File

@@ -0,0 +1,92 @@
package org.grammaticalframework.ui.android;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class DBManager extends SQLiteOpenHelper {
private final Context mContext;
public DBManager(Context context) {
super(context, "defs.db", null, 1);
mContext = context;
}
@Override
public synchronized SQLiteDatabase getReadableDatabase() {
copyDatabaseFromAssets();
return super.getReadableDatabase();
}
@Override
public synchronized SQLiteDatabase getWritableDatabase() {
copyDatabaseFromAssets();
return super.getWritableDatabase();
}
private void copyDatabaseFromAssets() throws SQLiteException {
String path = mContext.getDatabasePath(getDatabaseName()).getPath();
File file = new File(path);
if (file.exists()) {
return;
}
InputStream ins = null;
OutputStream outs = null;
try {
File dir = new File(mContext.getApplicationInfo().dataDir + "/databases");
if (!dir.exists()) {
dir.mkdir();
}
ins = mContext.getAssets().open(getDatabaseName());
outs = new FileOutputStream(path);
byte[] buffer = new byte[1024];
int length;
while ((length = ins.read(buffer)) > 0) {
outs.write(buffer, 0, length);
}
outs.flush();
} catch (IOException e) {
SQLiteException se = new SQLiteException("Unable to write " + path + " to data directory");
se.setStackTrace(e.getStackTrace());
if (outs != null) {
try {
outs.close();
} catch (IOException e2) {
}
outs = null;
}
file.delete();
throw se;
} finally {
try {
if (outs != null)
outs.close();
if (ins != null)
ins.close();
} catch (IOException e) {
}
}
}
@Override
public final void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}