From 3bf7ac0e7241eed80cb1d238e036d0b3e7fa63d8 Mon Sep 17 00:00:00 2001
From: kraleva <viktoriakraleva@gmail.com>
Date: Fri, 31 Mar 2023 16:44:26 +0200
Subject: [PATCH] cannot remove object from arraylist

---
 mapbuilder/src/main/java/map/builder/App.java |  1 +
 .../osm/OSMConnectedComponentParser.java      | 27 +++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/mapbuilder/src/main/java/map/builder/App.java b/mapbuilder/src/main/java/map/builder/App.java
index 86d03c8..b472731 100644
--- a/mapbuilder/src/main/java/map/builder/App.java
+++ b/mapbuilder/src/main/java/map/builder/App.java
@@ -65,6 +65,7 @@ public class App {
 
         // cleanup
         graph = null;
+        OSMConnectedComponentParser.cleanUp(roadNetworkBuilder, component);
 
         RoadNetwork roadNetwork = roadNetworkBuilder.build();
         System.out.println("Turn restrictions count: " + roadNetwork.getTurnRestrictionsCount());
diff --git a/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java b/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java
index 003ba3c..0632f01 100644
--- a/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java
+++ b/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java
@@ -1,5 +1,10 @@
 package map.builder.osm;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+
+import de.fuberlin.navigator.protos.map_builder.Node;
 import de.fuberlin.navigator.protos.map_builder.RoadNetwork;
 import de.fuberlin.navigator.protos.map_builder.Segment;
 import map.builder.utilities.ConnectedComponentGraph;
@@ -24,4 +29,26 @@ public class OSMConnectedComponentParser {
         }
     }
 
+    public static void cleanUp(RoadNetwork.Builder roadNetworkBuilder, ArrayList<Long> component) {
+        Map<Long, Node> nodesMap = roadNetworkBuilder.getNodesMap();
+        for (Iterator<Long> iterator = nodesMap.keySet().iterator(); iterator.hasNext();) {
+            Long key = iterator.next();
+            System.out.println(component.contains(key));
+            if (!component.contains(key)) {
+                iterator.remove();
+                ;
+            }
+        }
+        Map<Long, Segment> segmentsMap = roadNetworkBuilder.getSegmentsMap();
+        for (Iterator<Long> iterator = segmentsMap.keySet().iterator(); iterator.hasNext();) {
+            Long key = iterator.next();
+            Long startNodeID = segmentsMap.get(key).getStartNode();
+            Long endNodeID = segmentsMap.get(key).getEndNode();
+            if ((!component.contains(startNodeID)) && (!component.contains(endNodeID))) {
+                iterator.remove();
+                ;
+            }
+        }
+    }
+
 }
\ No newline at end of file
-- 
GitLab