From: Markus Pfeiffer Date: Tue, 21 Nov 2023 14:37:23 +0000 (+0100) Subject: android: Provide global database helper instance X-Git-Tag: android-2.5.0^2~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a917252e2c1b52d5bdd2586b05282e39059103d;p=thirdparty%2Fstrongswan.git android: Provide global database helper instance --- diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/data/DatabaseHelper.java b/src/frontends/android/app/src/main/java/org/strongswan/android/data/DatabaseHelper.java index 95efd7cbb8..b978603d1f 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/data/DatabaseHelper.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/data/DatabaseHelper.java @@ -77,7 +77,7 @@ public class DatabaseHelper extends SQLiteOpenHelper TABLES.add(TABLE_VPN_PROFILE); } - DatabaseHelper(Context context) + public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSource.java b/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSource.java index 77cfa85510..299d0a51a8 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSource.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSource.java @@ -35,7 +35,7 @@ public class VpnProfileSource implements VpnProfileDataSource { mManagedConfigurationService = StrongSwanApplication.getInstance().getManagedConfigurationService(); - vpnProfileSqlDataSource = new VpnProfileSqlDataSource(context); + vpnProfileSqlDataSource = new VpnProfileSqlDataSource(); dataSources.add(vpnProfileSqlDataSource); dataSources.add(new VpnProfileManagedDataSource(context)); diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSqlDataSource.java b/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSqlDataSource.java index e14fccae66..50ffc6297e 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSqlDataSource.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileSqlDataSource.java @@ -19,38 +19,36 @@ package org.strongswan.android.data; import android.content.ContentValues; -import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; +import org.strongswan.android.logic.StrongSwanApplication; + import java.util.ArrayList; import java.util.List; import java.util.UUID; public class VpnProfileSqlDataSource implements VpnProfileDataSource { - private DatabaseHelper mDbHelper; + private final DatabaseHelper mDbHelper; + private SQLiteDatabase mDatabase; - private final Context mContext; /** * Construct a new VPN profile data source. The context is used to * open/create the database. - * - * @param context context used to access the database */ - public VpnProfileSqlDataSource(Context context) + public VpnProfileSqlDataSource() { - this.mContext = context; + mDbHelper = StrongSwanApplication.getInstance().getDatabaseHelper(); } @Override public VpnProfileDataSource open() throws SQLException { - if (mDbHelper == null) + if (mDatabase == null) { - mDbHelper = new DatabaseHelper(mContext); mDatabase = mDbHelper.getWritableDatabase(); } return this; @@ -59,10 +57,9 @@ public class VpnProfileSqlDataSource implements VpnProfileDataSource @Override public void close() { - if (mDbHelper != null) + if (mDatabase != null) { - mDbHelper.close(); - mDbHelper = null; + mDatabase = null; } } diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/StrongSwanApplication.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/StrongSwanApplication.java index 8d653624e1..58b55e033f 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/StrongSwanApplication.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/StrongSwanApplication.java @@ -26,6 +26,7 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; +import org.strongswan.android.data.DatabaseHelper; import org.strongswan.android.data.ManagedConfigurationService; import org.strongswan.android.security.LocalCertificateKeyStoreProvider; import org.strongswan.android.utils.Constants; @@ -56,6 +57,8 @@ public class StrongSwanApplication extends Application implements DefaultLifecyc private ManagedConfigurationService mManagedConfigurationService; + private DatabaseHelper mDatabaseHelper; + private final BroadcastReceiver mRestrictionsReceiver = new BroadcastReceiver() { @Override @@ -78,6 +81,8 @@ public class StrongSwanApplication extends Application implements DefaultLifecyc StrongSwanApplication.mContext = getApplicationContext(); StrongSwanApplication.mInstance = this; + mDatabaseHelper = new DatabaseHelper(mContext); + mManagedConfigurationService = new ManagedConfigurationService(mContext); ProcessLifecycleOwner.get().getLifecycle().addObserver(this); } @@ -162,6 +167,14 @@ public class StrongSwanApplication extends Application implements DefaultLifecyc return mManagedConfigurationService; } + /** + * @return the application's database helper used to access its SQLite database + */ + public DatabaseHelper getDatabaseHelper() + { + return mDatabaseHelper; + } + /* * The libraries are extracted to /data/data/org.strongswan.android/... * during installation. On newer releases most are loaded in JNI_OnLoad.