You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2023/06/19 11:14:26 UTC

[incubator-baremaps] 01/09: Fix null pointer exception related to bounds

This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch 688-export
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit 09734a955362e67e5fd55d112f73ed900e26f084
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Fri Jun 9 21:14:58 2023 +0200

    Fix null pointer exception related to bounds
---
 .../apache/baremaps/tilestore/mbtiles/MBTiles.java |  5 +++--
 .../baremaps/workflow/tasks/ExportVectorTiles.java | 25 ++++++++++++++++------
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/mbtiles/MBTiles.java b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/mbtiles/MBTiles.java
index 9cfbdad7..06d0e0cb 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/mbtiles/MBTiles.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/mbtiles/MBTiles.java
@@ -23,6 +23,7 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.HashMap;
 import java.util.Map;
+import javax.sql.DataSource;
 import org.apache.baremaps.tilestore.TileCoord;
 import org.apache.baremaps.tilestore.TileStore;
 import org.apache.baremaps.tilestore.TileStoreException;
@@ -58,14 +59,14 @@ public class MBTiles implements TileStore {
 
   private static final String DELETE_METADATA = "DELETE FROM metadata";
 
-  private final org.sqlite.SQLiteDataSource dataSource;
+  private final DataSource dataSource;
 
   /**
    * Constructs an {@code MBTiles} with the provided SQLite datasource.
    *
    * @param dataSource the SQLite datasource
    */
-  public MBTiles(org.sqlite.SQLiteDataSource dataSource) {
+  public MBTiles(DataSource dataSource) {
     this.dataSource = dataSource;
   }
 
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
index 7828a049..32246c2d 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
@@ -16,7 +16,10 @@ import static org.apache.baremaps.utils.ObjectMapperUtils.objectMapper;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.Map;
@@ -61,10 +64,11 @@ public record ExportVectorTiles(
     var sourceTileStore = sourceTileStore(tileset, datasource);
     var targetTileStore = targetTileStore(tileset);
 
-    var envelope =
-        new Envelope(
+    var envelope = tileset.getBounds().size() == 4
+        ? new Envelope(
             tileset.getBounds().get(0), tileset.getBounds().get(2),
-            tileset.getBounds().get(1), tileset.getBounds().get(3));
+            tileset.getBounds().get(1), tileset.getBounds().get(3))
+        : new Envelope(-180, 180, -85.0511, 85.0511);
 
     var count = TileCoord.count(envelope, tileset.getMinzoom(), tileset.getMaxzoom());
 
@@ -81,6 +85,8 @@ public record ExportVectorTiles(
 
   private TileStore targetTileStore(Tileset source) throws TileStoreException, IOException {
     if (mbtiles) {
+      Files.deleteIfExists(repository);
+
       var sqliteConfig = new SQLiteConfig();
       sqliteConfig.setCacheSize(1000000);
       sqliteConfig.setJournalMode(JournalMode.OFF);
@@ -88,11 +94,16 @@ public record ExportVectorTiles(
       sqliteConfig.setSynchronous(SynchronousMode.OFF);
       sqliteConfig.setTempStore(TempStore.MEMORY);
 
-      var dataSource = new SQLiteDataSource();
-      dataSource.setConfig(sqliteConfig);
-      dataSource.setUrl("jdbc:sqlite:" + repository);
+      var sqliteDataSource = new SQLiteDataSource();
+      sqliteDataSource.setConfig(sqliteConfig);
+      sqliteDataSource.setUrl("jdbc:sqlite:" + repository);
+
+      var hikariConfig = new HikariConfig();
+      hikariConfig.setDataSource(sqliteDataSource);
+      hikariConfig.setMaximumPoolSize(1);
+      var hikariDataSource = new HikariDataSource(hikariConfig);
 
-      var tilesStore = new MBTiles(dataSource);
+      var tilesStore = new MBTiles(hikariDataSource);
       tilesStore.initializeDatabase();
       tilesStore.writeMetadata(metadata(source));