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));