From 8c4b2d9e5d13bbfc8924d4fc0465405ac8417ed9 Mon Sep 17 00:00:00 2001 From: ansons Date: Thu, 3 Oct 2024 21:56:57 -0400 Subject: [PATCH] Set permissionLabeler more cleanly --- .../com/conveyal/r5/streets/StreetLayer.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/conveyal/r5/streets/StreetLayer.java b/src/main/java/com/conveyal/r5/streets/StreetLayer.java index 2fbc3c709..4e31481ee 100644 --- a/src/main/java/com/conveyal/r5/streets/StreetLayer.java +++ b/src/main/java/com/conveyal/r5/streets/StreetLayer.java @@ -136,7 +136,7 @@ public class StreetLayer implements Serializable, Cloneable { // TODO these are only needed when building the network, should we really be keeping them here in the layer? // We should instead have a network builder that holds references to this transient state. Note initial // approach of specifying a TraversalPermissionLabeler in TransportNetworkConfig. - private transient TraversalPermissionLabeler permissionLabeler = new USTraversalPermissionLabeler(); + private transient TraversalPermissionLabeler permissionLabeler; private transient LevelOfTrafficStressLabeler stressLabeler = new LevelOfTrafficStressLabeler(); private transient TypeOfEdgeLabeler typeOfEdgeLabeler = new TypeOfEdgeLabeler(); private transient SpeedLabeler speedLabeler; @@ -209,15 +209,21 @@ public class StreetLayer implements Serializable, Cloneable { public StreetLayer() { speedLabeler = new SpeedLabeler(SpeedConfig.defaultConfig()); + permissionLabeler = new USTraversalPermissionLabeler(); } public StreetLayer(TransportNetworkConfig config) { this(); - if (config != null && config.traversalPermissionLabeler != null) { - // TODO cleaner mapping - if ("sidewalk".equals(config.traversalPermissionLabeler)) { - permissionLabeler = new SidewalkTraversalPermissionLabeler(); - } + if (config != null) { + permissionLabeler = switch (config.traversalPermissionLabeler) { + case "sidewalk" -> new SidewalkTraversalPermissionLabeler(); + case null -> new USTraversalPermissionLabeler(); + default -> throw new IllegalArgumentException( + "Unknown traversal permission labeler: " + config.traversalPermissionLabeler + ); + }; + } else { + permissionLabeler = new USTraversalPermissionLabeler(); } }