]> git.ktnx.net Git - mobile-ledger.git/blob - app/src/main/java/net/ktnx/mobileledger/MobileLedgerDB.java
methods for getting/setting options stored in the database
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / MobileLedgerDB.java
1 package net.ktnx.mobileledger;
2
3 import android.database.Cursor;
4 import android.database.sqlite.SQLiteDatabase;
5
6 class MobileLedgerDB {
7     static final String DATABASE_NAME = "accounts";
8     private static String db_filename;
9     static SQLiteDatabase db;
10
11     static String getDb_filename() {
12         return db_filename;
13     }
14
15     static void setDb_filename(String db_filename) {
16         MobileLedgerDB.db_filename = db_filename;
17     }
18
19     static void initDB() {
20         db = SQLiteDatabase.openOrCreateDatabase(db_filename, null);
21
22         db.execSQL("create table if not exists accounts(name varchar);");
23         db.execSQL("create index if not exists idx_accounts_name on accounts(name);");
24         db.execSQL("create table if not exists options(name varchar, value varchar);");
25         db.execSQL("create unique index if not exists idx_options_name on options(name);");
26     }
27
28     static int get_option_value(String name, int default_value) {
29         String s = get_option_value(name, String.valueOf(default_value));
30         try {
31             return Integer.parseInt(s);
32         }
33         catch (Exception e) {
34             return default_value;
35         }
36     }
37
38     static long get_option_value(String name, long default_value) {
39         String s = get_option_value(name, String.valueOf(default_value));
40         try {
41             return Long.parseLong(s);
42         }
43         catch (Exception e) {
44             Log.d("db", "returning default long value of "+name, e);
45             return default_value;
46         }
47     }
48
49     static String get_option_value(String name, String default_value) {
50         Log.d("db", "about fo fetch option "+name);
51         try (Cursor cursor = db.rawQuery("select value from options where name=?", new String[]{name})) {
52             if (cursor.moveToFirst()) {
53                 String result = cursor.getString(0);
54
55                 if (result == null ) result = default_value;
56
57                 Log.d("db", "option "+name+"="+result);
58                 return result;
59             }
60             else return default_value;
61         }
62         catch(Exception e) {
63             Log.d("db", "returning default value for "+name, e);
64             return default_value;
65         }
66     }
67
68     static void set_option_value(String name, String value) {
69         Log.d("db", "setting option "+name+"="+value);
70         db.execSQL("insert or replace into options(name, value) values(?, ?);", new String[]{name, value});
71     }
72
73     static void set_option_value(String name, long value) {
74         set_option_value(name, String.valueOf(value));
75     }
76 }