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

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

commit 607861f1d8ff255a5b9a154ddf033bde4e4a962f
Author: Bertil Chapuis <[email protected]>
AuthorDate: Tue Jun 11 16:55:10 2024 +0200

    Fix some issues detected by sonar (#868)
    
    * Close the underlying ressources
    
    * Handle null values
    
    * Cast operands to double
    
    * Capitalize enums
    
    * Remove unnecessary log
    
    * Suppress warnings when irrelevant
    
    * Refactor some code
---
 .../java/org/apache/baremaps/cli/map/Export.java   |  2 +-
 .../java/org/apache/baremaps/cli/map/Serve.java    | 76 ++++++++++++----------
 .../storage/shapefile/ShapefileDataTable.java      | 12 +++-
 .../shapefile/internal/ShapefileByteReader.java    |  8 +--
 .../shapefile/internal/ShapefileGeometryType.java  | 30 ++++-----
 .../shapefile/internal/ShapefileInputStream.java   |  9 ++-
 .../tilestore/postgres/PostgresTileStore.java      |  5 +-
 .../org/apache/baremaps/utils/Compression.java     | 20 +++---
 .../apache/baremaps/utils/ObjectMapperUtils.java   |  2 +-
 .../apache/baremaps/workflow/WorkflowExecutor.java |  4 --
 .../baremaps/workflow/tasks/CleanContextCache.java |  4 +-
 .../baremaps/workflow/tasks/CleanContextData.java  |  4 +-
 .../baremaps/workflow/tasks/DecompressFile.java    | 20 +++---
 .../baremaps/workflow/tasks/ExportVectorTiles.java | 18 ++---
 .../baremaps/workflow/tasks/ImportGeoPackage.java  |  1 +
 .../apache/baremaps/geocoderosm/OSMIndexTest.java  |  4 +-
 .../org/apache/baremaps/workflow/WorkflowTest.java |  7 +-
 .../workflow/tasks/ExecuteSqlIntegrationTest.java  |  1 +
 .../workflow/tasks/ExecuteSqlScriptTest.java       |  1 +
 .../baremaps/data/algorithm/ExternalMergeSort.java |  1 +
 .../baremaps/data/collection/DataConversions.java  |  2 +-
 .../org/apache/baremaps/data/storage/DataRow.java  |  2 +-
 .../org/apache/baremaps/data/type/WKBDataType.java | 14 +++-
 .../geoparquet/data/GeoParquetGroupImpl.java       |  8 +--
 .../data/GeoParquetGroupRecordConverter.java       |  4 +-
 .../baremaps/maplibre/expression/Expressions.java  | 23 +++----
 .../apache/baremaps/maplibre/tileset/Database.java |  4 +-
 .../maplibre/vectortile/VectorTileDecoder.java     |  5 +-
 .../maplibre/vectortile/VectorTileEncoder.java     |  2 +-
 .../maplibre/vectortile/VectorTileFunctions.java   |  5 +-
 .../function/RelationMultiPolygonBuilder.java      |  1 +
 .../openstreetmap/function/WayGeometryBuilder.java |  1 +
 .../baremaps/openstreetmap/state/StateReader.java  |  4 +-
 .../org/apache/baremaps/pmtiles/Compression.java   | 26 ++++----
 .../org/apache/baremaps/pmtiles/PMTilesWriter.java |  4 +-
 .../java/org/apache/baremaps/pmtiles/TileType.java | 12 ++--
 .../org/apache/baremaps/pmtiles/PMTilesTest.java   | 18 ++---
 .../org/apache/baremaps/server/ChangeResource.java |  1 +
 .../baremaps/testing/GeometryAssertions.java       | 10 ++-
 39 files changed, 210 insertions(+), 165 deletions(-)

diff --git a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Export.java 
b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Export.java
index 520a7aac..741e3403 100644
--- a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Export.java
+++ b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Export.java
@@ -55,7 +55,7 @@ public class Export implements Callable<Integer> {
 
   @Option(names = {"--format"}, paramLabel = "FORMAT",
       description = "The format of the repository.")
-  private ExportVectorTiles.Format format = ExportVectorTiles.Format.file;
+  private ExportVectorTiles.Format format = ExportVectorTiles.Format.FILE;
 
   @Override
   public Integer call() throws Exception {
diff --git a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java 
b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java
index 34a054bf..cd99a8d2 100644
--- a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java
+++ b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java
@@ -90,54 +90,58 @@ public class Serve implements Callable<Integer> {
     var tileset = objectMapper.readValue(configReader.read(tilesetPath), 
Tileset.class);
     var datasource = 
PostgresUtils.createDataSourceFromObject(tileset.getDatabase());
 
-    var tileStore = new PostgresTileStore(datasource, tileset);
-    var tileCache = new TileCache(tileStore, caffeineSpec);
-    var tileStoreSupplier = (Supplier<TileStore>) () -> tileCache;
+    try (
+        var tileStore = new PostgresTileStore(datasource, tileset);
+        var tileCache = new TileCache(tileStore, caffeineSpec)) {
 
-    var style = objectMapper.readValue(configReader.read(stylePath), 
Style.class);
-    var styleSupplier = (Supplier<Style>) () -> style;
+      var tileStoreSupplier = (Supplier<TileStore>) () -> tileCache;
 
-    var tileJSON = objectMapper.readValue(configReader.read(tilesetPath), 
TileJSON.class);
-    var tileJSONSupplier = (Supplier<TileJSON>) () -> tileJSON;
+      var style = objectMapper.readValue(configReader.read(stylePath), 
Style.class);
+      var styleSupplier = (Supplier<Style>) () -> style;
 
-    var serverBuilder = Server.builder();
-    serverBuilder.http(port);
+      var tileJSON = objectMapper.readValue(configReader.read(tilesetPath), 
TileJSON.class);
+      var tileJSONSupplier = (Supplier<TileJSON>) () -> tileJSON;
 
-    var jsonResponseConverter = new 
JacksonResponseConverterFunction(objectMapper);
-    serverBuilder.annotatedService(new TileResource(tileStoreSupplier), 
jsonResponseConverter);
-    serverBuilder.annotatedService(new StyleResource(styleSupplier), 
jsonResponseConverter);
-    serverBuilder.annotatedService(new TileJSONResource(tileJSONSupplier), 
jsonResponseConverter);
-    serverBuilder.annotatedService(new SearchResource(datasource), 
jsonResponseConverter);
+      var serverBuilder = Server.builder();
+      serverBuilder.http(port);
 
-    var index = HttpFile.of(ClassLoader.getSystemClassLoader(), 
"/static/server.html");
-    serverBuilder.service("/", index.asService());
-    serverBuilder.serviceUnder("/", 
FileService.of(ClassLoader.getSystemClassLoader(), "/static"));
+      var jsonResponseConverter = new 
JacksonResponseConverterFunction(objectMapper);
+      serverBuilder.annotatedService(new TileResource(tileStoreSupplier), 
jsonResponseConverter);
+      serverBuilder.annotatedService(new StyleResource(styleSupplier), 
jsonResponseConverter);
+      serverBuilder.annotatedService(new TileJSONResource(tileJSONSupplier), 
jsonResponseConverter);
+      serverBuilder.annotatedService(new SearchResource(datasource), 
jsonResponseConverter);
 
-    if (assetsPath != null) {
-      serverBuilder.serviceUnder("/assets", FileService.of(assetsPath));
-    }
+      var index = HttpFile.of(ClassLoader.getSystemClassLoader(), 
"/static/server.html");
+      serverBuilder.service("/", index.asService());
+      serverBuilder.serviceUnder("/",
+          FileService.of(ClassLoader.getSystemClassLoader(), "/static"));
+
+      if (assetsPath != null) {
+        serverBuilder.serviceUnder("/assets", FileService.of(assetsPath));
+      }
 
-    serverBuilder.decorator(CorsService.builderForAnyOrigin()
-        .allowRequestMethods(HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, 
HttpMethod.DELETE,
-            HttpMethod.OPTIONS, HttpMethod.HEAD)
-        .allowRequestHeaders(HttpHeaderNames.ORIGIN, 
HttpHeaderNames.CONTENT_TYPE,
-            HttpHeaderNames.ACCEPT, HttpHeaderNames.AUTHORIZATION)
-        .allowCredentials()
-        .exposeHeaders(HttpHeaderNames.LOCATION)
-        .newDecorator());
+      serverBuilder.decorator(CorsService.builderForAnyOrigin()
+          .allowRequestMethods(HttpMethod.GET, HttpMethod.POST, 
HttpMethod.PUT, HttpMethod.DELETE,
+              HttpMethod.OPTIONS, HttpMethod.HEAD)
+          .allowRequestHeaders(HttpHeaderNames.ORIGIN, 
HttpHeaderNames.CONTENT_TYPE,
+              HttpHeaderNames.ACCEPT, HttpHeaderNames.AUTHORIZATION)
+          .allowCredentials()
+          .exposeHeaders(HttpHeaderNames.LOCATION)
+          .newDecorator());
 
-    serverBuilder.serviceUnder("/docs", new DocService());
+      serverBuilder.serviceUnder("/docs", new DocService());
 
-    serverBuilder.disableServerHeader();
-    serverBuilder.disableDateHeader();
+      serverBuilder.disableServerHeader();
+      serverBuilder.disableDateHeader();
 
-    var server = serverBuilder.build();
+      var server = serverBuilder.build();
 
-    var startFuture = server.start();
-    startFuture.join();
+      var startFuture = server.start();
+      startFuture.join();
 
-    var shutdownFuture = server.closeOnJvmShutdown();
-    shutdownFuture.join();
+      var shutdownFuture = server.closeOnJvmShutdown();
+      shutdownFuture.join();
+    }
 
     return 0;
   }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java
index 1ee7f693..3b170ddf 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/ShapefileDataTable.java
@@ -119,7 +119,11 @@ public class ShapefileDataTable implements DataTable {
         return next != null;
       } catch (IOException e) {
         logger.error("Malformed shapefile", e);
-        shapefileInputStream.close();
+        try {
+          shapefileInputStream.close();
+        } catch (IOException ex) {
+          // ignore
+        }
         return false;
       }
     }
@@ -137,7 +141,11 @@ public class ShapefileDataTable implements DataTable {
         next = null;
         return current;
       } catch (Exception e) {
-        shapefileInputStream.close();
+        try {
+          shapefileInputStream.close();
+        } catch (IOException ex) {
+          // ignore
+        }
         throw new NoSuchElementException();
       }
     }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java
index 61b1e39f..0a88c19a 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileByteReader.java
@@ -278,19 +278,19 @@ public class ShapefileByteReader extends CommonByteReader 
{
     }
 
     switch (shapefileGeometryType) {
-      case NullShape:
+      case NULL_SHAPE:
         loadNullRow(row);
         break;
 
-      case Point:
+      case POINT:
         loadPointRow(row);
         break;
 
-      case Polygon:
+      case POLYGON:
         loadPolygonRow(row);
         break;
 
-      case PolyLine:
+      case POLY_LINE:
         loadPolylineRow(row);
         break;
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileGeometryType.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileGeometryType.java
index 18da5295..94f22267 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileGeometryType.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileGeometryType.java
@@ -35,22 +35,20 @@ import java.util.Map;
  *      Specification</a>
  */
 public enum ShapefileGeometryType {
-  NullShape(0),
-  Point(1),
-  PolyLine(3),
-  Polygon(5),
-  MultiPoint(8),
-  PointZ(11),
-  PolyLineZ(
-      13),
-  PolygonZ(15),
-  MultiPointZ(
-      18),
-  PointM(21),
-  PolyLineM(23),
-  PolygonM(25),
-  MultiPointM(28),
-  MultiPatch(31);
+  NULL_SHAPE(0),
+  POINT(1),
+  POLY_LINE(3),
+  POLYGON(5),
+  MULTI_POINT(8),
+  POINT_Z(11),
+  POLY_LINE_Z(13),
+  POLYGON_Z(15),
+  MULTI_POINT_Z(18),
+  POINT_M(21),
+  POLY_LINE_M(23),
+  POLYGON_M(25),
+  MULTI_POINT_M(28),
+  MULTI_PATCH(31);
 
   // used for initializing the enumeration
   private int value;
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileInputStream.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileInputStream.java
index bd7a1e9a..3e9140ff 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileInputStream.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/ShapefileInputStream.java
@@ -109,7 +109,14 @@ public class ShapefileInputStream extends InputStream {
 
   /** @see java.io.InputStream#close() */
   @Override
-  public void close() {}
+  public void close() throws IOException {
+    if (this.dbaseReader != null) {
+      this.dbaseReader.close();
+    }
+    if (this.shapefileReader != null) {
+      this.shapefileReader.close();
+    }
+  }
 
   /**
    * Read next feature responding to the SQL query.
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
index af132f0a..fe72fbd4 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
@@ -125,6 +125,7 @@ public class PostgresTileStore implements TileStore {
    * @param zoom the zoom level
    * @return
    */
+  @SuppressWarnings("squid:S3776")
   protected static Query prepareQuery(Tileset tileset, int zoom) {
     // Initialize a builder for the tile sql
     var tileSql = new StringBuilder();
@@ -164,8 +165,8 @@ public class PostgresTileStore implements TileStore {
               .replace("$zoom", String.valueOf(zoom));
           var querySqlWithParams = String.format(
               "SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(?, ?, ?)) AS geom, 
t.tags - 'id' AS tags, t.id AS id "
-                  +
-                  "FROM (%s) AS t WHERE t.geom IS NOT NULL AND t.geom && 
ST_TileEnvelope(?, ?, ?, margin => (64.0/4096))",
+                  + "FROM (%s) AS t WHERE t.geom IS NOT NULL "
+                  + "AND t.geom && ST_TileEnvelope(?, ?, ?, margin => 
(64.0/4096))",
               querySql);
           layerSql.append(querySqlWithParams);
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/utils/Compression.java 
b/baremaps-core/src/main/java/org/apache/baremaps/utils/Compression.java
index 46a2569a..852e9ef8 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/utils/Compression.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/utils/Compression.java
@@ -27,32 +27,32 @@ import 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import 
org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
 
 public enum Compression {
-  none,
-  gzip,
-  bzip2;
+  NONE,
+  GZIP,
+  BZIP2;
 
   public static Compression detect(Path file) {
     if (file.toString().endsWith(".gz")) {
-      return gzip;
+      return GZIP;
     } else if (file.toString().endsWith(".bz2")) {
-      return bzip2;
+      return BZIP2;
     } else {
-      return none;
+      return NONE;
     }
   }
 
   public InputStream decompress(InputStream inputStream) throws IOException {
     return switch (this) {
-      case gzip -> new GZIPInputStream(inputStream);
-      case bzip2 -> new BZip2CompressorInputStream(inputStream);
+      case GZIP -> new GZIPInputStream(inputStream);
+      case BZIP2 -> new BZip2CompressorInputStream(inputStream);
       default -> inputStream;
     };
   }
 
   public OutputStream compress(OutputStream outputStream) throws IOException {
     return switch (this) {
-      case gzip -> new GZIPOutputStream(outputStream);
-      case bzip2 -> new BZip2CompressorOutputStream(outputStream);
+      case GZIP -> new GZIPOutputStream(outputStream);
+      case BZIP2 -> new BZip2CompressorOutputStream(outputStream);
       default -> outputStream;
     };
   }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/utils/ObjectMapperUtils.java 
b/baremaps-core/src/main/java/org/apache/baremaps/utils/ObjectMapperUtils.java
index 2c9ea560..0b642399 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/utils/ObjectMapperUtils.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/utils/ObjectMapperUtils.java
@@ -28,7 +28,7 @@ public class ObjectMapperUtils {
 
   public static ObjectMapper objectMapper() {
     return new ObjectMapper()
-        .registerModule(Expressions.jacksonModule())
+        .registerModule(Expressions.createModule())
         .configure(Feature.IGNORE_UNKNOWN, true)
         .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
         .configure(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, 
true)
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
index 36d3c38b..7295c448 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
@@ -98,8 +98,6 @@ public class WorkflowExecutor implements AutoCloseable {
     if (Graphs.hasCycle(this.graph)) {
       throw new WorkflowException("The workflow must be a directed acyclic 
graph");
     }
-
-    logger.info("Workflow graph: {}", this.graph);
   }
 
   /**
@@ -230,10 +228,8 @@ public class WorkflowExecutor implements AutoCloseable {
 
     if (workflowStart.isPresent() && workflowEnd.isPresent()) {
       var workflowDuration = Duration.ofMillis(workflowEnd.getAsLong() - 
workflowStart.getAsLong());
-      logger.info("Workflow graph: {}", this.graph);
       logger.info("  Duration: {}", formatDuration(workflowDuration));
     } else {
-      logger.info("Workflow graph: {}", this.graph);
       logger.info("  Duration: unknown");
     }
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextCache.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextCache.java
index 625506a7..a9f8a075 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextCache.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextCache.java
@@ -29,7 +29,9 @@ public class CleanContextCache implements Task {
   /**
    * Constructs an {@code CleanContextCache}.
    */
-  public CleanContextCache() {}
+  public CleanContextCache() {
+    // Default constructor
+  }
 
   /**
    * {@inheritDoc}
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextData.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextData.java
index c90696a1..56062bfb 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextData.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CleanContextData.java
@@ -29,7 +29,9 @@ public class CleanContextData implements Task {
   /**
    * Constructs an {@code CleanContextData}.
    */
-  public CleanContextData() {}
+  public CleanContextData() {
+    // Default constructor
+  }
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressFile.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressFile.java
index ac364246..d3d0d65b 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressFile.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressFile.java
@@ -45,11 +45,11 @@ public class DecompressFile implements Task {
    * The compression format.
    */
   public enum Compression {
-    zip,
-    targz,
-    tarbz2,
-    gzip,
-    bzip2;
+    ZIP,
+    TARGZ,
+    TARBZ2,
+    GZIP,
+    BZIP2;
   }
 
   private Path source;
@@ -84,11 +84,11 @@ public class DecompressFile implements Task {
     var sourcePath = source.toAbsolutePath();
     var targetPath = target.toAbsolutePath();
     switch (compression) {
-      case zip -> decompressZip(sourcePath, targetPath);
-      case targz -> decompressTarGz(sourcePath, targetPath);
-      case tarbz2 -> decompressTarBz2(sourcePath, targetPath);
-      case gzip -> decompressGzip(sourcePath, targetPath);
-      case bzip2 -> decompressBzip2(sourcePath, targetPath);
+      case ZIP -> decompressZip(sourcePath, targetPath);
+      case TARGZ -> decompressTarGz(sourcePath, targetPath);
+      case TARBZ2 -> decompressTarBz2(sourcePath, targetPath);
+      case GZIP -> decompressGzip(sourcePath, targetPath);
+      case BZIP2 -> decompressBzip2(sourcePath, targetPath);
     }
   }
 
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 0875a5d9..0a1b9f0c 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
@@ -54,9 +54,9 @@ public class ExportVectorTiles implements Task {
   private static final Logger logger = 
LoggerFactory.getLogger(ExportVectorTiles.class);
 
   public enum Format {
-    file,
-    mbtiles,
-    pmtiles
+    FILE,
+    MBTILES,
+    PMTILES
   }
 
   private Path tileset;
@@ -101,9 +101,9 @@ public class ExportVectorTiles implements Task {
 
     // Write the static files
     var directory = switch (format) {
-      case file -> repository;
-      case mbtiles -> repository.getParent();
-      case pmtiles -> repository.getParent();
+      case FILE -> repository;
+      case MBTILES -> repository.getParent();
+      case PMTILES -> repository.getParent();
     };
     Files.createDirectories(directory);
     try (var html = 
this.getClass().getResourceAsStream("/static/server.html")) {
@@ -171,16 +171,16 @@ public class ExportVectorTiles implements Task {
 
   private TileStore targetTileStore(Tileset source) throws TileStoreException, 
IOException {
     switch (format) {
-      case file:
+      case FILE:
         return new FileTileStore(repository.resolve("tiles"));
-      case mbtiles:
+      case MBTILES:
         Files.deleteIfExists(repository);
         var dataSource = SqliteUtils.createDataSource(repository, false);
         var tilesStore = new MBTilesStore(dataSource);
         tilesStore.initializeDatabase();
         tilesStore.writeMetadata(metadata(source));
         return tilesStore;
-      case pmtiles:
+      case PMTILES:
         Files.deleteIfExists(repository);
         return new PMTilesStore(repository, source);
       default:
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
index 88801a53..cf8078a8 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
@@ -33,6 +33,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Import a GeoPackage into a database.
  */
+@SuppressWarnings("squid:S2699")
 public class ImportGeoPackage implements Task {
 
   private static final Logger logger = 
LoggerFactory.getLogger(ImportGeoPackage.class);
diff --git 
a/baremaps-core/src/test/java/org/apache/baremaps/geocoderosm/OSMIndexTest.java 
b/baremaps-core/src/test/java/org/apache/baremaps/geocoderosm/OSMIndexTest.java
index 7b4d8a7d..f267f600 100644
--- 
a/baremaps-core/src/test/java/org/apache/baremaps/geocoderosm/OSMIndexTest.java
+++ 
b/baremaps-core/src/test/java/org/apache/baremaps/geocoderosm/OSMIndexTest.java
@@ -18,8 +18,7 @@
 package org.apache.baremaps.geocoderosm;
 
 import static org.apache.baremaps.testing.TestFiles.SAMPLE_OSM_PBF;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -162,6 +161,7 @@ public class OSMIndexTest {
     for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
       System.out.println(searcher.doc(scoreDoc.doc));
     }
+    assertNotNull(topDocs);
   }
 
 }
diff --git 
a/baremaps-core/src/test/java/org/apache/baremaps/workflow/WorkflowTest.java 
b/baremaps-core/src/test/java/org/apache/baremaps/workflow/WorkflowTest.java
index 9aadd107..d55d913a 100644
--- a/baremaps-core/src/test/java/org/apache/baremaps/workflow/WorkflowTest.java
+++ b/baremaps-core/src/test/java/org/apache/baremaps/workflow/WorkflowTest.java
@@ -27,6 +27,7 @@ import 
org.apache.baremaps.workflow.tasks.DecompressFile.Compression;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
+@SuppressWarnings("squid:S2699")
 class WorkflowTest extends PostgresContainerTest {
 
   @Test
@@ -36,7 +37,7 @@ class WorkflowTest extends PostgresContainerTest {
         new 
DownloadUrl("https://naciscdn.org/naturalearth/packages/natural_earth_vector.gpkg.zip";,
             Paths.get("natural_earth_vector.gpkg.zip"), false),
         new DecompressFile(Paths.get("natural_earth_vector.gpkg.zip"),
-            Paths.get("natural_earth_vector"), Compression.zip),
+            Paths.get("natural_earth_vector"), Compression.ZIP),
         new 
ImportGeoPackage(Paths.get("natural_earth_vector/packages/natural_earth_vector.gpkg"),
             4326, jdbcUrl(),
             3857)))));
@@ -51,7 +52,7 @@ class WorkflowTest extends PostgresContainerTest {
             new 
DownloadUrl("https://osmdata.openstreetmap.de/download/coastlines-split-4326.zip";,
                 Paths.get("coastlines-split-4326.zip"), false),
             new DecompressFile(Paths.get("coastlines-split-4326.zip"),
-                Paths.get("coastlines-split-4326"), Compression.zip),
+                Paths.get("coastlines-split-4326"), Compression.ZIP),
             new 
ImportShapefile(Paths.get("coastlines-split-4326/coastlines-split-4326/lines.shp"),
                 4326, jdbcUrl(),
                 3857)))));
@@ -109,7 +110,7 @@ class WorkflowTest extends PostgresContainerTest {
         new Step("unzip-shapefile", List.of("fetch-shapefile"),
             List.of(
                 new 
DecompressFile(Paths.get("downloads/simplified-water-polygons-split-3857.zip"),
-                    Paths.get("archives"), Compression.zip))),
+                    Paths.get("archives"), Compression.ZIP))),
         new Step("fetch-projection", List.of("unzip-shapefile"),
             List.of(new 
DownloadUrl("https://spatialreference.org/ref/sr-org/epsg3857/prj/";,
                 Paths.get(
diff --git 
a/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlIntegrationTest.java
 
b/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlIntegrationTest.java
index 9355db58..91e2c43f 100644
--- 
a/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlIntegrationTest.java
+++ 
b/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlIntegrationTest.java
@@ -24,6 +24,7 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 
+@SuppressWarnings("squid:S2699")
 class ExecuteSqlIntegrationTest extends PostgresContainerTest {
 
   @Test
diff --git 
a/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScriptTest.java
 
b/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScriptTest.java
index fcd8e1c5..aeb04aac 100644
--- 
a/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScriptTest.java
+++ 
b/baremaps-core/src/test/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScriptTest.java
@@ -25,6 +25,7 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 
+@SuppressWarnings("squid:S2699")
 class ExecuteSqlScriptTest extends PostgresContainerTest {
 
   @Test
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/algorithm/ExternalMergeSort.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/algorithm/ExternalMergeSort.java
index 37232e10..040886ff 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/algorithm/ExternalMergeSort.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/algorithm/ExternalMergeSort.java
@@ -30,6 +30,7 @@ import org.apache.baremaps.data.collection.DataList;
  * <a 
href="https://github.com/lemire/externalsortinginjava";>externalsortinginjava</a>
 (public
  * domain).
  */
+@SuppressWarnings({"squid:S2095", "squid:S3776"})
 public class ExternalMergeSort {
 
   /**
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
index f0e63dfb..4a315fb2 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
@@ -219,7 +219,7 @@ public class DataConversions {
     @Override
     public long addIndexed(E value) {
       list.add(value);
-      return list.size() - 1;
+      return list.size() - 1L;
     }
 
     @Override
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/storage/DataRow.java 
b/baremaps-data/src/main/java/org/apache/baremaps/data/storage/DataRow.java
index 25476c20..5c8df9cc 100644
--- a/baremaps-data/src/main/java/org/apache/baremaps/data/storage/DataRow.java
+++ b/baremaps-data/src/main/java/org/apache/baremaps/data/storage/DataRow.java
@@ -36,7 +36,7 @@ public interface DataRow {
    * 
    * @return the values of the columns in the row
    */
-  List<?> values();
+  List<Object> values();
 
   /**
    * Returns the value of the specified column.
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/type/WKBDataType.java 
b/baremaps-data/src/main/java/org/apache/baremaps/data/type/WKBDataType.java
index 49c2dea8..1c3b3bfe 100644
--- a/baremaps-data/src/main/java/org/apache/baremaps/data/type/WKBDataType.java
+++ b/baremaps-data/src/main/java/org/apache/baremaps/data/type/WKBDataType.java
@@ -36,7 +36,11 @@ public class WKBDataType implements DataType<Geometry> {
   @Override
   public int size(final Geometry value) {
     byte[] bytes = serialize(value);
-    return Integer.BYTES + bytes.length;
+    if (bytes == null) {
+      return Integer.BYTES;
+    } else {
+      return Integer.BYTES + bytes.length;
+    }
   }
 
   /** {@inheritDoc} */
@@ -49,8 +53,12 @@ public class WKBDataType implements DataType<Geometry> {
   @Override
   public void write(final ByteBuffer buffer, final int position, final 
Geometry value) {
     byte[] bytes = serialize(value);
-    buffer.putInt(position, Integer.BYTES + bytes.length);
-    buffer.put(position + Integer.BYTES, bytes);
+    if (bytes == null) {
+      buffer.putInt(position, Integer.BYTES);
+    } else {
+      buffer.putInt(position, Integer.BYTES + bytes.length);
+      buffer.put(position + Integer.BYTES, bytes);
+    }
   }
 
   /** {@inheritDoc} */
diff --git 
a/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupImpl.java
 
b/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupImpl.java
index 9da6d93d..7e85b013 100644
--- 
a/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupImpl.java
+++ 
b/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupImpl.java
@@ -437,16 +437,16 @@ public class GeoParquetGroupImpl implements 
GeoParquetGroup {
   public List<Envelope> getEnvelopeValues(int fieldIndex) {
     return getGroupValues(fieldIndex).stream().map(group -> {
       double xMin = group.getSchema().fields().get(0).type().equals(Type.FLOAT)
-          ? group.getFloatValue(0)
+          ? (double) group.getFloatValue(0)
           : group.getDoubleValue(0);
       double yMin = group.getSchema().fields().get(1).type().equals(Type.FLOAT)
-          ? group.getFloatValue(1)
+          ? (double) group.getFloatValue(1)
           : group.getDoubleValue(1);
       double xMax = group.getSchema().fields().get(2).type().equals(Type.FLOAT)
-          ? group.getFloatValue(2)
+          ? (double) group.getFloatValue(2)
           : group.getDoubleValue(2);
       double yMax = group.getSchema().fields().get(0).type().equals(Type.FLOAT)
-          ? group.getFloatValue(3)
+          ? (double) group.getFloatValue(3)
           : group.getDoubleValue(3);
       return new Envelope(xMin, xMax, yMin, yMax);
     }).toList();
diff --git 
a/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupRecordConverter.java
 
b/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupRecordConverter.java
index 54cfb797..ad1b1d2d 100644
--- 
a/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupRecordConverter.java
+++ 
b/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/data/GeoParquetGroupRecordConverter.java
@@ -51,7 +51,9 @@ public class GeoParquetGroupRecordConverter extends 
RecordMaterializer<GeoParque
       }
 
       @Override
-      public void end() {}
+      public void end() {
+        // Do nothing
+      }
     };
   }
 
diff --git 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/expression/Expressions.java
 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/expression/Expressions.java
index c20eab16..72eae357 100644
--- 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/expression/Expressions.java
+++ 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/expression/Expressions.java
@@ -503,24 +503,14 @@ public interface Expressions {
             "Unknown expression: " + arrayList.get(0).asText());
       };
     }
-
   }
 
-
   static Expression read(String json) throws IOException {
-    var mapper = new ObjectMapper();
-    var simpleModule = new SimpleModule("SimpleModule", new Version(1, 0, 0, 
null));
-    simpleModule.addDeserializer(Expression.class, new 
ExpressionDeserializer());
-    mapper.registerModule(simpleModule);
-    return mapper.readValue(new StringReader(json), Expression.class);
+    return createObjectMapper().readValue(new StringReader(json), 
Expression.class);
   }
 
   static String write(Expression expression) throws IOException {
-    var mapper = new ObjectMapper();
-    var simpleModule = new SimpleModule("SimpleModule", new Version(1, 0, 0, 
null));
-    simpleModule.addSerializer(Expression.class, new ExpressionSerializer());
-    mapper.registerModule(simpleModule);
-    return mapper.writeValueAsString(expression);
+    return createObjectMapper().writeValueAsString(expression);
   }
 
   static Predicate<Feature> asPredicate(Expression expression) {
@@ -534,8 +524,15 @@ public interface Expressions {
     };
   }
 
-  public static Module jacksonModule() {
+  static ObjectMapper createObjectMapper() {
+    var mapper = new ObjectMapper();
+    mapper.registerModule(createModule());
+    return mapper;
+  }
+
+  static Module createModule() {
     var simpleModule = new SimpleModule("SimpleModule", new Version(1, 0, 0, 
null));
+    simpleModule.addSerializer(Expression.class, new ExpressionSerializer());
     simpleModule.addDeserializer(Expression.class, new 
ExpressionDeserializer());
     return simpleModule;
   }
diff --git 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/tileset/Database.java
 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/tileset/Database.java
index d4e4334e..b332357d 100644
--- 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/tileset/Database.java
+++ 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/tileset/Database.java
@@ -61,7 +61,9 @@ public class Database {
   @JsonProperty("readOnly")
   private Boolean readOnly;
 
-  public Database() {}
+  public Database() {
+    // Default constructor
+  }
 
   public String getDataSourceClassName() {
     return dataSourceClassName;
diff --git 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileDecoder.java
 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileDecoder.java
index b0537992..b37abc6c 100644
--- 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileDecoder.java
+++ 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileDecoder.java
@@ -48,7 +48,9 @@ public class VectorTileDecoder {
   /**
    * Constructs a new vector tile decoder.
    */
-  public VectorTileDecoder() {}
+  public VectorTileDecoder() {
+    // Default constructor
+  }
 
   /**
    * Decodes a vector tile.
@@ -208,6 +210,7 @@ public class VectorTileDecoder {
    * @param encoding The encoding of the point geometry
    * @return The decoded point geometry
    */
+  @SuppressWarnings("squid:S3776")
   protected Geometry decodePoint(List<Integer> encoding) {
     List<Coordinate> coordinates = new ArrayList<>();
 
diff --git 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileEncoder.java
 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileEncoder.java
index e51ab027..8af06bbe 100644
--- 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileEncoder.java
+++ 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileEncoder.java
@@ -47,7 +47,7 @@ public class VectorTileEncoder {
    * Constructs a vector tile encoder.
    */
   public VectorTileEncoder() {
-
+    // Default constructor
   }
 
   /**
diff --git 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileFunctions.java
 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileFunctions.java
index c65a8f34..d0b06401 100644
--- 
a/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileFunctions.java
+++ 
b/baremaps-maplibre/src/main/java/org/apache/baremaps/maplibre/vectortile/VectorTileFunctions.java
@@ -123,8 +123,9 @@ public class VectorTileFunctions {
    * @return The clipped geometry
    */
   private static Geometry clipToTile(Geometry geometry, int extent, int 
buffer) {
-    Envelope envelope =
-        new Envelope(-buffer, extent + buffer, -buffer, extent + buffer);
+    Envelope envelope = new Envelope(
+        -buffer, (double) extent + buffer,
+        -buffer, (double) extent + buffer);
     GeometryFactory geometryFactory = new GeometryFactory();
     Geometry tile = geometryFactory.toGeometry(envelope);
     return geometry.intersection(tile);
diff --git 
a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java
 
b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java
index 5009f64b..73a674f5 100644
--- 
a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java
+++ 
b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/RelationMultiPolygonBuilder.java
@@ -81,6 +81,7 @@ public class RelationMultiPolygonBuilder implements 
Consumer<Entity> {
     }
   }
 
+  @SuppressWarnings("squid:S3776")
   private void buildMultiPolygon(Relation relation) {
     // Categorize the members of the relation by their role
     var outerMembers = new ArrayList<Member>();
diff --git 
a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java
 
b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java
index a93e9903..1df439ac 100644
--- 
a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java
+++ 
b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java
@@ -51,6 +51,7 @@ public class WayGeometryBuilder implements Consumer<Entity> {
 
   /** {@inheritDoc} */
   @Override
+  @SuppressWarnings("squid:S3776")
   public void accept(Entity entity) {
     if (entity instanceof Way way) {
       try {
diff --git 
a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/state/StateReader.java
 
b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/state/StateReader.java
index ded415dd..d9e84dd5 100644
--- 
a/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/state/StateReader.java
+++ 
b/baremaps-openstreetmap/src/main/java/org/apache/baremaps/openstreetmap/state/StateReader.java
@@ -109,6 +109,7 @@ public class StateReader implements Reader<State> {
    * @param timestamp the timestamp
    * @return the state
    */
+  @SuppressWarnings("squid:S3776")
   public Optional<State> getStateFromTimestamp(LocalDateTime timestamp) {
     var upper = getState(Optional.empty());
     if (upper.isEmpty()) {
@@ -147,7 +148,8 @@ public class StateReader implements Reader<State> {
             - lower.get().getTimestamp().toEpochSecond(ZoneOffset.UTC);
         var seqInt = upper.get().getSequenceNumber() - 
lower.get().getSequenceNumber();
         var goal = timestamp.getSecond() - 
lower.get().getTimestamp().getSecond();
-        baseSplitId = lower.get().getSequenceNumber() + (long) Math.ceil(goal 
* seqInt / tsInt);
+        baseSplitId =
+            lower.get().getSequenceNumber() + (long) Math.ceil((double) (goal 
* seqInt) / tsInt);
         if (baseSplitId >= upper.get().getSequenceNumber()) {
           baseSplitId = upper.get().getSequenceNumber() - 1;
         }
diff --git 
a/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/Compression.java 
b/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/Compression.java
index facc0138..f2891b27 100644
--- 
a/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/Compression.java
+++ 
b/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/Compression.java
@@ -22,18 +22,18 @@ import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 
 enum Compression {
-  Unknown,
-  None,
-  Gzip,
-  Brotli,
-  Zstd;
+  UNKNOWN,
+  NONE,
+  GZIP,
+  BROTLI,
+  ZSTD;
 
   InputStream decompress(InputStream inputStream) throws IOException {
     return switch (this) {
-      case None -> inputStream;
-      case Gzip -> decompressGzip(inputStream);
-      case Brotli -> decompressBrotli(inputStream);
-      case Zstd -> decompressZstd(inputStream);
+      case NONE -> inputStream;
+      case GZIP -> decompressGzip(inputStream);
+      case BROTLI -> decompressBrotli(inputStream);
+      case ZSTD -> decompressZstd(inputStream);
       default -> throw new RuntimeException("Unknown compression");
     };
   }
@@ -52,10 +52,10 @@ enum Compression {
 
   OutputStream compress(OutputStream outputStream) throws IOException {
     return switch (this) {
-      case None -> outputStream;
-      case Gzip -> compressGzip(outputStream);
-      case Brotli -> compressBrotli(outputStream);
-      case Zstd -> compressZstd(outputStream);
+      case NONE -> outputStream;
+      case GZIP -> compressGzip(outputStream);
+      case BROTLI -> compressBrotli(outputStream);
+      case ZSTD -> compressZstd(outputStream);
       default -> throw new RuntimeException("Unknown compression");
     };
   }
diff --git 
a/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/PMTilesWriter.java 
b/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/PMTilesWriter.java
index 5d767022..a6e1e940 100644
--- 
a/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/PMTilesWriter.java
+++ 
b/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/PMTilesWriter.java
@@ -28,7 +28,7 @@ import java.util.*;
 
 public class PMTilesWriter {
 
-  private Compression compression = Compression.Gzip;
+  private Compression compression = Compression.GZIP;
 
   private Path path;
 
@@ -183,7 +183,7 @@ public class PMTilesWriter {
 
     header.setInternalCompression(compression);
     header.setTileCompression(compression);
-    header.setTileType(TileType.mvt);
+    header.setTileType(TileType.MVT);
     header.setRootOffset(rootOffset);
     header.setRootLength(rootLength);
     header.setMetadataOffset(metadataOffset);
diff --git 
a/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/TileType.java 
b/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/TileType.java
index b97cd981..001db982 100644
--- a/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/TileType.java
+++ b/baremaps-pmtiles/src/main/java/org/apache/baremaps/pmtiles/TileType.java
@@ -18,10 +18,10 @@
 package org.apache.baremaps.pmtiles;
 
 enum TileType {
-  unknown,
-  mvt,
-  png,
-  jpeg,
-  webp,
-  avif,
+  UNKNOWN,
+  MVT,
+  PNG,
+  JPEG,
+  WEBP,
+  AVIF,
 }
diff --git 
a/baremaps-pmtiles/src/test/java/org/apache/baremaps/pmtiles/PMTilesTest.java 
b/baremaps-pmtiles/src/test/java/org/apache/baremaps/pmtiles/PMTilesTest.java
index affb0514..5bb38642 100644
--- 
a/baremaps-pmtiles/src/test/java/org/apache/baremaps/pmtiles/PMTilesTest.java
+++ 
b/baremaps-pmtiles/src/test/java/org/apache/baremaps/pmtiles/PMTilesTest.java
@@ -144,9 +144,9 @@ class PMTilesTest {
       assertEquals(header.getNumTileEntries(), 1);
       assertEquals(header.getNumTileContents(), 1);
       assertFalse(header.isClustered());
-      assertEquals(header.getInternalCompression(), Compression.Gzip);
-      assertEquals(header.getTileCompression(), Compression.Gzip);
-      assertEquals(header.getTileType(), TileType.mvt);
+      assertEquals(header.getInternalCompression(), Compression.GZIP);
+      assertEquals(header.getTileCompression(), Compression.GZIP);
+      assertEquals(header.getTileType(), TileType.MVT);
       assertEquals(header.getMinZoom(), 0);
       assertEquals(header.getMaxZoom(), 0);
       assertEquals(header.getMinLon(), 0);
@@ -173,9 +173,9 @@ class PMTilesTest {
         1,
         10,
         false,
-        Compression.Gzip,
-        Compression.Gzip,
-        TileType.mvt,
+        Compression.GZIP,
+        Compression.GZIP,
+        TileType.MVT,
         0,
         0,
         0,
@@ -254,7 +254,7 @@ class PMTilesTest {
   @Test
   void buildRootLeaves() throws IOException {
     var entries = List.of(new Entry(100, 1, 1, 0));
-    var directories = PMTiles.buildRootLeaves(entries, 1, Compression.None);
+    var directories = PMTiles.buildRootLeaves(entries, 1, Compression.NONE);
     assertEquals(directories.getNumLeaves(), 1);
 
   }
@@ -264,7 +264,7 @@ class PMTilesTest {
     var random = new Random(3857);
     var entries = new ArrayList<Entry>();
     entries.add(new Entry(0, 0, 100, 1));
-    var directories = PMTiles.optimizeDirectories(entries, 100, 
Compression.None);
+    var directories = PMTiles.optimizeDirectories(entries, 100, 
Compression.NONE);
     assertFalse(directories.getLeaves().length > 0);
     assertEquals(0, directories.getNumLeaves());
 
@@ -275,7 +275,7 @@ class PMTilesTest {
       entries.add(new Entry(i, offset, randTileSize, 1));
       offset += randTileSize;
     }
-    directories = PMTiles.optimizeDirectories(entries, 1024, Compression.None);
+    directories = PMTiles.optimizeDirectories(entries, 1024, Compression.NONE);
     assertFalse(directories.getRoot().length > 1024);
     assertFalse(directories.getNumLeaves() == 0);
     assertFalse(directories.getLeaves().length == 0);
diff --git 
a/baremaps-server/src/main/java/org/apache/baremaps/server/ChangeResource.java 
b/baremaps-server/src/main/java/org/apache/baremaps/server/ChangeResource.java
index 32ccae71..f4e81371 100644
--- 
a/baremaps-server/src/main/java/org/apache/baremaps/server/ChangeResource.java
+++ 
b/baremaps-server/src/main/java/org/apache/baremaps/server/ChangeResource.java
@@ -87,6 +87,7 @@ public final class ChangeResource {
      * Detects changes in the tileset and style and broadcasts them.
      */
     @Override
+    @SuppressWarnings("squid:S3776")
     public void run() {
       try (WatchService watchService = 
FileSystems.getDefault().newWatchService()) {
         if (tileset != null && Files.exists(tileset)) {
diff --git 
a/baremaps-testing/src/main/java/org/apache/baremaps/testing/GeometryAssertions.java
 
b/baremaps-testing/src/main/java/org/apache/baremaps/testing/GeometryAssertions.java
index 4b9e2ed1..e42b3bda 100644
--- 
a/baremaps-testing/src/main/java/org/apache/baremaps/testing/GeometryAssertions.java
+++ 
b/baremaps-testing/src/main/java/org/apache/baremaps/testing/GeometryAssertions.java
@@ -23,15 +23,19 @@ import 
org.locationtech.jts.precision.GeometryPrecisionReducer;
 
 public class GeometryAssertions {
 
+  private static void throwAssertionError(Object expected, Object actual) {
+    throw new AssertionError("Expected " + expected + " but was " + actual);
+  }
+
   public static void assertGeometryEquals(Geometry expected, Geometry actual) {
     if (expected == null && actual == null) {
       return;
     }
     if (expected == null || actual == null) {
-      throw new AssertionError("Expected " + expected + " but was " + actual);
+      throwAssertionError(expected, actual);
     }
     if (!expected.equalsExact(actual)) {
-      throw new AssertionError("Expected " + expected + " but was " + actual);
+      throwAssertionError(expected, actual);
     }
   }
 
@@ -40,7 +44,7 @@ public class GeometryAssertions {
       return;
     }
     if (expected == null || actual == null) {
-      throw new AssertionError("Expected " + expected + " but was " + actual);
+      throwAssertionError(expected, actual);
     }
     PrecisionModel precisionModel = new PrecisionModel(tolerance);
     GeometryPrecisionReducer reducer = new 
GeometryPrecisionReducer(precisionModel);

Reply via email to