1
0
Fork 0

automatic database initialization on startup

This commit is contained in:
sspanak 2024-02-11 12:52:11 +02:00 committed by Dimo Karaivanov
parent 756e2cdaec
commit 8a20bde82f
5 changed files with 15 additions and 20 deletions

View file

@ -15,7 +15,6 @@ import io.github.sspanak.tt9.ConsumerCompat;
import io.github.sspanak.tt9.Logger;
import io.github.sspanak.tt9.db.entities.WordBatch;
import io.github.sspanak.tt9.db.exceptions.DictionaryImportAbortedException;
import io.github.sspanak.tt9.db.exceptions.DictionaryImportAlreadyRunningException;
import io.github.sspanak.tt9.db.exceptions.DictionaryImportException;
import io.github.sspanak.tt9.db.sqlite.DeleteOps;
import io.github.sspanak.tt9.db.sqlite.InsertOps;
@ -68,14 +67,14 @@ public class DictionaryLoader {
}
public void load(ArrayList<Language> languages) throws DictionaryImportAlreadyRunningException {
public boolean load(ArrayList<Language> languages) {
if (isRunning()) {
throw new DictionaryImportAlreadyRunningException();
return false;
}
if (languages.size() == 0) {
if (languages == null || languages.size() == 0) {
Logger.d(LOG_TAG, "Nothing to do");
return;
return true;
}
loadThread = new Thread() {
@ -98,6 +97,7 @@ public class DictionaryLoader {
};
loadThread.start();
return true;
}

View file

@ -1,7 +0,0 @@
package io.github.sspanak.tt9.db.exceptions;
public class DictionaryImportAlreadyRunningException extends Exception{
public DictionaryImportAlreadyRunningException() {
super("Dictionary import is already running.");
}
}

View file

@ -6,12 +6,13 @@ import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import io.github.sspanak.tt9.BuildConfig;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.languages.LanguageCollection;
public class SQLiteOpener extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "tt9.db";
private static final int DATABASE_VERSION = 1;
private static final int DATABASE_VERSION = BuildConfig.VERSION_CODE;
private static SQLiteOpener self;
private final ArrayList<Language> allLanguages;
@ -50,7 +51,7 @@ public class SQLiteOpener extends SQLiteOpenHelper {
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// No migrations as of now
onCreate(db);
}

View file

@ -66,6 +66,10 @@ public class LanguageCollection {
public static ArrayList<Language> getAll(Context context, ArrayList<Integer> languageIds, boolean sort) {
ArrayList<Language> langList = new ArrayList<>();
if (languageIds == null) {
return langList;
}
for (int languageId : languageIds) {
Language lang = getLanguage(context, languageId);
if (lang != null) {
@ -100,7 +104,7 @@ public class LanguageCollection {
public static String toString(ArrayList<Language> list) {
StringBuilder stringList = new StringBuilder();
int listSize = list.size();
int listSize = list != null ? list.size() : 0;
for (int i = 0; i < listSize; i++) {
stringList.append(list.get(i));

View file

@ -8,7 +8,6 @@ import androidx.preference.Preference;
import java.util.ArrayList;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.db.exceptions.DictionaryImportAlreadyRunningException;
import io.github.sspanak.tt9.db.DictionaryLoader;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.languages.LanguageCollection;
@ -68,10 +67,8 @@ public class ItemLoadDictionary extends ItemClickable {
protected boolean onClick(Preference p) {
ArrayList<Language> languages = LanguageCollection.getAll(context, settings.getEnabledLanguageIds());
try {
setLoadingStatus();
loader.load(languages);
} catch (DictionaryImportAlreadyRunningException e) {
setLoadingStatus();
if (!loader.load(languages)) {
loader.stop();
setReadyStatus();
}