diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index ef9ea90d0..2a4f4ac65 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -30,6 +30,7 @@ import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.data.DBOpenHelper; import fr.free.nrw.commons.modifications.ModifierSequence; import fr.free.nrw.commons.auth.AccountUtil; +import fr.free.nrw.commons.nearby.NearbyPlaces; import org.acra.ACRA; import org.acra.ReportingInteractionMode; @@ -85,6 +86,8 @@ public class CommonsApplication extends Application { private MWApi api = null; private CacheController cacheData = null; private RequestQueue volleyQueue = null; + private DBOpenHelper dbOpenHelper = null; + private NearbyPlaces nearbyPlaces = null; /** * This should not be called by ANY application code (other than the magic Android glue) @@ -146,6 +149,20 @@ public class CommonsApplication extends Application { return volleyQueue; } + public synchronized DBOpenHelper getDBOpenHelper() { + if(dbOpenHelper == null) { + dbOpenHelper = new DBOpenHelper(this); + } + return dbOpenHelper; + } + + public synchronized NearbyPlaces getNearbyPlaces() { + if (nearbyPlaces == null) { + nearbyPlaces = new NearbyPlaces(); + } + return nearbyPlaces; + } + @Override public void onCreate() { super.onCreate(); diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java index 314ab33f2..de157265b 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java @@ -9,6 +9,7 @@ import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.text.TextUtils; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.data.DBOpenHelper; import timber.log.Timber; @@ -36,7 +37,7 @@ public class CategoryContentProvider extends ContentProvider { private DBOpenHelper dbOpenHelper; @Override public boolean onCreate() { - dbOpenHelper = DBOpenHelper.getInstance(getContext()); + dbOpenHelper = CommonsApplication.getInstance().getDBOpenHelper(); return false; } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java index 37d9dae18..838b9c922 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java @@ -9,6 +9,7 @@ import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.text.TextUtils; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.data.DBOpenHelper; import timber.log.Timber; @@ -35,7 +36,7 @@ public class ContributionsContentProvider extends ContentProvider{ private DBOpenHelper dbOpenHelper; @Override public boolean onCreate() { - dbOpenHelper = DBOpenHelper.getInstance(getContext()); + dbOpenHelper = CommonsApplication.getInstance().getDBOpenHelper(); return false; } diff --git a/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.java b/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.java index 58ab54a4d..22171857a 100644 --- a/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.java +++ b/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.java @@ -12,16 +12,11 @@ public class DBOpenHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "commons.db"; private static final int DATABASE_VERSION = 6; - private static DBOpenHelper singleton = null; - public static synchronized DBOpenHelper getInstance(Context context) { - if ( singleton == null ) { - singleton = new DBOpenHelper(context); - } - return singleton; - } - - private DBOpenHelper(Context context) { + /** + * Do not use, please call CommonsApplication.getDBOpenHelper() + */ + public DBOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java index baba01770..097651aaf 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java @@ -9,6 +9,7 @@ import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.text.TextUtils; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.data.DBOpenHelper; import timber.log.Timber; @@ -35,7 +36,7 @@ public class ModificationsContentProvider extends ContentProvider{ private DBOpenHelper dbOpenHelper; @Override public boolean onCreate() { - dbOpenHelper = DBOpenHelper.getInstance(getContext()); + dbOpenHelper = CommonsApplication.getInstance().getDBOpenHelper(); return false; } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java index e5fc3182c..0a290784a 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.R; import fr.free.nrw.commons.location.LatLng; import timber.log.Timber; @@ -37,13 +38,14 @@ public class NearbyController { if (curLatLng == null) { return Collections.emptyList(); } + NearbyPlaces nearbyPlaces = CommonsApplication.getInstance().getNearbyPlaces(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); List places = prefs.getBoolean("useWikidata", true) - ? NearbyPlaces.getInstance().getFromWikidataQuery( + ? nearbyPlaces.getFromWikidataQuery( context, curLatLng, Locale.getDefault().getLanguage()) - : NearbyPlaces.getInstance().getFromWikiNeedsPictures(); + : nearbyPlaces.getFromWikiNeedsPictures(); if (curLatLng != null) { Timber.d("Sorting places by distance..."); final Map distances = new HashMap<>(); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java index 152812fd2..3478e74e9 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java @@ -29,13 +29,9 @@ public class NearbyPlaces { private static final double MAX_RADIUS = 300.0; // in kilometer private static final double RADIUS_MULTIPLIER = 1.618; private static final String WIKIDATA_QUERY_URL = "https://query.wikidata.org/sparql?query=${QUERY}"; - private static NearbyPlaces singleton; private double radius = INITIAL_RADIUS; private List places; - private NearbyPlaces(){ - } - List getFromWikidataQuery(Context context, LatLng curLatLng, String lang) { @@ -199,17 +195,4 @@ public class NearbyPlaces { } return places; } - - /** - * Get the singleton instance of this class. - * The instance is created upon the first invocation of this method, and then reused. - * - * @return The singleton instance - */ - public static synchronized NearbyPlaces getInstance() { - if (singleton == null) { - singleton = new NearbyPlaces(); - } - return singleton; - } }