From 018806d2b6d24d3522b186b1f59b695785277035 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Thu, 22 Feb 2024 16:33:24 +0100 Subject: [PATCH 01/10] feat: Add Hamburg OSM mapper --- .../tagmapping/HamburgMapper.java | 32 +++++++++++++ .../tagmapping/OsmTagMapperSource.java | 2 + .../tagmapping/HamburgMapperTest.java | 48 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java create mode 100644 src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java diff --git a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java new file mode 100644 index 00000000000..ae6ba260cd8 --- /dev/null +++ b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java @@ -0,0 +1,32 @@ +package org.opentripplanner.openstreetmap.tagmapping; + +import org.opentripplanner.openstreetmap.model.OSMWithTags; + +/** + * Modified mapper to allow through traffic for combination access=customers and customers=HVV. + * + * @see GermanyMapper + * @see OsmTagMapper + * @see DefaultMapper + */ +public class HamburgMapper extends GermanyMapper { + + @Override + public boolean isGeneralNoThroughTraffic(OSMWithTags way) { + String access = way.getTag("access"); + boolean isNoThroughTraffic = doesTagValueDisallowThroughTraffic(access); + + if (isNoThroughTraffic && way.hasTag("customers")) { + String customers = way.getTag("customers"); + return !isAllowedThroughTrafficForHVV(access, customers); + } + + return isNoThroughTraffic; + } + + private boolean isAllowedThroughTrafficForHVV(String access, String customers) { + boolean isAccessCustomers = access.equals("customers"); + boolean isHVV = customers.equals("HVV"); + return isAccessCustomers && isHVV; + } +} diff --git a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/OsmTagMapperSource.java b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/OsmTagMapperSource.java index 6ed4a701c30..d430ad05f7d 100644 --- a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/OsmTagMapperSource.java +++ b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/OsmTagMapperSource.java @@ -10,6 +10,7 @@ public enum OsmTagMapperSource { UK, FINLAND, GERMANY, + HAMBURG, ATLANTA, HOUSTON, PORTLAND, @@ -22,6 +23,7 @@ public OsmTagMapper getInstance() { case UK -> new UKMapper(); case FINLAND -> new FinlandMapper(); case GERMANY -> new GermanyMapper(); + case HAMBURG -> new HamburgMapper(); case ATLANTA -> new AtlantaMapper(); case HOUSTON -> new HoustonMapper(); case PORTLAND -> new PortlandMapper(); diff --git a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java new file mode 100644 index 00000000000..36096d9d698 --- /dev/null +++ b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java @@ -0,0 +1,48 @@ +package org.opentripplanner.openstreetmap.tagmapping; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.opentripplanner.openstreetmap.model.OSMWithTags; + +public class HamburgMapperTest { + + private HamburgMapper mapper; + + @BeforeEach + void createMapper() { + mapper = new HamburgMapper(); + } + + @Test + public void shouldAllowThroughTraffic_WhenAccessCustomers_AndCustomersHVV() { + OSMWithTags way = new OSMWithTags(); + way.addTag("access", "customers"); + way.addTag("customers", "HVV"); + + boolean generalNoThroughTraffic = mapper.isGeneralNoThroughTraffic(way); + + Assertions.assertFalse(generalNoThroughTraffic, + "access=customers and customers=hvv should not be considered through-traffic"); + } + + @ParameterizedTest + @CsvSource(value = { + "no", + "destination", + "private", + "customers", + "delivery" + }) + public void shouldDisallowThroughTraffic_WhenNoCustomersHVV(String access) { + OSMWithTags way = new OSMWithTags(); + way.addTag("access", access); + + boolean generalNoThroughTraffic = mapper.isGeneralNoThroughTraffic(way); + + Assertions.assertTrue(generalNoThroughTraffic, + "access={no, destination, private, customers, delivery} should be blocked in general"); + } +} From 2ccf86f3c0e9fb36ca085ca25f67554c26e9e55d Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Thu, 22 Feb 2024 17:03:40 +0100 Subject: [PATCH 02/10] style: Apply style improvements --- .../tagmapping/HamburgMapperTest.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java index 36096d9d698..f49771c26a5 100644 --- a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java +++ b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java @@ -24,25 +24,23 @@ public void shouldAllowThroughTraffic_WhenAccessCustomers_AndCustomersHVV() { boolean generalNoThroughTraffic = mapper.isGeneralNoThroughTraffic(way); - Assertions.assertFalse(generalNoThroughTraffic, - "access=customers and customers=hvv should not be considered through-traffic"); + Assertions.assertFalse( + generalNoThroughTraffic, + "access=customers and customers=hvv should not be considered through-traffic" + ); } @ParameterizedTest - @CsvSource(value = { - "no", - "destination", - "private", - "customers", - "delivery" - }) + @CsvSource(value = { "no", "destination", "private", "customers", "delivery" }) public void shouldDisallowThroughTraffic_WhenNoCustomersHVV(String access) { OSMWithTags way = new OSMWithTags(); way.addTag("access", access); boolean generalNoThroughTraffic = mapper.isGeneralNoThroughTraffic(way); - Assertions.assertTrue(generalNoThroughTraffic, - "access={no, destination, private, customers, delivery} should be blocked in general"); + Assertions.assertTrue( + generalNoThroughTraffic, + "access={no, destination, private, customers, delivery} should be blocked in general" + ); } } From 6df6a007a24399153e92a5752be88c1ab81bee00 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Thu, 22 Feb 2024 17:03:52 +0100 Subject: [PATCH 03/10] docs: Add enum option --- docs/BuildConfiguration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/BuildConfiguration.md b/docs/BuildConfiguration.md index 05da4cf4d0a..b2ab185ef97 100644 --- a/docs/BuildConfiguration.md +++ b/docs/BuildConfiguration.md @@ -945,7 +945,7 @@ the local filesystem. **Since version:** `2.2` ∙ **Type:** `enum` ∙ **Cardinality:** `Optional` ∙ **Default value:** `"default"` **Path:** /osm/[0] -**Enum values:** `default` | `norway` | `uk` | `finland` | `germany` | `atlanta` | `houston` | `portland` | `constant-speed-finland` +**Enum values:** `default` | `norway` | `uk` | `finland` | `germany` | `hamburg` | `atlanta` | `houston` | `portland` | `constant-speed-finland` The named set of mapping rules applied when parsing OSM tags. Overrides the value specified in `osmDefaults`. @@ -953,7 +953,7 @@ The named set of mapping rules applied when parsing OSM tags. Overrides the valu **Since version:** `2.2` ∙ **Type:** `enum` ∙ **Cardinality:** `Optional` ∙ **Default value:** `"default"` **Path:** /osmDefaults -**Enum values:** `default` | `norway` | `uk` | `finland` | `germany` | `atlanta` | `houston` | `portland` | `constant-speed-finland` +**Enum values:** `default` | `norway` | `uk` | `finland` | `germany` | `hamburg` | `atlanta` | `houston` | `portland` | `constant-speed-finland` The named set of mapping rules applied when parsing OSM tags. From c394161e5e24c5ec10e5f452f5723f86e1be1f0b Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Fri, 23 Feb 2024 14:06:40 +0100 Subject: [PATCH 04/10] refactor: Apply review suggestions --- .../openstreetmap/tagmapping/HamburgMapperTest.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java index f49771c26a5..0991decea46 100644 --- a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java +++ b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java @@ -1,10 +1,13 @@ package org.opentripplanner.openstreetmap.tagmapping; -import org.junit.jupiter.api.Assertions; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; import org.opentripplanner.openstreetmap.model.OSMWithTags; public class HamburgMapperTest { @@ -24,21 +27,21 @@ public void shouldAllowThroughTraffic_WhenAccessCustomers_AndCustomersHVV() { boolean generalNoThroughTraffic = mapper.isGeneralNoThroughTraffic(way); - Assertions.assertFalse( + assertFalse( generalNoThroughTraffic, "access=customers and customers=hvv should not be considered through-traffic" ); } @ParameterizedTest - @CsvSource(value = { "no", "destination", "private", "customers", "delivery" }) + @ValueSource(strings = { "no", "destination", "private", "customers", "delivery" }) public void shouldDisallowThroughTraffic_WhenNoCustomersHVV(String access) { OSMWithTags way = new OSMWithTags(); way.addTag("access", access); boolean generalNoThroughTraffic = mapper.isGeneralNoThroughTraffic(way); - Assertions.assertTrue( + assertTrue( generalNoThroughTraffic, "access={no, destination, private, customers, delivery} should be blocked in general" ); From cdcea7afcf98ffaf0ee7e92f84b9a366dc83e955 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Fri, 23 Feb 2024 14:27:37 +0100 Subject: [PATCH 05/10] refactor: Prevent NPE --- .../openstreetmap/tagmapping/HamburgMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java index ae6ba260cd8..789828e975c 100644 --- a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java +++ b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java @@ -25,8 +25,8 @@ public boolean isGeneralNoThroughTraffic(OSMWithTags way) { } private boolean isAllowedThroughTrafficForHVV(String access, String customers) { - boolean isAccessCustomers = access.equals("customers"); - boolean isHVV = customers.equals("HVV"); + boolean isAccessCustomers = "customers".equals(access); + boolean isHVV = "HVV".equals(customers); return isAccessCustomers && isHVV; } } From f41cc65831ea6e702a20c595397ff0532c80dc2a Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Fri, 23 Feb 2024 14:28:45 +0100 Subject: [PATCH 06/10] refactor: Remove obsolete import --- .../openstreetmap/tagmapping/HamburgMapperTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java index 0991decea46..029c1b7c662 100644 --- a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java +++ b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.ValueSource; import org.opentripplanner.openstreetmap.model.OSMWithTags; From 9d31f8baaa549a80e79cd3ae71e13c7daf355720 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Mon, 26 Feb 2024 10:17:16 +0100 Subject: [PATCH 07/10] refactor: Simplified code --- .../openstreetmap/tagmapping/HamburgMapper.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java index 789828e975c..5bcd4d23380 100644 --- a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java +++ b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java @@ -16,17 +16,6 @@ public boolean isGeneralNoThroughTraffic(OSMWithTags way) { String access = way.getTag("access"); boolean isNoThroughTraffic = doesTagValueDisallowThroughTraffic(access); - if (isNoThroughTraffic && way.hasTag("customers")) { - String customers = way.getTag("customers"); - return !isAllowedThroughTrafficForHVV(access, customers); - } - - return isNoThroughTraffic; - } - - private boolean isAllowedThroughTrafficForHVV(String access, String customers) { - boolean isAccessCustomers = "customers".equals(access); - boolean isHVV = "HVV".equals(customers); - return isAccessCustomers && isHVV; + return isNoThroughTraffic && !way.isTag("customers", "HVV"); } } From 507f76405bf6a223e0d1d003c12639701882ad05 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Tue, 27 Feb 2024 09:45:33 +0100 Subject: [PATCH 08/10] style: Improve wording --- .../openstreetmap/tagmapping/HamburgMapperTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java index 029c1b7c662..8e3dc9afc77 100644 --- a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java +++ b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java @@ -28,7 +28,7 @@ public void shouldAllowThroughTraffic_WhenAccessCustomers_AndCustomersHVV() { assertFalse( generalNoThroughTraffic, - "access=customers and customers=hvv should not be considered through-traffic" + "access=customers and customers=hvv should allow through-traffic" ); } From 78d916941229cc313452f5b77aba06602a50c2cb Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Wed, 28 Feb 2024 15:48:54 +0100 Subject: [PATCH 09/10] docs: Add info about maintainer --- .../openstreetmap/tagmapping/HamburgMapper.java | 2 ++ .../openstreetmap/tagmapping/HamburgMapperTest.java | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java index 5bcd4d23380..1c8b68d622d 100644 --- a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java +++ b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java @@ -8,6 +8,8 @@ * @see GermanyMapper * @see OsmTagMapper * @see DefaultMapper + * + * @author Maintained by HBT (geofox-team@hbt.de) */ public class HamburgMapper extends GermanyMapper { diff --git a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java index 8e3dc9afc77..1af3eefee18 100644 --- a/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java +++ b/src/test/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapperTest.java @@ -9,6 +9,9 @@ import org.junit.jupiter.params.provider.ValueSource; import org.opentripplanner.openstreetmap.model.OSMWithTags; +/** + * @author Maintained by HBT (geofox-team@hbt.de) + */ public class HamburgMapperTest { private HamburgMapper mapper; From b38259f95dc67aaad141acfb03a5a223c4de1246 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Wed, 28 Feb 2024 15:52:17 +0100 Subject: [PATCH 10/10] style: Fixed formatting --- .../opentripplanner/openstreetmap/tagmapping/HamburgMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java index 1c8b68d622d..f893fbb5519 100644 --- a/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java +++ b/src/main/java/org/opentripplanner/openstreetmap/tagmapping/HamburgMapper.java @@ -8,7 +8,7 @@ * @see GermanyMapper * @see OsmTagMapper * @see DefaultMapper - * + * * @author Maintained by HBT (geofox-team@hbt.de) */ public class HamburgMapper extends GermanyMapper {