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

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

commit 0b730ff44d609508cbf897d41055d641e652f0a9
Author: Bertil Chapuis <[email protected]>
AuthorDate: Wed Jun 12 23:49:26 2024 +0200

    Remove duplicate code
---
 .../workflow/tasks/ImportDaylightFeatures.java     | 60 ++++++++--------------
 1 file changed, 21 insertions(+), 39 deletions(-)

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 c5a1050b..50169bd2 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
@@ -24,9 +24,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.StringJoiner;
-import org.apache.baremaps.database.postgres.NodeRepository;
-import org.apache.baremaps.database.postgres.RelationRepository;
-import org.apache.baremaps.database.postgres.WayRepository;
+
+import org.apache.baremaps.database.postgres.*;
+import org.apache.baremaps.openstreetmap.model.Element;
 import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
 import org.slf4j.Logger;
@@ -55,7 +55,7 @@ public class ImportDaylightFeatures implements Task {
    * Constructs an {@code ImportDaylightFeatures}.
    */
   public ImportDaylightFeatures() {
-
+    // Default constructor
   }
 
   /**
@@ -75,11 +75,11 @@ public class ImportDaylightFeatures implements Task {
   @Override
   public void execute(WorkflowContext context) throws Exception {
     var datasource = context.getDataSource(database);
-
-    // Initialize the repositories
     var nodeRepository = new NodeRepository(datasource);
     var wayRepository = new WayRepository(datasource);
     var relationRepository = new RelationRepository(datasource);
+
+    // Initialize the repositories
     nodeRepository.create();
     wayRepository.create();
     relationRepository.create();
@@ -90,40 +90,22 @@ public class ImportDaylightFeatures implements Task {
     List<Feature> features = objectMapper.readValue(file.toFile(), javaType);
     for (var feature : features) {
       switch (feature.type()) {
-        case "node" -> {
-          var node = nodeRepository.get(feature.id());
-          if (node != null) {
-            var tags = new HashMap<>(feature.tags());
-            if (node.getTags() != null) {
-              tags.putAll(node.getTags());
-            }
-            node.setTags(tags);
-            nodeRepository.put(node);
-          }
-        }
-        case "way" -> {
-          var way = wayRepository.get(feature.id());
-          if (way != null) {
-            var tags = new HashMap<>(feature.tags());
-            if (way.getTags() != null) {
-              tags.putAll(way.getTags());
-            }
-            way.setTags(tags);
-            wayRepository.put(way);
-          }
-        }
-        case "relation" -> {
-          var relation = relationRepository.get(feature.id());
-          if (relation != null) {
-            var tags = new HashMap<>(feature.tags());
-            if (relation.getTags() != null) {
-              tags.putAll(relation.getTags());
-            }
-            relation.setTags(tags);
-            relationRepository.put(relation);
-          }
-        }
+        case "node" -> save(feature, nodeRepository);
+        case "way" -> save(feature, wayRepository);
+        case "relation" -> save(feature, relationRepository);
+      }
+    }
+  }
+
+  private <T extends Element> void save(Feature feature, Repository<Long, T> 
repository) throws RepositoryException {
+    var entity = repository.get(feature.id());
+    if (entity != null) {
+      var tags = new HashMap<>(feature.tags());
+      if (entity.getTags() != null) {
+        tags.putAll(entity.getTags());
       }
+      entity.setTags(tags);
+      repository.put(entity);
     }
   }
 

Reply via email to