automatic database initialization on startup
This commit is contained in:
parent
756e2cdaec
commit
8a20bde82f
5 changed files with 15 additions and 20 deletions
|
|
@ -15,7 +15,6 @@ import io.github.sspanak.tt9.ConsumerCompat;
|
||||||
import io.github.sspanak.tt9.Logger;
|
import io.github.sspanak.tt9.Logger;
|
||||||
import io.github.sspanak.tt9.db.entities.WordBatch;
|
import io.github.sspanak.tt9.db.entities.WordBatch;
|
||||||
import io.github.sspanak.tt9.db.exceptions.DictionaryImportAbortedException;
|
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.exceptions.DictionaryImportException;
|
||||||
import io.github.sspanak.tt9.db.sqlite.DeleteOps;
|
import io.github.sspanak.tt9.db.sqlite.DeleteOps;
|
||||||
import io.github.sspanak.tt9.db.sqlite.InsertOps;
|
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()) {
|
if (isRunning()) {
|
||||||
throw new DictionaryImportAlreadyRunningException();
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (languages.size() == 0) {
|
if (languages == null || languages.size() == 0) {
|
||||||
Logger.d(LOG_TAG, "Nothing to do");
|
Logger.d(LOG_TAG, "Nothing to do");
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
loadThread = new Thread() {
|
loadThread = new Thread() {
|
||||||
|
|
@ -98,6 +97,7 @@ public class DictionaryLoader {
|
||||||
};
|
};
|
||||||
|
|
||||||
loadThread.start();
|
loadThread.start();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
package io.github.sspanak.tt9.db.exceptions;
|
|
||||||
|
|
||||||
public class DictionaryImportAlreadyRunningException extends Exception{
|
|
||||||
public DictionaryImportAlreadyRunningException() {
|
|
||||||
super("Dictionary import is already running.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -6,12 +6,13 @@ import android.database.sqlite.SQLiteOpenHelper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import io.github.sspanak.tt9.BuildConfig;
|
||||||
import io.github.sspanak.tt9.languages.Language;
|
import io.github.sspanak.tt9.languages.Language;
|
||||||
import io.github.sspanak.tt9.languages.LanguageCollection;
|
import io.github.sspanak.tt9.languages.LanguageCollection;
|
||||||
|
|
||||||
public class SQLiteOpener extends SQLiteOpenHelper {
|
public class SQLiteOpener extends SQLiteOpenHelper {
|
||||||
private static final String DATABASE_NAME = "tt9.db";
|
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 static SQLiteOpener self;
|
||||||
|
|
||||||
private final ArrayList<Language> allLanguages;
|
private final ArrayList<Language> allLanguages;
|
||||||
|
|
@ -50,7 +51,7 @@ public class SQLiteOpener extends SQLiteOpenHelper {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
// No migrations as of now
|
onCreate(db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,10 @@ public class LanguageCollection {
|
||||||
public static ArrayList<Language> getAll(Context context, ArrayList<Integer> languageIds, boolean sort) {
|
public static ArrayList<Language> getAll(Context context, ArrayList<Integer> languageIds, boolean sort) {
|
||||||
ArrayList<Language> langList = new ArrayList<>();
|
ArrayList<Language> langList = new ArrayList<>();
|
||||||
|
|
||||||
|
if (languageIds == null) {
|
||||||
|
return langList;
|
||||||
|
}
|
||||||
|
|
||||||
for (int languageId : languageIds) {
|
for (int languageId : languageIds) {
|
||||||
Language lang = getLanguage(context, languageId);
|
Language lang = getLanguage(context, languageId);
|
||||||
if (lang != null) {
|
if (lang != null) {
|
||||||
|
|
@ -100,7 +104,7 @@ public class LanguageCollection {
|
||||||
|
|
||||||
public static String toString(ArrayList<Language> list) {
|
public static String toString(ArrayList<Language> list) {
|
||||||
StringBuilder stringList = new StringBuilder();
|
StringBuilder stringList = new StringBuilder();
|
||||||
int listSize = list.size();
|
int listSize = list != null ? list.size() : 0;
|
||||||
|
|
||||||
for (int i = 0; i < listSize; i++) {
|
for (int i = 0; i < listSize; i++) {
|
||||||
stringList.append(list.get(i));
|
stringList.append(list.get(i));
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import androidx.preference.Preference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import io.github.sspanak.tt9.R;
|
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.db.DictionaryLoader;
|
||||||
import io.github.sspanak.tt9.languages.Language;
|
import io.github.sspanak.tt9.languages.Language;
|
||||||
import io.github.sspanak.tt9.languages.LanguageCollection;
|
import io.github.sspanak.tt9.languages.LanguageCollection;
|
||||||
|
|
@ -68,10 +67,8 @@ public class ItemLoadDictionary extends ItemClickable {
|
||||||
protected boolean onClick(Preference p) {
|
protected boolean onClick(Preference p) {
|
||||||
ArrayList<Language> languages = LanguageCollection.getAll(context, settings.getEnabledLanguageIds());
|
ArrayList<Language> languages = LanguageCollection.getAll(context, settings.getEnabledLanguageIds());
|
||||||
|
|
||||||
try {
|
setLoadingStatus();
|
||||||
setLoadingStatus();
|
if (!loader.load(languages)) {
|
||||||
loader.load(languages);
|
|
||||||
} catch (DictionaryImportAlreadyRunningException e) {
|
|
||||||
loader.stop();
|
loader.stop();
|
||||||
setReadyStatus();
|
setReadyStatus();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue