From 30f548096b7ea557b15197d433ecabc25e93acf5 Mon Sep 17 00:00:00 2001 From: Arndt Brenschede Date: Sun, 9 Jul 2023 14:48:09 +0200 Subject: [PATCH] changed db-tag-processing to csv-file --- .../mapcreator/DatabasePseudoTagProvider.java | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/DatabasePseudoTagProvider.java b/brouter-map-creator/src/main/java/btools/mapcreator/DatabasePseudoTagProvider.java index 716af73..2e730c4 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/DatabasePseudoTagProvider.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/DatabasePseudoTagProvider.java @@ -15,9 +15,10 @@ import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.StringTokenizer; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; @@ -34,7 +35,6 @@ public class DatabasePseudoTagProvider { FrozenLongMap> dbData; public static void main(String[] args) { - String jdbcurl = args[0]; String filename = args[1]; @@ -108,14 +108,14 @@ public class DatabasePseudoTagProvider { if (line == null) { break; } - StringTokenizer tk = new StringTokenizer(line, ";"); - long osm_id = Long.parseLong(tk.nextToken()); + List tokens = tokenize(line); + long osm_id = Long.parseLong(tokens.get(0)); Map row = new HashMap<>(5); - addTag(row, tk, "estimated_noise_class"); - addTag(row, tk, "estimated_river_class"); - addTag(row, tk, "estimated_forest_class"); - addTag(row, tk, "estimated_town_class"); - addTag(row, tk, "estimated_traffic_class"); + addTag(row, tokens.get(1), "estimated_noise_class"); + addTag(row, tokens.get(2), "estimated_river_class"); + addTag(row, tokens.get(3), "estimated_forest_class"); + addTag(row, tokens.get(4), "estimated_town_class"); + addTag(row, tokens.get(5), "estimated_traffic_class"); // apply the instance-unifier for the row-map Map knownRow = mapUnifier.get(row); @@ -140,13 +140,28 @@ public class DatabasePseudoTagProvider { } } - private static void addTag(Map row, StringTokenizer tk, String name) { - if (tk.hasMoreTokens()) { - String v = tk.nextToken(); - if (v != null && !v.isEmpty()) { - row.put(name, v); + // use own tokenizer as String.split, StringTokenizer + // etc. have issues with empty elements + private List tokenize(String s) { + List l = new ArrayList<>(); + StringBuilder sb = new StringBuilder(); + for(int i=0; i row, String s, String name) { + if (!s.isEmpty()) { + row.put(name, s); + } } public void addTags(long osm_id, Map map) { @@ -179,4 +194,6 @@ public class DatabasePseudoTagProvider { pseudoTagsFound.put(key, cnt + 1L); } } + + }