From e3ddfc3d4f9c6d6a2fc771878925544f56004b6a Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Tue, 17 Dec 2019 21:20:32 +0200 Subject: [PATCH] add profile option for entering dates in the future --- .../model/MobileLedgerProfile.java | 68 +++++++++++++++++-- .../utils/MobileLedgerDatabase.java | 2 +- app/src/main/res/raw/sql_23.sql | 1 + app/src/main/res/values-bg/strings.xml | 8 +++ app/src/main/res/values/strings.xml | 8 +++ 5 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/raw/sql_23.sql diff --git a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java index d7fae411..ba4a99b8 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java @@ -17,10 +17,13 @@ package net.ktnx.mobileledger.model; +import android.content.res.Resources; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.util.SparseArray; import net.ktnx.mobileledger.App; +import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.async.DbOpQueue; import net.ktnx.mobileledger.utils.Globals; import net.ktnx.mobileledger.utils.Logger; @@ -48,6 +51,7 @@ public final class MobileLedgerProfile { private String authPassword; private int themeId; private int orderNo = -1; + private FutureDates futureDates = FutureDates.None; public MobileLedgerProfile() { this.uuid = String.valueOf(UUID.randomUUID()); } @@ -65,6 +69,7 @@ public final class MobileLedgerProfile { authPassword = origin.authPassword; themeId = origin.themeId; orderNo = origin.orderNo; + futureDates = origin.futureDates; } // loads all profiles into Data.profiles // returns the profile with the given UUID @@ -74,7 +79,7 @@ public final class MobileLedgerProfile { SQLiteDatabase db = App.getDatabase(); try (Cursor cursor = db.rawQuery("SELECT uuid, name, url, use_authentication, auth_user, " + "auth_password, permit_posting, theme, order_no, " + - "preferred_accounts_filter FROM " + + "preferred_accounts_filter, future_dates FROM " + "profiles order by order_no", null)) { while (cursor.moveToNext()) { @@ -88,6 +93,7 @@ public final class MobileLedgerProfile { item.setThemeId(cursor.getInt(7)); item.orderNo = cursor.getInt(8); item.setPreferredAccountsFilter(cursor.getString(9)); + item.setFutureDates(cursor.getInt(10)); list.add(item); if (item.getUuid().equals(currentProfileUUID)) result = item; } @@ -112,6 +118,15 @@ public final class MobileLedgerProfile { db.endTransaction(); } } + public FutureDates getFutureDates() { + return futureDates; + } + public void setFutureDates(int anInt) { + futureDates = FutureDates.valueOf(anInt); + } + public void setFutureDates(FutureDates futureDates) { + this.futureDates = futureDates; + } public String getPreferredAccountsFilter() { return preferredAccountsFilter; } @@ -182,12 +197,12 @@ public final class MobileLedgerProfile { // permitPosting ? "TRUE" : "FALSE", authEnabled ? "TRUE" : "FALSE", themeId)); db.execSQL("REPLACE INTO profiles(uuid, name, permit_posting, url, " + "use_authentication, auth_user, " + - "auth_password, theme, order_no, preferred_accounts_filter) " + - "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "auth_password, theme, order_no, preferred_accounts_filter, future_dates) " + + "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[]{uuid, name, permitPosting, url, authEnabled, authEnabled ? authUserName : null, authEnabled ? authPassword : null, themeId, orderNo, - preferredAccountsFilter + preferredAccountsFilter, futureDates.toInt() }); db.setTransactionSuccessful(); } @@ -203,9 +218,8 @@ public final class MobileLedgerProfile { new Object[]{acc.getLevel(), acc.isHiddenByStar(), acc.isExpanded(), uuid, acc.getName() }); - db.execSQL( - "insert into accounts(profile, name, name_upper, parent_name, level, hidden, expanded, keep) " + - "select ?,?,?,?,?,?,?,1 where (select changes() = 0)", + db.execSQL("insert into accounts(profile, name, name_upper, parent_name, level, hidden, " + + "expanded, keep) " + "select ?,?,?,?,?,?,?,1 where (select changes() = 0)", new Object[]{uuid, acc.getName(), acc.getName().toUpperCase(), acc.getParentName(), acc.getLevel(), acc.isHiddenByStar(), acc.isExpanded() }); @@ -455,4 +469,44 @@ public final class MobileLedgerProfile { db.endTransaction(); } } + public enum FutureDates { + None(0), OneMonth(30), TwoMonths(60), ThreeMonths(90), SixMonths(180), OneYear(365), + All(-1); + private static SparseArray map = new SparseArray<>(); + + static { + for (FutureDates item : FutureDates.values()) { + map.put(item.value, item); + } + } + + private int value; + FutureDates(int value) { + this.value = value; + } + public static FutureDates valueOf(int i) { + return map.get(i, None); + } + public int toInt() { + return this.value; + } + public String getText(Resources resources) { + switch (value) { + case 30: + return resources.getString(R.string.future_dates_30); + case 60: + return resources.getString(R.string.future_dates_60); + case 90: + return resources.getString(R.string.future_dates_90); + case 180: + return resources.getString(R.string.future_dates_180); + case 365: + return resources.getString(R.string.future_dates_365); + case -1: + return resources.getString(R.string.future_dates_all); + default: + return resources.getString(R.string.future_dates_none); + } + } + } } diff --git a/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java b/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java index abf11984..df39ea1a 100644 --- a/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java +++ b/app/src/main/java/net/ktnx/mobileledger/utils/MobileLedgerDatabase.java @@ -34,7 +34,7 @@ import static net.ktnx.mobileledger.utils.Logger.debug; public class MobileLedgerDatabase extends SQLiteOpenHelper { private static final String DB_NAME = "MoLe.db"; - private static final int LATEST_REVISION = 22; + private static final int LATEST_REVISION = 23; private static final String CREATE_DB_SQL = "create_db"; private final Application mContext; diff --git a/app/src/main/res/raw/sql_23.sql b/app/src/main/res/raw/sql_23.sql new file mode 100644 index 00000000..ff3b8f71 --- /dev/null +++ b/app/src/main/res/raw/sql_23.sql @@ -0,0 +1 @@ +alter table profiles add future_dates integer; \ No newline at end of file diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 7b5fd600..7402ed52 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -117,5 +117,13 @@ Симулиране на заявките за съхраняване Симул. съхр. СИМУЛАЦИЯ + До шест месеца + До един месец + До една година + До два месеца + До три месеца + Без ограничения + Без въвеждане на бъдещи дати + Въвеждане на дати в бъдещето diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2f8f643c..c18ada94 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -159,4 +159,12 @@ Simulate save requests Simul. save SIMULATION + Allow input of dates in the future + No future dates are allowed + Up to a month + Up to two months + Up to three months + Up to six months + Up to a year + Without restrictions -- 2.39.2