X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Futils%2FMLDB.java;h=16e46e68a6439d8b6fd6725fa928291375af18db;hb=0ef53a968c083b3c4d054eed72febf3610538dc2;hp=a449e466917262731d1af8be74b536d9b0679ca2;hpb=1c9558f39ac9b1ea8e18a5afeba374e91c95ea2f;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/utils/MLDB.java b/app/src/main/java/net/ktnx/mobileledger/utils/MLDB.java index a449e466..16e46e68 100644 --- a/app/src/main/java/net/ktnx/mobileledger/utils/MLDB.java +++ b/app/src/main/java/net/ktnx/mobileledger/utils/MLDB.java @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2021 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -73,19 +73,21 @@ public final class MLDB { @Override protected String doInBackground(Void... params) { SQLiteDatabase db = App.getDatabase(); - try (Cursor cursor = db - .rawQuery("select value from options where profile = ? and name=?", - new String[]{NO_PROFILE, name})) + try (Cursor cursor = db.rawQuery( + "select value from options where profile=? and name=?", + new String[]{NO_PROFILE, name})) { if (cursor.moveToFirst()) { String result = cursor.getString(0); - if (result == null) result = defaultValue; + if (result == null) + result = defaultValue; debug("async-db", "option " + name + "=" + result); return result; } - else return defaultValue; + else + return defaultValue; } catch (Exception e) { debug("db", "returning default value for " + name, e); @@ -103,18 +105,20 @@ public final class MLDB { static public String getOption(String name, String default_value) { debug("db", "about to fetch option " + name); SQLiteDatabase db = App.getDatabase(); - try (Cursor cursor = db.rawQuery("select value from options where profile = ? and name=?", + try (Cursor cursor = db.rawQuery("select value from options where profile=? and name=?", new String[]{NO_PROFILE, name})) { if (cursor.moveToFirst()) { String result = cursor.getString(0); - if (result == null) result = default_value; + if (result == null) + result = default_value; debug("db", "option " + name + "=" + result); return result; } - else return default_value; + else + return default_value; } catch (Exception e) { debug("db", "returning default value for " + name, e); @@ -151,16 +155,17 @@ public final class MLDB { adapter.setStringConversionColumn(1); FilterQueryProvider provider = constraint -> { - if (constraint == null) return null; + if (constraint == null) + return null; - String str = constraint.toString().toUpperCase(); + String str = constraint.toString() + .toUpperCase(); debug("autocompletion", "Looking for " + str); String sql; String[] params; if (profileSpecific) { - MobileLedgerProfile p = (profile == null) ? Data.profile.getValue() : profile; - if (p == null) throw new AssertionError(); + MobileLedgerProfile p = (profile == null) ? Data.getProfile() : profile; sql = String.format( "SELECT rowid as _id, %s, CASE WHEN %s_upper LIKE ?||'%%' THEN 1 " + "WHEN %s_upper LIKE '%%:'||?||'%%' then 2 " + @@ -189,11 +194,13 @@ public final class MLDB { view.setAdapter(adapter); - if (callback != null) view.setOnItemClickListener((parent, itemView, position, id) -> { - callback.descriptionSelected(String.valueOf(view.getText())); + if (callback != null) + view.setOnItemClickListener( + (parent, itemView, position, id) -> callback.descriptionSelected( + String.valueOf(view.getText()))); } - public static void queryInBackground(@NonNull String statement, @NonNull String[] params, - @NonNull CallbackHelper callbackHelper) { + public static void queryInBackground(@NonNull String statement, String[] params, + @NonNull final CallbackHelper callbackHelper) { /* All callbacks are called in the new (asynchronous) thread! */ Thread t = new Thread(() -> { callbackHelper.onStart(); @@ -226,6 +233,12 @@ public final class MLDB { @SuppressWarnings("WeakerAccess") abstract public static class CallbackHelper { public void onStart() {} + public abstract boolean onRow(@NonNull Cursor cursor); + public void onNoRows() {} + public void onException(Exception exception) { + Logger.debug("MLDB", "Exception in asynchronous SQL", exception); + } + public void onDone() {} } }