diff --git a/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java b/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java
index ed52133e3..c641bce18 100644
--- a/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java
+++ b/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java
@@ -148,7 +148,7 @@ public void setUp() throws Exception {
*/
@Test
public void testOfxExport(){
- SharedPreferences.Editor prefsEditor = PreferenceActivity.getActiveBookSharedPreferences(mAcccountsActivity)
+ SharedPreferences.Editor prefsEditor = PreferenceActivity.getActiveBookSharedPreferences()
.edit();
prefsEditor.putBoolean(mAcccountsActivity.getString(R.string.key_use_double_entry), false)
.commit();
@@ -159,7 +159,7 @@ public void testOfxExport(){
@Test
public void whenInSingleEntry_shouldHideXmlExportOption(){
- SharedPreferences.Editor prefsEditor = PreferenceActivity.getActiveBookSharedPreferences(mAcccountsActivity)
+ SharedPreferences.Editor prefsEditor = PreferenceActivity.getActiveBookSharedPreferences()
.edit();
prefsEditor.putBoolean(mAcccountsActivity.getString(R.string.key_use_double_entry), false)
.commit();
@@ -232,7 +232,7 @@ public void testDeleteTransactionsAfterExport(){
editor.putBoolean(mAcccountsActivity.getString(R.string.key_delete_transactions_after_export), true);
editor.commit();
- PreferenceActivity.getActiveBookSharedPreferences(getActivity())
+ PreferenceActivity.getActiveBookSharedPreferences()
.edit()
.putBoolean(mAcccountsActivity.getString(R.string.key_use_double_entry), true)
.apply();
diff --git a/app/src/androidTest/java/org/gnucash/android/test/ui/PieChartReportTest.java b/app/src/androidTest/java/org/gnucash/android/test/ui/PieChartReportTest.java
index 1f1710749..b0b1a15c4 100644
--- a/app/src/androidTest/java/org/gnucash/android/test/ui/PieChartReportTest.java
+++ b/app/src/androidTest/java/org/gnucash/android/test/ui/PieChartReportTest.java
@@ -17,9 +17,6 @@
package org.gnucash.android.test.ui;
import android.content.Context;
-import android.content.Intent;
-import android.database.SQLException;
-import android.database.sqlite.SQLiteDatabase;
import android.support.test.espresso.ViewAction;
import android.support.test.espresso.action.CoordinatesProvider;
import android.support.test.espresso.action.GeneralClickAction;
@@ -27,17 +24,14 @@
import android.support.test.espresso.action.Tap;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
-import android.util.Log;
import android.view.View;
import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
-import org.gnucash.android.db.DatabaseHelper;
import org.gnucash.android.db.adapter.AccountsDbAdapter;
import org.gnucash.android.db.adapter.BooksDbAdapter;
import org.gnucash.android.db.adapter.CommoditiesDbAdapter;
import org.gnucash.android.db.adapter.DatabaseAdapter;
-import org.gnucash.android.db.adapter.SplitsDbAdapter;
import org.gnucash.android.db.adapter.TransactionsDbAdapter;
import org.gnucash.android.importer.GncXmlImporter;
import org.gnucash.android.model.AccountType;
@@ -47,7 +41,6 @@
import org.gnucash.android.model.Transaction;
import org.gnucash.android.model.TransactionType;
import org.gnucash.android.test.ui.util.DisableAnimationsRule;
-import org.gnucash.android.ui.account.AccountsActivity;
import org.gnucash.android.ui.report.BaseReportFragment;
import org.gnucash.android.ui.report.ReportsActivity;
import org.gnucash.android.ui.report.piechart.PieChartFragment;
@@ -131,7 +124,7 @@ public static void prepareTestCase() throws Exception {
CURRENCY = CommoditiesDbAdapter.getInstance().getCommodity("USD");
- PreferenceActivity.getActiveBookSharedPreferences(context).edit()
+ PreferenceActivity.getActiveBookSharedPreferences().edit()
.putString(context.getString(R.string.key_default_currency), CURRENCY.getCurrencyCode())
.commit();
}
diff --git a/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java b/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java
index 36d5fd7bf..bf5373a56 100644
--- a/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java
+++ b/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java
@@ -22,7 +22,6 @@
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.support.test.espresso.Espresso;
-import android.support.test.espresso.contrib.RecyclerViewActions;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
@@ -61,7 +60,6 @@
import java.util.List;
import java.util.Locale;
-import static android.support.test.espresso.Espresso.onData;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.clearText;
import static android.support.test.espresso.action.ViewActions.click;
@@ -69,7 +67,6 @@
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.RootMatchers.withDecorView;
import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant;
-import static android.support.test.espresso.matcher.ViewMatchers.hasSibling;
import static android.support.test.espresso.matcher.ViewMatchers.isChecked;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
@@ -77,7 +74,6 @@
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.allOf;
-import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
@@ -451,7 +447,7 @@ public void testSplitEditor(){
private void setDoubleEntryEnabled(boolean enabled){
- SharedPreferences prefs = PreferenceActivity.getActiveBookSharedPreferences(mTransactionsActivity);
+ SharedPreferences prefs = PreferenceActivity.getActiveBookSharedPreferences();
Editor editor = prefs.edit();
editor.putBoolean(mTransactionsActivity.getString(R.string.key_use_double_entry), enabled);
editor.apply();
@@ -466,7 +462,7 @@ public void testDefaultTransactionType(){
}
private void setDefaultTransactionType(TransactionType type) {
- SharedPreferences prefs = PreferenceActivity.getActiveBookSharedPreferences(mTransactionsActivity);
+ SharedPreferences prefs = PreferenceActivity.getActiveBookSharedPreferences();
Editor editor = prefs.edit();
editor.putString(mTransactionsActivity.getString(R.string.key_default_transaction_type), type.name());
editor.commit();
diff --git a/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java b/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java
index 325ceb047..859e87b0b 100644
--- a/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java
+++ b/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java
@@ -252,7 +252,7 @@ public static boolean isRoboUnitTest(){
* @return true
if double entry is enabled, false
otherwise
*/
public static boolean isDoubleEntryEnabled(){
- SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences(context);
+ SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences();
return sharedPrefs.getBoolean(context.getString(R.string.key_use_double_entry), true);
}
@@ -263,7 +263,7 @@ public static boolean isDoubleEntryEnabled(){
* @return true
if opening balances should be saved, false
otherwise
*/
public static boolean shouldSaveOpeningBalances(boolean defaultValue){
- SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences(context);
+ SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences();
return sharedPrefs.getBoolean(context.getString(R.string.key_save_opening_balances), defaultValue);
}
diff --git a/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java b/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java
index 799f4ea3e..e8e6460e9 100644
--- a/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java
+++ b/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java
@@ -17,6 +17,7 @@
package org.gnucash.android.db.adapter;
import android.content.ContentValues;
+import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
@@ -26,6 +27,7 @@
import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.db.DatabaseSchema.BookEntry;
import org.gnucash.android.model.Book;
+import org.gnucash.android.ui.settings.PreferenceActivity;
import org.gnucash.android.util.TimestampHelper;
/**
@@ -92,6 +94,24 @@ public Book buildModelInstance(@NonNull Cursor cursor) {
return stmt;
}
+
+ /**
+ * Deletes a book - removes the book record from the database and deletes the database file from the disk
+ * @param bookUID GUID of the book
+ * @return true
if deletion was successful, false
otherwise
+ * @see #deleteRecord(String)
+ */
+ public boolean deleteBook(@NonNull String bookUID){
+ Context context = GnuCashApplication.getAppContext();
+ boolean result = context.deleteDatabase(bookUID);
+ if (result) //delete the db entry only if the file deletion was successful
+ result &= deleteRecord(bookUID);
+
+ PreferenceActivity.getBookSharedPreferences(bookUID).edit().clear().apply();
+
+ return result;
+ }
+
/**
* Sets the book with unique identifier {@code uid} as active and all others as inactive
*
If the parameter is null, then the currently active book is not changed
diff --git a/app/src/main/java/org/gnucash/android/db/adapter/DatabaseAdapter.java b/app/src/main/java/org/gnucash/android/db/adapter/DatabaseAdapter.java index f12c2e4d7..d6de72871 100644 --- a/app/src/main/java/org/gnucash/android/db/adapter/DatabaseAdapter.java +++ b/app/src/main/java/org/gnucash/android/db/adapter/DatabaseAdapter.java @@ -17,6 +17,8 @@ package org.gnucash.android.db.adapter; import android.content.ContentValues; +import android.content.Context; +import android.content.SharedPreferences; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteStatement; @@ -32,6 +34,7 @@ import org.gnucash.android.db.DatabaseSchema.TransactionEntry; import org.gnucash.android.model.AccountType; import org.gnucash.android.model.BaseModel; +import org.gnucash.android.ui.settings.PreferenceActivity; import org.gnucash.android.util.TimestampHelper; import java.util.ArrayList; @@ -712,19 +715,6 @@ public boolean deleteRecord(@NonNull String uid){ return deleteRecord(getID(uid)); } - /** - * Deletes a book - removes the book record from the database and deletes the database file from the disk - * @param bookUID GUID of the book - * @returntrue
if deletion was successful, false
otherwise
- * @see #deleteRecord(String)
- */
- public boolean deleteBook(@NonNull String bookUID){
- boolean result = GnuCashApplication.getAppContext().deleteDatabase(bookUID);
- if (result) //delete the db entry only if the file deletion was successful
- result &= deleteRecord(bookUID);
- return result;
- }
-
/**
* Returns an attribute from a specific column in the database for a specific record.
* The attribute is returned as a string which can then be converted to another type if diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java b/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java index d407db82c..066e68d10 100644 --- a/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java @@ -238,7 +238,7 @@ public void onCreate(Bundle savedInstanceState) { setHasOptionsMenu(true); mAccountsDbAdapter = AccountsDbAdapter.getInstance(); - SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences(getActivity()); + SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences(); mUseDoubleEntry = sharedPrefs.getBoolean(getString(R.string.key_use_double_entry), true); } diff --git a/app/src/main/java/org/gnucash/android/ui/settings/PreferenceActivity.java b/app/src/main/java/org/gnucash/android/ui/settings/PreferenceActivity.java index a5016ece7..f5c87a9c9 100644 --- a/app/src/main/java/org/gnucash/android/ui/settings/PreferenceActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/settings/PreferenceActivity.java @@ -34,7 +34,9 @@ import android.view.View; import org.gnucash.android.R; +import org.gnucash.android.app.GnuCashApplication; import org.gnucash.android.db.adapter.BooksDbAdapter; +import org.gnucash.android.model.Book; import org.gnucash.android.ui.passcode.PasscodeLockActivity; import butterknife.Bind; @@ -147,12 +149,20 @@ public boolean onOptionsItemSelected(MenuItem item) { /** * Returns the shared preferences file for the currently active book. * Should be used instead of {@link PreferenceManager#getDefaultSharedPreferences(Context)} - * @param context Application context * @return Shared preferences file */ - public static SharedPreferences getActiveBookSharedPreferences(Context context){ - //// TODO: 21.12.2015 optimize the getActiveBookUID retrieval by caching it somewhere - return context.getSharedPreferences(BooksDbAdapter.getInstance().getActiveBookUID(), Context.MODE_PRIVATE); + public static SharedPreferences getActiveBookSharedPreferences(){ + return getBookSharedPreferences(BooksDbAdapter.getInstance().getActiveBookUID()); + } + + /** + * Return the {@link SharedPreferences} for a specific book + * @param bookUID GUID of the book + * @return Shared preferences + */ + public static SharedPreferences getBookSharedPreferences(String bookUID){ + Context context = GnuCashApplication.getAppContext(); + return context.getSharedPreferences(bookUID, Context.MODE_PRIVATE); } @Override diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java index aa4a77b21..67e34d4bb 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java @@ -293,7 +293,7 @@ public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); - SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences(getActivity()); + SharedPreferences sharedPrefs = PreferenceActivity.getActiveBookSharedPreferences(); mUseDoubleEntry = sharedPrefs.getBoolean(getString(R.string.key_use_double_entry), false); if (!mUseDoubleEntry){ mDoubleEntryLayout.setVisibility(View.GONE); @@ -538,7 +538,7 @@ private void initalizeViews() { mTime = mDate = Calendar.getInstance(); mTransactionTypeSwitch.setAccountType(mAccountType); - String typePref = PreferenceActivity.getActiveBookSharedPreferences(getActivity()).getString(getString(R.string.key_default_transaction_type), "DEBIT"); + String typePref = PreferenceActivity.getActiveBookSharedPreferences().getString(getString(R.string.key_default_transaction_type), "DEBIT"); mTransactionTypeSwitch.setChecked(TransactionType.valueOf(typePref)); String code = GnuCashApplication.getDefaultCurrencyCode(); diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java index bf1bcc5ba..8d27d592d 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java @@ -95,7 +95,7 @@ public void onCreate(Bundle savedInstanceState) { Bundle args = getArguments(); mAccountUID = args.getString(UxArgument.SELECTED_ACCOUNT_UID); - mUseCompactView = PreferenceActivity.getActiveBookSharedPreferences(getActivity()) + mUseCompactView = PreferenceActivity.getActiveBookSharedPreferences() .getBoolean(getActivity().getString(R.string.key_use_compact_list), !GnuCashApplication.isDoubleEntryEnabled()); //if there was a local override of the global setting, respect it if (savedInstanceState != null) diff --git a/app/src/main/java/org/gnucash/android/util/PreferencesHelper.java b/app/src/main/java/org/gnucash/android/util/PreferencesHelper.java index 2b67ac6c8..d58f2e7dc 100644 --- a/app/src/main/java/org/gnucash/android/util/PreferencesHelper.java +++ b/app/src/main/java/org/gnucash/android/util/PreferencesHelper.java @@ -78,7 +78,7 @@ public static void setLastExportTime(Timestamp lastExportTime, String bookUID) { * @return A {@link Timestamp} with the time. */ public static Timestamp getLastExportTime() { - final String utcString = PreferenceActivity.getActiveBookSharedPreferences(GnuCashApplication.getAppContext()) + final String utcString = PreferenceActivity.getActiveBookSharedPreferences() .getString(PREFERENCE_LAST_EXPORT_TIME_KEY, TimestampHelper.getUtcStringFromTimestamp(TimestampHelper.getTimestampFromEpochZero())); Log.d(LOG_TAG, "Retrieving '" + utcString + "' as lastExportTime from Android Preferences.");