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/11/13 13:57:54 UTC

(incubator-baremaps) branch workflow created (now b71a3db3)

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

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


      at b71a3db3 Move the type name in the sub classes

This branch includes the following new commits:

     new cb332fc1 Improve workflow and replace records by classes
     new b71a3db3 Move the type name in the sub classes

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(incubator-baremaps) 02/02: Move the type name in the sub classes

Posted by bc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b71a3db35b3613fc43aa00f68db590a8ca3a0414
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Mon Nov 13 14:57:42 2023 +0100

    Move the type name in the sub classes
---
 .../java/org/apache/baremaps/workflow/Task.java    | 22 ----------------------
 .../tasks/CreateGeocoderOpenStreetMap.java         |  2 ++
 .../workflow/tasks/CreateGeonamesIndex.java        |  2 ++
 .../baremaps/workflow/tasks/CreateIplocIndex.java  |  2 ++
 .../baremaps/workflow/tasks/DecompressBZip2.java   |  2 ++
 .../baremaps/workflow/tasks/DecompressFile.java    |  2 ++
 .../baremaps/workflow/tasks/DownloadUrl.java       |  2 ++
 .../baremaps/workflow/tasks/ExecuteCommand.java    |  2 ++
 .../apache/baremaps/workflow/tasks/ExecuteSql.java |  2 ++
 .../baremaps/workflow/tasks/ExecuteSqlScript.java  |  2 ++
 .../baremaps/workflow/tasks/ExportVectorTiles.java |  2 ++
 .../workflow/tasks/ImportDaylightFeatures.java     |  2 ++
 .../workflow/tasks/ImportDaylightTranslations.java |  2 ++
 .../baremaps/workflow/tasks/ImportGeoPackage.java  |  2 ++
 .../baremaps/workflow/tasks/ImportOsmOsc.java      |  2 ++
 .../baremaps/workflow/tasks/ImportOsmPbf.java      |  2 ++
 .../baremaps/workflow/tasks/ImportShapefile.java   |  2 ++
 .../apache/baremaps/workflow/tasks/LogMessage.java |  2 ++
 .../apache/baremaps/workflow/tasks/UngzipFile.java |  2 ++
 .../apache/baremaps/workflow/tasks/UnzipFile.java  |  2 ++
 .../baremaps/workflow/tasks/UpdateOsmDatabase.java |  2 ++
 21 files changed, 40 insertions(+), 22 deletions(-)

diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/Task.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/Task.java
index 06fdad9e..68e36443 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/Task.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/Task.java
@@ -20,7 +20,6 @@ package org.apache.baremaps.workflow;
 
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -32,27 +31,6 @@ import org.apache.baremaps.workflow.tasks.*;
 @JsonSerialize
 @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
 @JsonTypeInfo(use = Id.NAME, property = "type")
-@JsonSubTypes({@JsonSubTypes.Type(value = DownloadUrl.class, name = "DownloadUrl"),
-    @JsonSubTypes.Type(value = ExecuteCommand.class, name = "ExecuteCommand"),
-    @JsonSubTypes.Type(value = ExecuteSql.class, name = "ExecuteSql"),
-    @JsonSubTypes.Type(value = ExecuteSqlScript.class, name = "ExecuteSqlScript"),
-    @JsonSubTypes.Type(value = ExportVectorTiles.class, name = "ExportVectorTiles"),
-    @JsonSubTypes.Type(value = ImportGeoPackage.class, name = "ImportGeoPackage"),
-    @JsonSubTypes.Type(value = ImportOsmPbf.class, name = "ImportOsmPbf"),
-    @JsonSubTypes.Type(value = ImportOsmOsc.class, name = "ImportOsmOsc"),
-    @JsonSubTypes.Type(value = ImportShapefile.class, name = "ImportShapefile"),
-    @JsonSubTypes.Type(value = LogMessage.class, name = "LogMessage"),
-    @JsonSubTypes.Type(value = UnzipFile.class, name = "UnzipFile"),
-    @JsonSubTypes.Type(value = UngzipFile.class, name = "UngzipFile"),
-    @JsonSubTypes.Type(value = DecompressBZip2.class, name = "DecompressBZip2"),
-    @JsonSubTypes.Type(value = DecompressFile.class, name = "DecompressFile"),
-    @JsonSubTypes.Type(value = UpdateOsmDatabase.class, name = "UpdateOsmDatabase"),
-    @JsonSubTypes.Type(value = CreateGeonamesIndex.class, name = "CreateGeonamesIndex"),
-    @JsonSubTypes.Type(value = CreateIplocIndex.class, name = "CreateIplocIndex"),
-    @JsonSubTypes.Type(value = ImportDaylightTranslations.class,
-        name = "ImportDaylightTranslations"),
-    @JsonSubTypes.Type(value = ImportDaylightFeatures.class, name = "ImportDaylightFeatures")
-})
 public interface Task {
 
   /**
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
index 41f72d65..81691994 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -51,6 +52,7 @@ import org.slf4j.LoggerFactory;
  *
  * @see org.apache.baremaps.geocoderosm
  */
+@JsonTypeName("CreateGeocoderOpenStreetMap")
 public class CreateGeocoderOpenStreetMap implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(CreateGeocoderOpenStreetMap.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java
index 3c4d974d..884c39ab 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -35,6 +36,7 @@ import org.slf4j.LoggerFactory;
 /**
  * A task that creates a geonames index.
  */
+@JsonTypeName("CreateGeonamesIndex")
 public class CreateGeonamesIndex implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(CreateGeonamesIndex.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java
index 9ae4fe6f..a3da337a 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,6 +37,7 @@ import org.slf4j.LoggerFactory;
 import org.sqlite.SQLiteConfig;
 import org.sqlite.SQLiteDataSource;
 
+@JsonTypeName("CreateIplocIndex")
 public class CreateIplocIndex implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(CreateIplocIndex.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java
index 9217f077..ef17fe00 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.BufferedInputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -28,6 +29,7 @@ import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("DecompressBZip2")
 public class DecompressBZip2 implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(DecompressBZip2.class);
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 2551389a..4d991077 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
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -32,6 +33,7 @@ import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("DecompressFile")
 public class DecompressFile implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(DecompressFile.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java
index 1955fbfb..3b7bd5b6 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.IOException;
 import java.net.HttpURLConnection;
 import java.net.URL;
@@ -29,6 +30,7 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("DownloadUrl")
 public class DownloadUrl implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(DownloadUrl.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java
index 4c21502c..6ccd6ddb 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java
@@ -17,11 +17,13 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ExecuteCommand")
 public class ExecuteCommand implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ExecuteCommand.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
index 12c35844..f405250c 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.sql.SQLException;
@@ -29,6 +30,7 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ExecuteSql")
 public class ExecuteSql implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ExecuteSql.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
index 432d9ef9..e8b95e82 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.sql.SQLException;
@@ -26,6 +27,7 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ExecuteSqlScript")
 public class ExecuteSqlScript implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ExecuteSqlScript.class);
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 8437acbf..cf6c7202 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
@@ -19,6 +19,7 @@ package org.apache.baremaps.workflow.tasks;
 
 import static org.apache.baremaps.utils.ObjectMapperUtils.objectMapper;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.IOException;
@@ -43,6 +44,7 @@ import org.locationtech.jts.geom.Envelope;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ExportVectorTiles")
 public class ExportVectorTiles implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ExportVectorTiles.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java
index 495d15c3..ba00a255 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java
@@ -18,6 +18,7 @@
 package org.apache.baremaps.workflow.tasks;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.nio.file.Path;
 import java.util.HashMap;
@@ -31,6 +32,7 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ImportDaylightFeatures")
 public class ImportDaylightFeatures implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportDaylightFeatures.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java
index 63b4a013..dc6dc619 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.HashMap;
@@ -29,6 +30,7 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ImportDaylightTranslations")
 public class ImportDaylightTranslations implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportDaylightTranslations.class);
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 47713383..882f8548 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
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.nio.file.Path;
 import org.apache.baremaps.database.schema.DataTableAdapter;
 import org.apache.baremaps.database.schema.DataTableGeometryTransformer;
@@ -29,6 +30,7 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ImportGeoPackage")
 public class ImportGeoPackage implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportGeoPackage.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java
index a13f7c38..b48e54d4 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java
@@ -19,6 +19,7 @@ package org.apache.baremaps.workflow.tasks;
 
 import static org.apache.baremaps.stream.ConsumerUtils.consumeThenReturn;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.BufferedInputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -41,6 +42,7 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ImportOsmOsc")
 public class ImportOsmOsc implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportOsmOsc.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java
index 4cf69326..8a14d78c 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -46,6 +47,7 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ImportOsmPbf")
 public class ImportOsmPbf implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportOsmPbf.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
index 693f9c4c..5a68ce03 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.nio.file.Path;
 import org.apache.baremaps.database.schema.DataTableAdapter;
 import org.apache.baremaps.database.schema.DataTableGeometryTransformer;
@@ -29,6 +30,7 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("ImportShapefile")
 public class ImportShapefile implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportShapefile.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java
index d548dbcd..f57387bd 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java
@@ -17,11 +17,13 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("LogMessage")
 public class LogMessage implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(LogMessage.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java
index 40935dcf..cd9d3f8c 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.BufferedInputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -28,6 +29,7 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("UngzipFile")
 public class UngzipFile implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(UngzipFile.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java
index 4e45aafe..4c95f599 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.workflow.tasks;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.*;
 import java.nio.file.*;
 import java.util.zip.ZipFile;
@@ -25,6 +26,7 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("UnzipFile")
 public class UnzipFile implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(UnzipFile.class);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
index 24f835cc..e0dc25fc 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
@@ -19,6 +19,7 @@ package org.apache.baremaps.workflow.tasks;
 
 import static org.apache.baremaps.stream.ConsumerUtils.consumeThenReturn;
 
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import java.io.BufferedInputStream;
 import java.net.MalformedURLException;
 import java.net.URI;
@@ -49,6 +50,7 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JsonTypeName("UpdateOsmDatabase")
 public class UpdateOsmDatabase implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(UpdateOsmDatabase.class);


(incubator-baremaps) 01/02: Improve workflow and replace records by classes

Posted by bc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit cb332fc1ca98b5193b36ea4d65c6e866f3ab7700
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Mon Nov 13 14:46:21 2023 +0100

    Improve workflow and replace records by classes
---
 .../org/apache/baremaps/cli/workflow/Execute.java  |  2 +-
 .../apache/baremaps/workflow/WorkflowExecutor.java | 40 ++++++-----
 .../tasks/CreateGeocoderOpenStreetMap.java         | 33 ++++++++--
 .../workflow/tasks/CreateGeonamesIndex.java        | 31 ++++++++-
 .../baremaps/workflow/tasks/CreateIplocIndex.java  | 41 ++++++++++--
 .../baremaps/workflow/tasks/DecompressBZip2.java   | 32 ++++++++-
 .../baremaps/workflow/tasks/DecompressFile.java    | 42 +++++++++++-
 .../baremaps/workflow/tasks/DownloadUrl.java       | 44 ++++++++++++-
 .../baremaps/workflow/tasks/ExecuteCommand.java    | 18 ++++-
 .../apache/baremaps/workflow/tasks/ExecuteSql.java | 42 +++++++++++-
 .../baremaps/workflow/tasks/ExecuteSqlScript.java  | 35 +++++++++-
 .../baremaps/workflow/tasks/ExportVectorTiles.java | 68 +++++++++++++++++--
 .../workflow/tasks/ImportDaylightFeatures.java     | 35 +++++++++-
 .../workflow/tasks/ImportDaylightTranslations.java | 36 +++++++++-
 .../baremaps/workflow/tasks/ImportGeoPackage.java  | 52 ++++++++++++++-
 .../baremaps/workflow/tasks/ImportOsmOsc.java      | 66 +++++++++++++++++--
 .../baremaps/workflow/tasks/ImportOsmPbf.java      | 77 ++++++++++++++++++++--
 .../baremaps/workflow/tasks/ImportShapefile.java   | 52 ++++++++++++++-
 .../apache/baremaps/workflow/tasks/LogMessage.java | 20 +++++-
 .../apache/baremaps/workflow/tasks/UngzipFile.java | 30 ++++++++-
 .../apache/baremaps/workflow/tasks/UnzipFile.java  | 34 +++++++++-
 .../baremaps/workflow/tasks/UpdateOsmDatabase.java | 31 ++++++++-
 .../org/apache/baremaps/workflow/WorkflowTest.java | 10 +--
 23 files changed, 798 insertions(+), 73 deletions(-)

diff --git a/baremaps-cli/src/main/java/org/apache/baremaps/cli/workflow/Execute.java b/baremaps-cli/src/main/java/org/apache/baremaps/cli/workflow/Execute.java
index b19c70aa..6e67645e 100644
--- a/baremaps-cli/src/main/java/org/apache/baremaps/cli/workflow/Execute.java
+++ b/baremaps-cli/src/main/java/org/apache/baremaps/cli/workflow/Execute.java
@@ -50,7 +50,7 @@ public class Execute implements Callable<Integer> {
     var configReader = new ConfigReader();
     var workflow = mapper.readValue(configReader.read(file.toAbsolutePath()), Workflow.class);
     try (var executor = new WorkflowExecutor(workflow)) {
-      executor.execute().get();
+      executor.execute();
     }
     logger.info("Finished executing the workflow {}", file);
     return 0;
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 43de015c..6d37e270 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
@@ -105,17 +105,21 @@ public class WorkflowExecutor implements AutoCloseable {
   /**
    * Executes the workflow.
    */
-  public CompletableFuture<Void> execute() {
-    // Create futures for each end step
-    var endSteps = graph.nodes().stream()
-        .filter(this::isEndStep)
-        .map(this::getFutureStep)
-        .toArray(CompletableFuture[]::new);
-
-    // Create a future that logs the stepMeasures when all the futures are completed
-    var future = CompletableFuture.allOf(endSteps).thenRun(this::logStepMeasures);
-
-    return future;
+  public void execute() {
+    try {
+      // Create futures for each end step
+      var endSteps = graph.nodes().stream()
+          .filter(this::isEndStep)
+          .map(this::getStep)
+          .toArray(CompletableFuture[]::new);
+
+      // Wait for all the end steps to complete
+      CompletableFuture.allOf(endSteps).join();
+      logStepMeasures();
+
+    } catch (Exception e) {
+      logger.error("Error while executing the workflow", e);
+    }
   }
 
   /**
@@ -125,8 +129,8 @@ public class WorkflowExecutor implements AutoCloseable {
    * @param step the step id
    * @return the future step
    */
-  private CompletableFuture<Void> getFutureStep(String step) {
-    return futures.computeIfAbsent(step, this::createFutureStep);
+  private CompletableFuture<Void> getStep(String step) {
+    return futures.computeIfAbsent(step, this::createStep);
   }
 
   /**
@@ -135,10 +139,10 @@ public class WorkflowExecutor implements AutoCloseable {
    * @param stepId the step id
    * @return the future step
    */
-  private CompletableFuture<Void> createFutureStep(String stepId) {
+  private CompletableFuture<Void> createStep(String stepId) {
     // Initialize the future step with the previous future step
     // as it depends on its completion.
-    var future = getPreviousFutureStep(stepId);
+    var future = getPreviousStep(stepId);
 
     // Time the execution of the tasks
     var measures = new ArrayList<TaskMeasure>();
@@ -182,7 +186,7 @@ public class WorkflowExecutor implements AutoCloseable {
    * @param stepId the step id
    * @return the future step
    */
-  private CompletableFuture<Void> getPreviousFutureStep(String stepId) {
+  private CompletableFuture<Void> getPreviousStep(String stepId) {
     var predecessors = graph.predecessors(stepId).stream().toList();
 
     // If the step has no predecessor,
@@ -194,13 +198,13 @@ public class WorkflowExecutor implements AutoCloseable {
     // If the step has one predecessor,
     // return the future step associated to it.
     if (predecessors.size() == 1) {
-      return getFutureStep(predecessors.get(0));
+      return getStep(predecessors.get(0));
     }
 
     // If the step has multiple predecessors,
     // return a future step that completes when all the predecessors complete.
     var futurePredecessors = predecessors.stream()
-        .map(this::getFutureStep)
+        .map(this::getStep)
         .toArray(CompletableFuture[]::new);
     return CompletableFuture.allOf(futurePredecessors);
   }
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
index 055ed5cb..41f72d65 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeocoderOpenStreetMap.java
@@ -48,15 +48,40 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Experimental feature.
- * 
+ *
  * @see org.apache.baremaps.geocoderosm
  */
-public record CreateGeocoderOpenStreetMap(Path file, Path indexDirectory)
-    implements
-      Task {
+public class CreateGeocoderOpenStreetMap implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(CreateGeocoderOpenStreetMap.class);
 
+  private Path file;
+
+  private Path indexDirectory;
+
+  public CreateGeocoderOpenStreetMap() {}
+
+  public CreateGeocoderOpenStreetMap(Path file, Path indexDirectory) {
+    this.file = file;
+    this.indexDirectory = indexDirectory;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Path getIndexDirectory() {
+    return indexDirectory;
+  }
+
+  public void setIndexDirectory(Path indexDirectory) {
+    this.indexDirectory = indexDirectory;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
 
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java
index 79ed1158..3c4d974d 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateGeonamesIndex.java
@@ -35,10 +35,39 @@ import org.slf4j.LoggerFactory;
 /**
  * A task that creates a geonames index.
  */
-public record CreateGeonamesIndex(Path dataFile, Path indexDirectory) implements Task {
+public class CreateGeonamesIndex implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(CreateGeonamesIndex.class);
 
+  private Path dataFile;
+
+  private Path indexDirectory;
+
+  public CreateGeonamesIndex() {
+
+  }
+
+  public CreateGeonamesIndex(Path dataFile, Path indexDirectory) {
+    this.dataFile = dataFile;
+    this.indexDirectory = indexDirectory;
+  }
+
+  public Path getDataFile() {
+    return dataFile;
+  }
+
+  public void setDataFile(Path dataFile) {
+    this.dataFile = dataFile;
+  }
+
+  public Path getIndexDirectory() {
+    return indexDirectory;
+  }
+
+  public void setIndexDirectory(Path indexDirectory) {
+    this.indexDirectory = indexDirectory;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var directory = MMapDirectory.open(indexDirectory);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java
index bfbd5d9b..9ae4fe6f 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/CreateIplocIndex.java
@@ -36,13 +36,46 @@ import org.slf4j.LoggerFactory;
 import org.sqlite.SQLiteConfig;
 import org.sqlite.SQLiteDataSource;
 
-public record CreateIplocIndex(
-    Path geonamesIndexPath,
-    List<Path> nicPaths,
-    Path targetIplocIndexPath) implements Task {
+public class CreateIplocIndex implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(CreateIplocIndex.class);
 
+  private Path geonamesIndexPath;
+  private List<Path> nicPaths;
+  private Path targetIplocIndexPath;
+
+  public CreateIplocIndex() {}
+
+  public CreateIplocIndex(Path geonamesIndexPath, List<Path> nicPaths, Path targetIplocIndexPath) {
+    this.geonamesIndexPath = geonamesIndexPath;
+    this.nicPaths = nicPaths;
+    this.targetIplocIndexPath = targetIplocIndexPath;
+  }
+
+  public Path getGeonamesIndexPath() {
+    return geonamesIndexPath;
+  }
+
+  public void setGeonamesIndexPath(Path geonamesIndexPath) {
+    this.geonamesIndexPath = geonamesIndexPath;
+  }
+
+  public List<Path> getNicPaths() {
+    return nicPaths;
+  }
+
+  public void setNicPaths(List<Path> nicPaths) {
+    this.nicPaths = nicPaths;
+  }
+
+  public Path getTargetIplocIndexPath() {
+    return targetIplocIndexPath;
+  }
+
+  public void setTargetIplocIndexPath(Path targetIplocIndexPath) {
+    this.targetIplocIndexPath = targetIplocIndexPath;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     try (var directory = MMapDirectory.open(geonamesIndexPath);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java
index 9ed96630..9217f077 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DecompressBZip2.java
@@ -25,8 +25,38 @@ import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
 import org.apache.baremaps.workflow.WorkflowException;
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public record DecompressBZip2(Path source, Path target) implements Task {
+public class DecompressBZip2 implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(DecompressBZip2.class);
+
+  private Path source;
+  private Path target;
+
+  public DecompressBZip2() {}
+
+  public DecompressBZip2(Path source, Path target) {
+    this.source = source;
+    this.target = target;
+  }
+
+  public Path getSource() {
+    return source;
+  }
+
+  public void setSource(Path source) {
+    this.source = source;
+  }
+
+  public Path getTarget() {
+    return target;
+  }
+
+  public void setTarget(Path target) {
+    this.target = target;
+  }
 
   @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 4aa1bb38..2551389a 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
@@ -32,7 +32,9 @@ import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record DecompressFile(Path source, Path target, Compression compression) implements Task {
+public class DecompressFile implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(DecompressFile.class);
 
   public enum Compression {
     zip,
@@ -42,7 +44,43 @@ public record DecompressFile(Path source, Path target, Compression compression)
     bzip2;
   }
 
-  private static final Logger logger = LoggerFactory.getLogger(UngzipFile.class);
+  private Path source;
+
+  private Path target;
+
+  private Compression compression;
+
+  public DecompressFile() {}
+
+  public DecompressFile(Path source, Path target, Compression compression) {
+    this.source = source;
+    this.target = target;
+    this.compression = compression;
+  }
+
+  public Path getSource() {
+    return source;
+  }
+
+  public void setSource(Path source) {
+    this.source = source;
+  }
+
+  public Path getTarget() {
+    return target;
+  }
+
+  public void setTarget(Path target) {
+    this.target = target;
+  }
+
+  public Compression getCompression() {
+    return compression;
+  }
+
+  public void setCompression(Compression compression) {
+    this.compression = compression;
+  }
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java
index c6362ea5..1955fbfb 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/DownloadUrl.java
@@ -29,17 +29,57 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record DownloadUrl(String url, Path path, boolean replaceExisting) implements Task {
+public class DownloadUrl implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(DownloadUrl.class);
 
   private static final String PROTOCOL_FTP = "ftp";
+
   private static final String PROTOCOL_HTTP = "http";
+
   private static final String PROTOCOL_HTTPS = "https";
 
+  private String url;
+
+  private Path path;
+
+  private Boolean replaceExisting;
+
+  public DownloadUrl() {}
+
   public DownloadUrl(String url, Path path) {
     this(url, path, false);
   }
 
-  private static final Logger logger = LoggerFactory.getLogger(DownloadUrl.class);
+  public DownloadUrl(String url, Path path, boolean replaceExisting) {
+    this.url = url;
+    this.path = path;
+    this.replaceExisting = replaceExisting;
+  }
+
+  public String getUrl() {
+    return url;
+  }
+
+  public void setUrl(String url) {
+    this.url = url;
+  }
+
+  public Path getPath() {
+    return path;
+  }
+
+  public void setPath(Path path) {
+    this.path = path;
+  }
+
+  public Boolean getReplaceExisting() {
+    return replaceExisting;
+  }
+
+  public void setReplaceExisting(Boolean replaceExisting) {
+    this.replaceExisting = replaceExisting;
+  }
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java
index 4cb4218b..4c21502c 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteCommand.java
@@ -22,10 +22,26 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ExecuteCommand(String command) implements Task {
+public class ExecuteCommand implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ExecuteCommand.class);
 
+  private String command;
+
+  public ExecuteCommand() {}
+
+  public ExecuteCommand(String command) {
+    this.command = command;
+  }
+
+  public String getCommand() {
+    return command;
+  }
+
+  public void setCommand(String command) {
+    this.command = command;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     new ProcessBuilder().command("/bin/sh", "-c", command).start().waitFor();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
index 25058c8d..12c35844 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
@@ -29,10 +29,50 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ExecuteSql(Object database, Path file, boolean parallel) implements Task {
+public class ExecuteSql implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ExecuteSql.class);
 
+  private Object database;
+
+  private Path file;
+
+  private boolean parallel;
+
+  public ExecuteSql() {
+
+  }
+
+  public ExecuteSql(Object database, Path file, boolean parallel) {
+    this.database = database;
+    this.file = file;
+    this.parallel = parallel;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public boolean isParallel() {
+    return parallel;
+  }
+
+  public void setParallel(boolean parallel) {
+    this.parallel = parallel;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var script = clean(Files.readString(file));
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
index 50341a47..432d9ef9 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
@@ -23,8 +23,41 @@ import java.sql.SQLException;
 import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
 import org.apache.baremaps.workflow.WorkflowException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public record ExecuteSqlScript(Object database, Path file) implements Task {
+public class ExecuteSqlScript implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(ExecuteSqlScript.class);
+
+  private Object database;
+
+  private Path file;
+
+  public ExecuteSqlScript() {
+
+  }
+
+  public ExecuteSqlScript(Object database, Path file) {
+    this.database = database;
+    this.file = file;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
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 3f5e1854..8437acbf 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
@@ -43,19 +43,73 @@ import org.locationtech.jts.geom.Envelope;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ExportVectorTiles(
-    Path tileset,
-    Path repository,
-    int batchArraySize,
-    int batchArrayIndex,
-    Format format) implements Task {
+public class ExportVectorTiles implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(ExportVectorTiles.class);
 
   public enum Format {
     file,
     mbtiles
   }
 
-  private static final Logger logger = LoggerFactory.getLogger(ExportVectorTiles.class);
+  private Path tileset;
+  private Path repository;
+  private Integer batchArraySize;
+  private Integer batchArrayIndex;
+  private Format format;
+
+  public ExportVectorTiles() {
+
+  }
+
+  public ExportVectorTiles(Path tileset, Path repository, Integer batchArraySize,
+      Integer batchArrayIndex, Format format) {
+    this.tileset = tileset;
+    this.repository = repository;
+    this.batchArraySize = batchArraySize;
+    this.batchArrayIndex = batchArrayIndex;
+    this.format = format;
+  }
+
+  public Path getTileset() {
+    return tileset;
+  }
+
+  public void setTileset(Path tileset) {
+    this.tileset = tileset;
+  }
+
+  public Path getRepository() {
+    return repository;
+  }
+
+  public void setRepository(Path repository) {
+    this.repository = repository;
+  }
+
+  public Integer getBatchArraySize() {
+    return batchArraySize;
+  }
+
+  public void setBatchArraySize(Integer batchArraySize) {
+    this.batchArraySize = batchArraySize;
+  }
+
+  public Integer getBatchArrayIndex() {
+    return batchArrayIndex;
+  }
+
+  public void setBatchArrayIndex(Integer batchArrayIndex) {
+    this.batchArrayIndex = batchArrayIndex;
+  }
+
+  public Format getFormat() {
+    return format;
+  }
+
+  public void setFormat(Format format) {
+    this.format = format;
+  }
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java
index 8422d8fc..495d15c3 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightFeatures.java
@@ -28,8 +28,12 @@ import org.apache.baremaps.openstreetmap.postgres.PostgresRelationRepository;
 import org.apache.baremaps.openstreetmap.postgres.PostgresWayRepository;
 import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public record ImportDaylightFeatures(Path file, Object database) implements Task {
+public class ImportDaylightFeatures implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(ImportDaylightFeatures.class);
 
   record Feature(
       @JsonProperty("osm_type") String type,
@@ -39,6 +43,35 @@ public record ImportDaylightFeatures(Path file, Object database) implements Task
       @JsonProperty("category") String category) {
   }
 
+  private Path file;
+
+  private Object database;
+
+  public ImportDaylightFeatures() {
+
+  }
+
+  public ImportDaylightFeatures(Path file, Object database) {
+    this.file = file;
+    this.database = database;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var datasource = context.getDataSource(database);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java
index c5e9d86a..63b4a013 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportDaylightTranslations.java
@@ -26,8 +26,12 @@ import org.apache.baremaps.openstreetmap.postgres.PostgresRelationRepository;
 import org.apache.baremaps.openstreetmap.postgres.PostgresWayRepository;
 import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public record ImportDaylightTranslations(Path file, Object database) implements Task {
+public class ImportDaylightTranslations implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(ImportDaylightTranslations.class);
 
   record Group(String type, Long id, String name) {
 
@@ -50,6 +54,36 @@ public record ImportDaylightTranslations(Path file, Object database) implements
     }
   }
 
+
+  private Path file;
+
+  private Object database;
+
+  public ImportDaylightTranslations() {
+
+  }
+
+  public ImportDaylightTranslations(Path file, Object database) {
+    this.file = file;
+    this.database = database;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var datasource = context.getDataSource(database);
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 a8a6b52c..47713383 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
@@ -29,12 +29,58 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ImportGeoPackage(Path file, Object database, Integer sourceSRID, Integer targetSRID)
-    implements
-      Task {
+public class ImportGeoPackage implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportGeoPackage.class);
 
+  private Path file;
+  private Object database;
+  private Integer sourceSRID;
+  private Integer targetSRID;
+
+  public ImportGeoPackage() {
+
+  }
+
+  public ImportGeoPackage(Path file, Object database, Integer sourceSRID, Integer targetSRID) {
+    this.file = file;
+    this.database = database;
+    this.sourceSRID = sourceSRID;
+    this.targetSRID = targetSRID;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
+  public Integer getSourceSRID() {
+    return sourceSRID;
+  }
+
+  public void setSourceSRID(Integer sourceSRID) {
+    this.sourceSRID = sourceSRID;
+  }
+
+  public Integer getTargetSRID() {
+    return targetSRID;
+  }
+
+  public void setTargetSRID(Integer targetSRID) {
+    this.targetSRID = targetSRID;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var path = file.toAbsolutePath();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java
index 84eef9ee..a13f7c38 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmOsc.java
@@ -41,15 +41,69 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ImportOsmOsc(
-    Path file,
-    Path cache,
-    Object database,
-    Integer srid,
-    Compression compression) implements Task {
+public class ImportOsmOsc implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportOsmOsc.class);
 
+  private Path file;
+  private Path cache;
+  private Object database;
+  private Integer srid;
+  private Compression compression;
+
+  public ImportOsmOsc() {
+
+  }
+
+  public ImportOsmOsc(Path file, Path cache, Object database, Integer srid,
+      Compression compression) {
+    this.file = file;
+    this.cache = cache;
+    this.database = database;
+    this.srid = srid;
+    this.compression = compression;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Path getCache() {
+    return cache;
+  }
+
+  public void setCache(Path cache) {
+    this.cache = cache;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
+  public Integer getSrid() {
+    return srid;
+  }
+
+  public void setSrid(Integer srid) {
+    this.srid = srid;
+  }
+
+  public Compression getCompression() {
+    return compression;
+  }
+
+  public void setCompression(Compression compression) {
+    this.compression = compression;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var datasource = context.getDataSource(database);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java
index 499d244f..4cf69326 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOsmPbf.java
@@ -46,16 +46,79 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ImportOsmPbf(
-    Path file,
-    Path cache,
-    Boolean cleanCache,
-    Object database,
-    Integer databaseSrid,
-    Boolean replaceExisting) implements Task {
+public class ImportOsmPbf implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportOsmPbf.class);
 
+  private Path file;
+  private Path cache;
+  private Boolean cleanCache;
+  private Object database;
+  private Integer databaseSrid;
+  private Boolean replaceExisting;
+
+  public ImportOsmPbf() {
+
+  }
+
+  public ImportOsmPbf(Path file, Path cache, Boolean cleanCache, Object database,
+      Integer databaseSrid, Boolean replaceExisting) {
+    this.file = file;
+    this.cache = cache;
+    this.cleanCache = cleanCache;
+    this.database = database;
+    this.databaseSrid = databaseSrid;
+    this.replaceExisting = replaceExisting;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Path getCache() {
+    return cache;
+  }
+
+  public void setCache(Path cache) {
+    this.cache = cache;
+  }
+
+  public Boolean getCleanCache() {
+    return cleanCache;
+  }
+
+  public void setCleanCache(Boolean cleanCache) {
+    this.cleanCache = cleanCache;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
+  public Integer getDatabaseSrid() {
+    return databaseSrid;
+  }
+
+  public void setDatabaseSrid(Integer databaseSrid) {
+    this.databaseSrid = databaseSrid;
+  }
+
+  public Boolean getReplaceExisting() {
+    return replaceExisting;
+  }
+
+  public void setReplaceExisting(Boolean replaceExisting) {
+    this.replaceExisting = replaceExisting;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var dataSource = context.getDataSource(database);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
index b37f56b7..693f9c4c 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
@@ -29,12 +29,58 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ImportShapefile(Path file, Object database, Integer sourceSRID, Integer targetSRID)
-    implements
-      Task {
+public class ImportShapefile implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(ImportShapefile.class);
 
+  private Path file;
+  private Object database;
+  private Integer sourceSRID;
+  private Integer targetSRID;
+
+  public ImportShapefile() {
+
+  }
+
+  public ImportShapefile(Path file, Object database, Integer sourceSRID, Integer targetSRID) {
+    this.file = file;
+    this.database = database;
+    this.sourceSRID = sourceSRID;
+    this.targetSRID = targetSRID;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
+  public Integer getSourceSRID() {
+    return sourceSRID;
+  }
+
+  public void setSourceSRID(Integer sourceSRID) {
+    this.sourceSRID = sourceSRID;
+  }
+
+  public Integer getTargetSRID() {
+    return targetSRID;
+  }
+
+  public void setTargetSRID(Integer targetSRID) {
+    this.targetSRID = targetSRID;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var path = file.toAbsolutePath();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java
index a3f6b852..d548dbcd 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/LogMessage.java
@@ -22,10 +22,28 @@ import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record LogMessage(String message) implements Task {
+public class LogMessage implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(LogMessage.class);
 
+  private String message;
+
+  public LogMessage() {
+
+  }
+
+  public LogMessage(String message) {
+    this.message = message;
+  }
+
+  public String getMessage() {
+    return message;
+  }
+
+  public void setMessage(String message) {
+    this.message = message;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     logger.info(message);
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java
index d55d7662..40935dcf 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UngzipFile.java
@@ -28,10 +28,38 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record UngzipFile(Path file, Path directory) implements Task {
+public class UngzipFile implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(UngzipFile.class);
 
+  private Path file;
+  private Path directory;
+
+  public UngzipFile() {
+
+  }
+
+  public UngzipFile(Path file, Path directory) {
+    this.file = file;
+    this.directory = directory;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Path getDirectory() {
+    return directory;
+  }
+
+  public void setDirectory(Path directory) {
+    this.directory = directory;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var filePath = file.toAbsolutePath();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java
index dc89d9c5..4e45aafe 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UnzipFile.java
@@ -22,8 +22,40 @@ import java.nio.file.*;
 import java.util.zip.ZipFile;
 import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public record UnzipFile(Path file, Path directory) implements Task {
+public class UnzipFile implements Task {
+
+  private static final Logger logger = LoggerFactory.getLogger(UnzipFile.class);
+
+  private Path file;
+  private Path directory;
+
+  public UnzipFile() {
+
+  }
+
+  public UnzipFile(Path file, Path directory) {
+    this.file = file;
+    this.directory = directory;
+  }
+
+  public Path getFile() {
+    return file;
+  }
+
+  public void setFile(Path file) {
+    this.file = file;
+  }
+
+  public Path getDirectory() {
+    return directory;
+  }
+
+  public void setDirectory(Path directory) {
+    this.directory = directory;
+  }
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
index 0b195a27..24f835cc 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOsmDatabase.java
@@ -49,10 +49,39 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record UpdateOsmDatabase(Object database, Integer databaseSrid) implements Task {
+public class UpdateOsmDatabase implements Task {
 
   private static final Logger logger = LoggerFactory.getLogger(UpdateOsmDatabase.class);
 
+  private Object database;
+
+  private Integer databaseSrid;
+
+  public UpdateOsmDatabase() {
+
+  }
+
+  public UpdateOsmDatabase(Object database, Integer databaseSrid) {
+    this.database = database;
+    this.databaseSrid = databaseSrid;
+  }
+
+  public Object getDatabase() {
+    return database;
+  }
+
+  public void setDatabase(Object database) {
+    this.database = database;
+  }
+
+  public Integer getDatabaseSrid() {
+    return databaseSrid;
+  }
+
+  public void setDatabaseSrid(Integer databaseSrid) {
+    this.databaseSrid = databaseSrid;
+  }
+
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var datasource = context.getDataSource(database);
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 4fb5b32d..d52a27b6 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
@@ -43,7 +43,7 @@ class WorkflowTest extends PostgresContainerTest {
         new ImportGeoPackage(Paths.get("natural_earth_vector/packages/natural_earth_vector.gpkg"),
             jdbcUrl(),
             4326, 3857)))));
-    new WorkflowExecutor(workflow).execute().join();
+    new WorkflowExecutor(workflow).execute();
   }
 
   @Test
@@ -58,7 +58,7 @@ class WorkflowTest extends PostgresContainerTest {
             new ImportShapefile(Paths.get("coastlines-split-4326/coastlines-split-4326/lines.shp"),
                 jdbcUrl(),
                 4326, 3857)))));
-    new WorkflowExecutor(workflow).execute().join();
+    new WorkflowExecutor(workflow).execute();
   }
 
   @Test
@@ -76,7 +76,7 @@ class WorkflowTest extends PostgresContainerTest {
                 "simplified-water-polygons-split-3857/simplified-water-polygons-split-3857/simplified_water_polygons.shp"),
             "jdbc:postgresql://localhost:5432/baremaps?&user=baremaps&password=baremaps", 3857,
             3857)))));
-    new WorkflowExecutor(workflow).execute().join();
+    new WorkflowExecutor(workflow).execute();
   }
 
   @Test
@@ -86,7 +86,7 @@ class WorkflowTest extends PostgresContainerTest {
         new DownloadUrl("https://naciscdn.org/naturalearth/packages/natural_earth_vector.gpkg.zip",
             Paths.get("downloads/import_db.gpkg")),
         new ImportShapefile(Paths.get("downloads/import_db.gpkg"), jdbcUrl(), 4326, 3857)))));
-    new WorkflowExecutor(workflow).execute().join();
+    new WorkflowExecutor(workflow).execute();
   }
 
   @Test
@@ -122,6 +122,6 @@ class WorkflowTest extends PostgresContainerTest {
                 Paths.get(
                     "archives/simplified-water-polygons-split-3857/simplified_water_polygons.shp"),
                 jdbcUrl(), 3857, 3857)))));
-    new WorkflowExecutor(workflow).execute().join();
+    new WorkflowExecutor(workflow).execute();
   }
 }