diff --git a/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java b/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java index 991029b88..eb689affe 100644 --- a/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java +++ b/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java @@ -39,7 +39,7 @@ public class DatabaseSchema { * Version number of database containing accounts and transactions info. * With any change to the database schema, this number must increase */ - public static final int DATABASE_VERSION = 16; + public static final int DATABASE_VERSION = 17; /** * Name of the database diff --git a/app/src/main/java/org/gnucash/android/db/MigrationHelper.java b/app/src/main/java/org/gnucash/android/db/MigrationHelper.java index dbad1acb9..f56b72eb8 100644 --- a/app/src/main/java/org/gnucash/android/db/MigrationHelper.java +++ b/app/src/main/java/org/gnucash/android/db/MigrationHelper.java @@ -1653,4 +1653,26 @@ static int upgradeDbToVersion16(SQLiteDatabase db) { return dbVersion; } + + /** + * Upgrades the database to version 17. + * This migration updates the foreign keys to the commodities in the splits table + * after a previous migration which overwrote the db table for commodities, rendering + * all foreign keys to commodity GUIDs invalid. + * + * @param db SQLite database to be upgraded + * @return New database version, 16 if migration succeeds, 15 otherwise + */ + static int upgradeDbToVersion17(SQLiteDatabase db) { + Log.i(LOG_TAG, "Upgrading database to version 17"); + int dbVersion = 16; + + db.beginTransaction(); + db.execSQL("UPDATE accounts SET commodity_uid = (SELECT uid FROM commodities WHERE mnemonic = accounts.currency_code)"); + db.execSQL("UPDATE transactions SET commodity_uid = (SELECT uid FROM commodities WHERE commodities.mnemonic = transactions.currency_code)"); + + db.endTransaction(); + + return dbVersion + 1; + } } diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java b/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java index 2a59bd68f..5e8a94026 100644 --- a/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java @@ -37,6 +37,7 @@ import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; +import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.preference.PreferenceManager; import android.util.Log; @@ -227,7 +228,6 @@ public void onCreate(Bundle savedInstanceState) { init(); - getSupportActionBar().setSubtitle(BooksDbAdapter.getInstance().getActiveBookDisplayName()); TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText(R.string.title_recent_accounts)); tabLayout.addTab(tabLayout.newTab().setText(R.string.title_all_accounts)); @@ -269,6 +269,15 @@ public void onClick(View v) { }); } + @Override + protected void onResume() { + super.onResume(); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setSubtitle(BooksDbAdapter.getInstance().getActiveBookDisplayName()); + } + } + @Override protected void onStart() { super.onStart();