From 0efe3523b35ab60551b80174d86e002524b2b106 Mon Sep 17 00:00:00 2001 From: xynngh Date: Wed, 6 May 2020 18:36:07 +0400 Subject: [PATCH] Add DB info to debug screen --- .../yetanothercallblocker/DebugActivity.java | 82 +++++++++++++------ .../yetanothercallblocker/Settings.java | 28 ++++++- .../sia/model/database/AbstractDatabase.java | 5 ++ .../sia/model/database/CommunityDatabase.java | 6 +- .../work/TaskService.java | 9 +- .../work/UpdateWorker.java | 20 +++-- app/src/main/res/layout/activity_debug.xml | 8 +- app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values/strings.xml | 2 +- 9 files changed, 120 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/dummydomain/yetanothercallblocker/DebugActivity.java b/app/src/main/java/dummydomain/yetanothercallblocker/DebugActivity.java index 0aca0c5..e17fa3a 100644 --- a/app/src/main/java/dummydomain/yetanothercallblocker/DebugActivity.java +++ b/app/src/main/java/dummydomain/yetanothercallblocker/DebugActivity.java @@ -7,15 +7,20 @@ import android.widget.EditText; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.util.Pair; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.util.Date; + import dummydomain.yetanothercallblocker.event.SecondaryDbUpdateFinished; import dummydomain.yetanothercallblocker.sia.DatabaseSingleton; import dummydomain.yetanothercallblocker.sia.model.NumberCategory; +import dummydomain.yetanothercallblocker.sia.model.database.CommunityDatabase; import dummydomain.yetanothercallblocker.sia.model.database.CommunityDatabaseItem; +import dummydomain.yetanothercallblocker.sia.model.database.FeaturedDatabase; import dummydomain.yetanothercallblocker.sia.model.database.FeaturedDatabaseItem; import dummydomain.yetanothercallblocker.work.TaskService; @@ -26,6 +31,8 @@ public class DebugActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_debug); hideSummary(); + + onDbInfoButtonClick(null); } @Override @@ -52,17 +59,23 @@ public class DebugActivity extends AppCompatActivity { setResult(""); hideSummary(); - new AsyncTask() { + new AsyncTask>() { @Override - protected CommunityDatabaseItem doInBackground(Void... voids) { + protected Pair doInBackground(Void... voids) { CommunityDatabaseItem item = DatabaseSingleton.getCommunityDatabase() .getDbItemByNumber(getNumber()); - return item; + FeaturedDatabaseItem featuredItem = DatabaseSingleton.getFeaturedDatabase() + .getDbItemByNumber(getNumber()); + + return new Pair(item, featuredItem); } @Override - protected void onPostExecute(CommunityDatabaseItem item) { + protected void onPostExecute(Pair result) { + CommunityDatabaseItem item = result.first; + FeaturedDatabaseItem featuredItem = result.second; + String string; if (item != null) { string = item.getNumber() + "\n"; @@ -82,36 +95,55 @@ public class DebugActivity extends AppCompatActivity { } else { string = DebugActivity.this.getString(R.string.debug_not_found); } + + if (featuredItem != null) { + string += "\n" + "Featured name: " + featuredItem.getName(); + } + setResult(string); } }.execute(); } - public void onQueryFeaturedDbButtonClick(View view) { - setResult(""); - hideSummary(); - - new AsyncTask() { - @Override - protected FeaturedDatabaseItem doInBackground(Void... voids) { - FeaturedDatabaseItem item = DatabaseSingleton.getFeaturedDatabase() - .getDbItemByNumber(getNumber()); - - return item; - } - - @Override - protected void onPostExecute(FeaturedDatabaseItem item) { - setResult(item != null ? item.toString() - : DebugActivity.this.getString(R.string.debug_not_found)); - } - }.execute(); - } - public void onLoadReviewsButtonClick(View view) { ReviewsActivity.startForNumber(this, getNumber()); } + public void onDbInfoButtonClick(View view) { + setResult(""); + hideSummary(); + + new AsyncTask() { + @Override + protected String doInBackground(Void... voids) { + StringBuilder sb = new StringBuilder(); + + CommunityDatabase communityDatabase = DatabaseSingleton.getCommunityDatabase(); + + sb.append("DB info:\n"); + sb.append("Operational: ").append(communityDatabase.isOperational()).append('\n'); + sb.append("Base version: ").append(communityDatabase.getBaseDbVersion()); + sb.append(" (SIA: ").append(communityDatabase.getSiaAppVersion()).append(")\n"); + sb.append("Effective version: ").append(communityDatabase.getEffectiveDbVersion()).append('\n'); + sb.append("Last update time: ").append(new Date(App.getSettings().getLastUpdateTime())).append('\n'); + sb.append("Last update check time: ").append(new Date(App.getSettings().getLastUpdateCheckTime())).append('\n'); + + FeaturedDatabase featuredDatabase = DatabaseSingleton.getFeaturedDatabase(); + + sb.append("Featured DB info:\n"); + sb.append("Operational: ").append(featuredDatabase.isOperational()).append('\n'); + sb.append("Effective version: ").append(featuredDatabase.getBaseDbVersion()).append('\n'); + + return sb.toString(); + } + + @Override + protected void onPostExecute(String info) { + setResult(info); + } + }.execute(); + } + public void onUpdateDbButtonClick(View view) { setResult(""); hideSummary(); diff --git a/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java b/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java index e24c1ed..0b09737 100644 --- a/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java +++ b/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java @@ -7,6 +7,8 @@ public class Settings { private static final String PREF_INCOMING_CALL_NOTIFICATIONS = "incomingCallNotifications"; private static final String PREF_BLOCK_CALLS = "blockCalls"; + private static final String PREF_LAST_UPDATE_TIME = "lastUpdateTime"; + private static final String PREF_LAST_UPDATE_CHECK_TIME = "lastUpdateCheckTime"; private final SharedPreferences pref; @@ -30,6 +32,22 @@ public class Settings { setBoolean(PREF_BLOCK_CALLS, block); } + public long getLastUpdateTime() { + return getLong(PREF_LAST_UPDATE_TIME, 0); + } + + public void setLastUpdateTime(long timestamp) { + setLong(PREF_LAST_UPDATE_TIME, timestamp); + } + + public long getLastUpdateCheckTime() { + return getLong(PREF_LAST_UPDATE_CHECK_TIME, 0); + } + + public void setLastUpdateCheckTime(long timestamp) { + setLong(PREF_LAST_UPDATE_CHECK_TIME, timestamp); + } + public boolean getBoolean(String key) { return getBoolean(key, false); } @@ -38,8 +56,16 @@ public class Settings { return pref.getBoolean(key, defValue); } - private void setBoolean(String key, boolean value) { + public void setBoolean(String key, boolean value) { pref.edit().putBoolean(key, value).apply(); } + public long getLong(String key, long defValue) { + return pref.getLong(key, defValue); + } + + public void setLong(String key, long value) { + pref.edit().putLong(key, value).apply(); + } + } diff --git a/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/AbstractDatabase.java b/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/AbstractDatabase.java index 220d7ab..927c6f1 100644 --- a/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/AbstractDatabase.java +++ b/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/AbstractDatabase.java @@ -40,6 +40,11 @@ public abstract class AbstractDatabase, V return loaded; } + public int getBaseDbVersion() { + checkLoaded(); + return baseDatabaseVersion; + } + public boolean reload() { return load(); } diff --git a/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/CommunityDatabase.java b/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/CommunityDatabase.java index 9cfccfc..cf6c51f 100644 --- a/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/CommunityDatabase.java +++ b/app/src/main/java/dummydomain/yetanothercallblocker/sia/model/database/CommunityDatabase.java @@ -219,12 +219,12 @@ public class CommunityDatabase extends AbstractDatabase + android:onClick="onLoadReviewsButtonClick" + android:text="@string/debug_load_reviews" />