/*
- * Copyright © 2019 Damyan Ivanov.
+ * Copyright © 2020 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
import net.ktnx.mobileledger.utils.Logger;
import net.ktnx.mobileledger.utils.MobileLedgerDatabase;
+import org.jetbrains.annotations.NotNull;
+
import java.net.Authenticator;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
public class App extends Application {
public static App instance;
private MobileLedgerDatabase dbHelper;
+ private boolean monthNamesPrepared = false;
public static SQLiteDatabase getDatabase() {
- if (instance == null) throw new RuntimeException("Application not created yet");
+ if (instance == null)
+ throw new RuntimeException("Application not created yet");
return instance.getDB();
}
+ public static void prepareMonthNames() {
+ instance.prepareMonthNames(false);
+ }
@Override
public void onCreate() {
Logger.debug("flow", "App onCreate()");
instance = this;
super.onCreate();
- updateMonthNames();
Data.refreshCurrencyData(Locale.getDefault());
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
- MobileLedgerProfile p = Data.profile.getValue();
- if ((p != null) && p.isAuthEnabled()) {
+ MobileLedgerProfile p = Data.getProfile();
+ if (p.isAuthEnabled()) {
try {
final URL url = new URL(p.getUrl());
final String requestingHost = getRequestingHost();
final String expectedHost = url.getHost();
if (requestingHost.equalsIgnoreCase(expectedHost))
return new PasswordAuthentication(p.getAuthUserName(),
- p.getAuthPassword().toCharArray());
- else Log.w("http-auth",
- String.format("Requesting host [%s] differs from expected [%s]",
- requestingHost, expectedHost));
+ p.getAuthPassword()
+ .toCharArray());
+ else
+ Log.w("http-auth",
+ String.format("Requesting host [%s] differs from expected [%s]",
+ requestingHost, expectedHost));
}
catch (MalformedURLException e) {
e.printStackTrace();
}
});
}
- private void updateMonthNames() {
+ private void prepareMonthNames(boolean force) {
+ if (force || monthNamesPrepared)
+ return;
Resources rm = getResources();
Globals.monthNames = rm.getStringArray(R.array.month_names);
+ monthNamesPrepared = true;
}
@Override
public void onTerminate() {
Logger.debug("flow", "App onTerminate()");
- if (dbHelper != null) dbHelper.close();
+ if (dbHelper != null)
+ dbHelper.close();
super.onTerminate();
}
@Override
- public void onConfigurationChanged(Configuration newConfig) {
+ public void onConfigurationChanged(@NotNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- updateMonthNames();
+ prepareMonthNames(true);
+ Data.refreshCurrencyData(Locale.getDefault());
+ Data.locale.setValue(Locale.getDefault());
}
public SQLiteDatabase getDB() {
- if (dbHelper == null) initDb();
-
- final SQLiteDatabase db = dbHelper.getWritableDatabase();
- db.execSQL("pragma case_sensitive_like=ON;");
+ if (dbHelper == null)
+ initDb();
- return db;
+ return dbHelper.getWritableDatabase();
}
private synchronized void initDb() {
- if (dbHelper != null) return;
+ if (dbHelper != null)
+ return;
dbHelper = new MobileLedgerDatabase(this);
}