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 <[email protected]>
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();
   }
 }


Reply via email to