hm-lok

Unnamed repository; edit this file 'description' to name the repository.
git clone http://git.code.weiherhei.de/hm-lok.git
Log | Files | Refs

commit 6c774fdf21fcb6036586fa79055aa5b58036434a
parent 5d05ca2554f88f1154bf98b7fb3fc94b4d722371
Author: dankert <devnull@localhost>
Date:   Thu, 22 Sep 2011 22:11:03 +0200

Beim Upgrade die Datenbank kopieren.

Diffstat:
src/de/jandankert/hansemerkur/db/DataBaseHelper.java | 308+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
1 file changed, 174 insertions(+), 134 deletions(-)

diff --git a/src/de/jandankert/hansemerkur/db/DataBaseHelper.java b/src/de/jandankert/hansemerkur/db/DataBaseHelper.java @@ -10,144 +10,184 @@ import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +public class DataBaseHelper extends SQLiteOpenHelper +{ + + private static final int VERSION = 2; + + // The Android's default system path of your application database. + private static String DB_PATH = "/data/data/de.jandankert.hansemerkur/databases/"; + + private static String DB_NAME = "hm.db"; + + private SQLiteDatabase myDataBase; + + private final Context myContext; + + /** + * Constructor Takes and keeps a reference of the passed context in order to + * access to the application assets and resources. + * + * @param context + */ + public DataBaseHelper(Context context) + { + + super(context, DB_NAME, null, VERSION); + this.myContext = context; + } + + /** + * Creates a empty database on the system and rewrites it with your own + * database. + * */ + public void createDataBase() throws IOException + { + + boolean dbExist = checkDataBase(); + // dbExist = false; + + if (dbExist) + { + // do nothing - database already exist + } else + { + + // By calling this method and empty database will be created into + // the default system path + // of your application so we are gonna be able to overwrite that + // database with our database. + this.getReadableDatabase(); + + try + { + + copyDataBase(); + + } catch (IOException e) + { + + throw new Error("Error copying database"); + + } + } + + } + + /** + * Check if the database already exist to avoid re-copying the file each + * time you open the application. + * + * @return true if it exists, false if it doesn't + */ + private boolean checkDataBase() + { + + SQLiteDatabase checkDB = null; + + try + { + String myPath = DB_PATH + DB_NAME; + checkDB = SQLiteDatabase.openDatabase(myPath, null, + SQLiteDatabase.OPEN_READONLY + | SQLiteDatabase.NO_LOCALIZED_COLLATORS); + + } catch (SQLiteException e) + { + + // database does't exist yet. + + } + + if (checkDB != null) + { + + checkDB.close(); + + } + + return checkDB != null; + } + + /** + * Copies your database from your local assets-folder to the just created + * empty database in the system folder, from where it can be accessed and + * handled. This is done by transfering bytestream. + * */ + private void copyDataBase() throws IOException + { + + // Open your local db as the input stream + InputStream myInput = myContext.getAssets().open(DB_NAME); + + // Path to the just created empty db + String outFileName = DB_PATH + DB_NAME; + + // Open the empty db as the output stream + OutputStream myOutput = new FileOutputStream(outFileName); + + // transfer bytes from the inputfile to the outputfile + byte[] buffer = new byte[1024]; + int length; + while ((length = myInput.read(buffer)) > 0) + { + myOutput.write(buffer, 0, length); + } + + // Close the streams + myOutput.flush(); + myOutput.close(); + myInput.close(); + + } + + public void openDataBase() throws SQLException + { + + // Open the database + String myPath = DB_PATH + DB_NAME; + myDataBase = SQLiteDatabase.openDatabase(myPath, null, + SQLiteDatabase.OPEN_READONLY + | SQLiteDatabase.NO_LOCALIZED_COLLATORS); -public class DataBaseHelper extends SQLiteOpenHelper{ - - //The Android's default system path of your application database. - private static String DB_PATH = "/data/data/de.jandankert.hansemerkur/databases/"; - - private static String DB_NAME = "hm.db"; - - private SQLiteDatabase myDataBase; - - private final Context myContext; - - /** - * Constructor - * Takes and keeps a reference of the passed context in order to access to the application assets and resources. - * @param context - */ - public DataBaseHelper(Context context) { - - super(context, DB_NAME, null, 1); - this.myContext = context; - } - - /** - * Creates a empty database on the system and rewrites it with your own database. - * */ - public void createDataBase() throws IOException{ - - boolean dbExist = checkDataBase(); - - if(dbExist){ - //do nothing - database already exist - }else{ - - //By calling this method and empty database will be created into the default system path - //of your application so we are gonna be able to overwrite that database with our database. - this.getReadableDatabase(); - - try { - - copyDataBase(); - - } catch (IOException e) { - - throw new Error("Error copying database"); - - } - } - - } - - /** - * Check if the database already exist to avoid re-copying the file each time you open the application. - * @return true if it exists, false if it doesn't - */ - private boolean checkDataBase(){ - - SQLiteDatabase checkDB = null; - - try{ - String myPath = DB_PATH + DB_NAME; - checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS); - - }catch(SQLiteException e){ - - //database does't exist yet. - - } - - if(checkDB != null){ - - checkDB.close(); - - } - - return checkDB != null ? true : false; - } - - /** - * Copies your database from your local assets-folder to the just created empty database in the - * system folder, from where it can be accessed and handled. - * This is done by transfering bytestream. - * */ - private void copyDataBase() throws IOException{ - - //Open your local db as the input stream - InputStream myInput = myContext.getAssets().open(DB_NAME); - - // Path to the just created empty db - String outFileName = DB_PATH + DB_NAME; - - //Open the empty db as the output stream - OutputStream myOutput = new FileOutputStream(outFileName); - - //transfer bytes from the inputfile to the outputfile - byte[] buffer = new byte[1024]; - int length; - while ((length = myInput.read(buffer))>0){ - myOutput.write(buffer, 0, length); - } - - //Close the streams - myOutput.flush(); - myOutput.close(); - myInput.close(); - - } - - public void openDataBase() throws SQLException{ - - //Open the database - String myPath = DB_PATH + DB_NAME; - myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY|SQLiteDatabase.NO_LOCALIZED_COLLATORS); - - } - - @Override - public synchronized void close() { - - if(myDataBase != null) - myDataBase.close(); - - super.close(); - } - + @Override - public void onCreate(SQLiteDatabase db) { - + public synchronized void close() + { + + if (myDataBase != null) + myDataBase.close(); + + super.close(); + } - + @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - + public void onCreate(SQLiteDatabase db) + { + + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) + { + +// try +// { +// this.copyDataBase(); +// } catch (IOException e) +// { +// Log.w("DB",e); +// } } - - // Add your public helper methods to access and get content from the database. - // You could return cursors by doing "return myDataBase.query(....)" so it'd be easy - // to you to create adapters for your views. - + + // Add your public helper methods to access and get content from the + // database. + // You could return cursors by doing "return myDataBase.query(....)" so it'd + // be easy + // to you to create adapters for your views. + } \ No newline at end of file