]> git.ktnx.net Git - mobile-ledger.git/commitdiff
new profile field: preferred accounts filter
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Thu, 28 Mar 2019 22:18:03 +0000 (00:18 +0200)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Thu, 28 Mar 2019 22:18:28 +0000 (00:18 +0200)
to be used in the transaction description auto-completion, preferring
transactions that contain an account matching the filter

the idea is useful for ledgers manipulated by multiple people with
personal accounts who enter transactions with the same description

one would expect the auto-completion to pick a transaction that uses
accounts of the user rather than transaction using other users'
accounts

app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java
app/src/main/java/net/ktnx/mobileledger/utils/MLDB.java
app/src/main/res/raw/create_db.sql
app/src/main/res/raw/sql_22.sql [new file with mode: 0644]

index 6ebba5762da199c65223f3c4702b73c970c319cf..3db7850f986be606fb60bdd33cd269355df6ebf7 100644 (file)
@@ -38,6 +38,7 @@ public final class MobileLedgerProfile {
     private String uuid;
     private String name;
     private boolean permitPosting;
+    private String preferredAccountsFilter;
     private String url;
     private boolean authEnabled;
     private String authUserName;
@@ -57,7 +58,8 @@ public final class MobileLedgerProfile {
         List<MobileLedgerProfile> list = new ArrayList<>();
         SQLiteDatabase db = MLDB.getDatabase();
         try (Cursor cursor = db.rawQuery("SELECT uuid, name, url, use_authentication, auth_user, " +
-                                         "auth_password, permit_posting, theme, order_no FROM " +
+                                         "auth_password, permit_posting, theme, order_no, " +
+                                         "preferred_accounts_filter FROM " +
                                          "profiles order by order_no", null))
         {
             while (cursor.moveToNext()) {
@@ -70,6 +72,7 @@ public final class MobileLedgerProfile {
                 item.setPostingPermitted(cursor.getInt(6) == 1);
                 item.setThemeId(cursor.getInt(7));
                 item.orderNo = cursor.getInt(8);
+                item.setPreferredAccountsFilter(cursor.getString(9));
                 list.add(item);
                 if (item.getUuid().equals(currentProfileUUID)) result = item;
             }
@@ -97,6 +100,15 @@ public final class MobileLedgerProfile {
             db.endTransaction();
         }
     }
+    public String getPreferredAccountsFilter() {
+        return preferredAccountsFilter;
+    }
+    public void setPreferredAccountsFilter(String preferredAccountsFilter) {
+        this.preferredAccountsFilter = preferredAccountsFilter;
+    }
+    public void setPreferredAccountsFilter(CharSequence preferredAccountsFilter) {
+        setPreferredAccountsFilter(String.valueOf(preferredAccountsFilter));
+    }
     public boolean isPostingPermitted() {
         return permitPosting;
     }
@@ -158,10 +170,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) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)",
+                       "auth_password, theme, order_no, preferred_accounts_filter) " +
+                       "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
                     new Object[]{uuid, name, permitPosting, url, authEnabled,
                                  authEnabled ? authUserName : null,
-                                 authEnabled ? authPassword : null, themeId, orderNo
+                                 authEnabled ? authPassword : null, themeId, orderNo,
+                                 preferredAccountsFilter
                     });
             db.setTransactionSuccessful();
         }
index 4568846fcb73480152feab5ba31e2e619c2bb430..5075b9aee1730e3ec0ac5bd077fde94f3343d3d9 100644 (file)
@@ -212,7 +212,7 @@ public final class MLDB {
 
 class MobileLedgerDatabase extends SQLiteOpenHelper implements AutoCloseable {
     private static final String DB_NAME = "MoLe.db";
-    private static final int LATEST_REVISION = 21;
+    private static final int LATEST_REVISION = 22;
     private static final String CREATE_DB_SQL = "create_db";
 
     private final Application mContext;
index fd2e43e143da5ea97b444b85e19e032d21496bf6..d077ded25e558de9357df14c58169bc76bf6503d 100644 (file)
@@ -5,7 +5,7 @@ create unique index un_options on options(profile,name);
 create table account_values(profile varchar not null, account varchar not null, currency varchar not null default '', keep boolean, value decimal not null );
 create unique index un_account_values on account_values(profile,account,currency);
 create table description_history(description varchar not null primary key, keep boolean, description_upper varchar);
-create table profiles(uuid varchar not null primary key, name not null, url not null, use_authentication boolean not null, auth_user varchar, auth_password varchar, order_no integer, permit_posting boolean default 0, theme integer default -1);
+create table profiles(uuid varchar not null primary key, name not null, url not null, use_authentication boolean not null, auth_user varchar, auth_password varchar, order_no integer, permit_posting boolean default 0, theme integer default -1, preferred_accounts_filter varchar);
 create table transactions(profile varchar not null, id integer not null, data_hash varchar not null, date varchar not null, description varchar not null, keep boolean not null default 0);
 create unique index un_transactions_id on transactions(profile,id);
 create unique index un_transactions_data_hash on transactions(profile,data_hash);
diff --git a/app/src/main/res/raw/sql_22.sql b/app/src/main/res/raw/sql_22.sql
new file mode 100644 (file)
index 0000000..552397c
--- /dev/null
@@ -0,0 +1 @@
+alter table profiles add preferred_accounts_filter varchar;
\ No newline at end of file