From 7a91587ecd737cea57090111c0dd835512cb9f15 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 26 Oct 2018 22:25:02 +0300 Subject: [PATCH] bug/#1172 - consistency between tile writer and tile provider Impacted classes: * `MapTileProviderBasic`: new `static` method `getMapTileFileStorageProviderBase` that fixes the possible inconsistency between the `IFilesystemCache` and the `MapTileFileStorageProviderBase`; used this method the constructor; unrelated constructor gentle refactoring * `GeoPackageProvider`: used new `static` method `MapTileProviderBasic.getMapTileFileStorageProviderBase` in the constructor * `SampleLieFi`: used new `static` method `MapTileProviderBasic.getMapTileFileStorageProviderBase` in `MapTileProviderLieFi`'s constructor --- .../tilesources/SampleLieFi.java | 11 +++----- .../tileprovider/MapTileProviderBasic.java | 26 +++++++++++++------ .../gpkg/tiles/raster/GeoPackageProvider.java | 12 ++------- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/tilesources/SampleLieFi.java b/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/tilesources/SampleLieFi.java index 1fca8db9d7..45d1b63064 100644 --- a/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/tilesources/SampleLieFi.java +++ b/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/tilesources/SampleLieFi.java @@ -12,6 +12,7 @@ import org.osmdroid.tileprovider.IMapTileProviderCallback; import org.osmdroid.tileprovider.IRegisterReceiver; import org.osmdroid.tileprovider.MapTileProviderArray; +import org.osmdroid.tileprovider.MapTileProviderBasic; import org.osmdroid.tileprovider.modules.CantContinueException; import org.osmdroid.tileprovider.modules.IFilesystemCache; import org.osmdroid.tileprovider.modules.INetworkAvailablityCheck; @@ -20,8 +21,6 @@ import org.osmdroid.tileprovider.modules.MapTileDownloader; import org.osmdroid.tileprovider.modules.MapTileFileArchiveProvider; import org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase; -import org.osmdroid.tileprovider.modules.MapTileFilesystemProvider; -import org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider; import org.osmdroid.tileprovider.modules.NetworkAvailabliltyCheck; import org.osmdroid.tileprovider.modules.SqlTileWriter; import org.osmdroid.tileprovider.modules.TileWriter; @@ -96,12 +95,8 @@ private MapTileProviderLieFi(final IRegisterReceiver pRegisterReceiver, pRegisterReceiver, pContext.getAssets(), pTileSource); mTileProviderList.add(assetsProvider); - final MapTileFileStorageProviderBase cacheProvider; - if (Build.VERSION.SDK_INT < 10) { - cacheProvider = new MapTileFilesystemProvider(pRegisterReceiver, pTileSource); - } else { - cacheProvider = new MapTileSqlCacheProvider(pRegisterReceiver, pTileSource); - } + final MapTileFileStorageProviderBase cacheProvider = + MapTileProviderBasic.getMapTileFileStorageProviderBase(pRegisterReceiver, pTileSource, tileWriter); mTileProviderList.add(cacheProvider); final MapTileFileArchiveProvider archiveProvider = new MapTileFileArchiveProvider( diff --git a/osmdroid-android/src/main/java/org/osmdroid/tileprovider/MapTileProviderBasic.java b/osmdroid-android/src/main/java/org/osmdroid/tileprovider/MapTileProviderBasic.java index ee3febaa60..c30f17fbf5 100644 --- a/osmdroid-android/src/main/java/org/osmdroid/tileprovider/MapTileProviderBasic.java +++ b/osmdroid-android/src/main/java/org/osmdroid/tileprovider/MapTileProviderBasic.java @@ -54,8 +54,7 @@ public MapTileProviderBasic(final Context pContext) { * Creates a {@link MapTileProviderBasic}. */ public MapTileProviderBasic(final Context pContext, final ITileSource pTileSource) { - this(new SimpleRegisterReceiver(pContext), new NetworkAvailabliltyCheck(pContext), - pTileSource, pContext,null); + this(pContext, pTileSource, null); } /** @@ -88,12 +87,8 @@ public MapTileProviderBasic(final IRegisterReceiver pRegisterReceiver, pRegisterReceiver, pContext.getAssets(), pTileSource); mTileProviderList.add(assetsProvider); - final MapTileFileStorageProviderBase cacheProvider; - if (Build.VERSION.SDK_INT < 10) { - cacheProvider = new MapTileFilesystemProvider(pRegisterReceiver, pTileSource); - } else { - cacheProvider = new MapTileSqlCacheProvider(pRegisterReceiver, pTileSource); - } + final MapTileFileStorageProviderBase cacheProvider = + getMapTileFileStorageProviderBase(pRegisterReceiver, pTileSource, tileWriter); mTileProviderList.add(cacheProvider); final MapTileFileArchiveProvider archiveProvider = new MapTileFileArchiveProvider( @@ -170,4 +165,19 @@ protected boolean isDowngradedMode(final long pMapTileIndex) { final int zoom = MapTileIndex.getZoom(pMapTileIndex); return zoom < zoomMin || zoom > zoomMax; } + + /** + * @since 6.0.3 + * cf. https://github.com/osmdroid/osmdroid/issues/1172 + */ + public static MapTileFileStorageProviderBase getMapTileFileStorageProviderBase( + final IRegisterReceiver pRegisterReceiver, + final ITileSource pTileSource, + final IFilesystemCache pTileWriter + ) { + if (pTileWriter instanceof TileWriter) { + return new MapTileFilesystemProvider(pRegisterReceiver, pTileSource); + } + return new MapTileSqlCacheProvider(pRegisterReceiver, pTileSource); + } } diff --git a/osmdroid-geopackage/src/main/java/org/osmdroid/gpkg/tiles/raster/GeoPackageProvider.java b/osmdroid-geopackage/src/main/java/org/osmdroid/gpkg/tiles/raster/GeoPackageProvider.java index 6f450994e0..6c19998da6 100644 --- a/osmdroid-geopackage/src/main/java/org/osmdroid/gpkg/tiles/raster/GeoPackageProvider.java +++ b/osmdroid-geopackage/src/main/java/org/osmdroid/gpkg/tiles/raster/GeoPackageProvider.java @@ -8,10 +8,9 @@ import org.osmdroid.tileprovider.IMapTileProviderCallback; import org.osmdroid.tileprovider.IRegisterReceiver; import org.osmdroid.tileprovider.MapTileProviderArray; +import org.osmdroid.tileprovider.MapTileProviderBasic; import org.osmdroid.tileprovider.modules.IFilesystemCache; import org.osmdroid.tileprovider.modules.INetworkAvailablityCheck; -import org.osmdroid.tileprovider.modules.MapTileFilesystemProvider; -import org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider; import org.osmdroid.tileprovider.modules.NetworkAvailabliltyCheck; import org.osmdroid.tileprovider.modules.SqlTileWriter; import org.osmdroid.tileprovider.modules.TileWriter; @@ -63,14 +62,7 @@ public GeoPackageProvider(final IRegisterReceiver pRegisterReceiver, } } - if (Build.VERSION.SDK_INT < 10) { - final MapTileFilesystemProvider fileSystemProvider = new MapTileFilesystemProvider( - pRegisterReceiver, pTileSource); - mTileProviderList.add(fileSystemProvider); - } else { - final MapTileSqlCacheProvider cachedProvider = new MapTileSqlCacheProvider(pRegisterReceiver, pTileSource); - mTileProviderList.add(cachedProvider); - } + mTileProviderList.add(MapTileProviderBasic.getMapTileFileStorageProviderBase(pRegisterReceiver, pTileSource, tileWriter)); geopackage = new GeoPackageMapTileModuleProvider(databases, pContext, tileWriter); mTileProviderList.add(geopackage);