/** * Created by tonymak on 10/9/14. */ package com.madeinhk.model; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.readystatesoftware.sqliteasset.SQLiteAssetHelper; import java.util.ArrayList; import java.util.List; public class DictionaryDatabaseHelper extends SQLiteAssetHelper { public static final String DATABASE_NAME = "dict.db"; private static final int DATABASE_VERSION = 3; private FavouriteMigrationTool mFavouriteMigrationTool; private Context mContext; public DictionaryDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); setForcedUpgrade(); mContext = context; } @Override protected void onPreReplaceDatabase(SQLiteDatabase db) { mFavouriteMigrationTool = new FavouriteMigrationTool(); mFavouriteMigrationTool.exportFav(db); } @Override protected void onPostReplaceDatabase(SQLiteDatabase db) { mFavouriteMigrationTool.importFav(db); } static class FavouriteMigrationTool { private List<Favourite> mFavouriteList = new ArrayList<>(); public void exportFav(SQLiteDatabase db) { Cursor c = db.query(Favourite.TABLE_NAME, null, null, null, null, null, null); try { c.getColumnIndex(Favourite.COLUMNS.WORD); while (c.moveToNext()) { mFavouriteList.add(Favourite.fromCursor(c)); } } finally { c.close(); } } public void importFav(SQLiteDatabase db) { db.beginTransaction(); try { for (Favourite fav : mFavouriteList) { db.insert(Favourite.TABLE_NAME, null, fav.toContentValues()); } db.setTransactionSuccessful(); } finally { db.endTransaction(); } mFavouriteList.clear(); } } }