Skip to content

Commit bc77476

Browse files
PolyglotOpenstreetmapfloscher
authored andcommitted
Make the suitable ways in transport modes a static field
1 parent 3d3cc48 commit bc77476

File tree

5 files changed

+77
-80
lines changed

5 files changed

+77
-80
lines changed

src/main/java/org/openstreetmap/josm/plugins/pt_assistant/actions/routinghelper/BicycleTransportMode.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.openstreetmap.josm.plugins.pt_assistant.actions.routinghelper;
22

3-
import java.util.Arrays;
43
import java.util.List;
54
import java.util.Objects;
65
import java.util.Set;
76
import java.util.stream.Collectors;
7+
import java.util.stream.Stream;
88

99
import com.drew.lang.annotations.NotNull;
1010
import org.openstreetmap.josm.data.osm.IRelation;
@@ -18,24 +18,25 @@
1818
import org.openstreetmap.josm.tools.ImageProvider;
1919

2020
public class BicycleTransportMode implements ITransportMode {
21+
22+
private static final List<String> suitableHighwaysForBicycle = Stream.concat(
23+
// This list is ordered from most suitable to least suitable
24+
Stream.of("cycleway", "cyclestreet", "path", "residential", "unclassified", "service", "track", "living_street"),
25+
Stream.of("tertiary", "secondary", "primary", "trunk").flatMap(it -> Stream.of(it, it + "_link"))
26+
).collect(Collectors.toList());
27+
2128
@Override
2229
public boolean canTraverseWay(@NotNull final IWay<?> way, @NotNull final WayTraversalDirection direction) {
2330
final String onewayValue = way.get("oneway");
24-
List<String> majorHighways = Arrays.asList(
25-
"tertiary", "secondary", "primary", "trunk");
26-
majorHighways.forEach(v -> majorHighways.add(String.format("%s_link", v)));
27-
// This list is ordered from most suitable to least suitable
28-
List<String> suitableHighwaysForBicycle = Arrays.asList(
29-
"cycleway", "cyclestreet", "path", "residential", "unclassified", "service", "track", "living_street");
30-
suitableHighwaysForBicycle.addAll(majorHighways); // TODO do this only once when plugin starts
31-
return !way.hasTag("bicycle", "no") &&
32-
(way.hasTag("highway", suitableHighwaysForBicycle) ||
33-
way.hasTag("bicycle", "yes"))
34-
&& (
35-
onewayValue == null || "no".equals(way.get("oneway:bicycle")) ||
36-
("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD) ||
37-
("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
38-
);
31+
return
32+
!way.hasTag("bicycle", "no")
33+
&& (way.hasTag("highway", suitableHighwaysForBicycle) || way.hasTag("bicycle", "yes"))
34+
&& (
35+
onewayValue == null
36+
|| "no".equals(way.get("oneway:bicycle"))
37+
|| ("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD)
38+
|| ("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
39+
);
3940
}
4041

4142
@Override

src/main/java/org/openstreetmap/josm/plugins/pt_assistant/actions/routinghelper/BusTransportMode.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package org.openstreetmap.josm.plugins.pt_assistant.actions.routinghelper;
22

3-
import java.util.Arrays;
4-
import java.util.Collections;
53
import java.util.List;
64
import java.util.Objects;
75
import java.util.Set;
86
import java.util.stream.Collectors;
9-
10-
import javax.swing.Icon;
7+
import java.util.stream.Stream;
118

129
import com.drew.lang.annotations.NotNull;
1310
import org.openstreetmap.josm.data.osm.IRelation;
@@ -21,28 +18,30 @@
2118
import org.openstreetmap.josm.tools.ImageProvider;
2219

2320
public class BusTransportMode implements ITransportMode {
21+
22+
private static final List<String> suitableHighwaysForBus = Stream.concat(
23+
Stream.of("unclassified", "residential", "service", "living_street", "cyclestreet"),
24+
Stream.of("motorway", "trunk", "primary", "secondary", "tertiary").flatMap(it -> Stream.of(it, it + "_link"))
25+
).collect(Collectors.toList());
26+
2427
@Override
2528
public boolean canTraverseWay(@NotNull final IWay<?> way, @NotNull final WayTraversalDirection direction) {
2629
final String onewayValue = way.get("oneway");
27-
List<String> majorHighways = Arrays.asList(
28-
"motorway", "trunk", "primary", "secondary", "tertiary");
29-
majorHighways.forEach(v -> majorHighways.add(String.format("%s_link", v)));
30-
List<String> suitableHighwaysForBus = Arrays.asList(
31-
"unclassified", "residential", "service", "living_street", "cyclestreet");
32-
suitableHighwaysForBus.addAll(majorHighways); // TODO do this only once when plugin starts
33-
return (way.hasTag("highway", suitableHighwaysForBus) ||
34-
way.hasTag("psv", "yes") || way.hasTag ("bus", "yes"))
35-
&& (
36-
onewayValue == null || "no".equals(way.get("oneway:bus")) ||
37-
("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD) ||
38-
("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
30+
return (
31+
way.hasTag("highway", suitableHighwaysForBus)
32+
|| way.hasTag("psv", "yes") || way.hasTag ("bus", "yes")
33+
)
34+
&& (
35+
onewayValue == null
36+
|| "no".equals(way.get("oneway:bus"))
37+
|| ("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD)
38+
|| ("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
3939
);
4040
}
4141

4242
@Override
4343
public boolean canBeUsedForRelation(@NotNull final IRelation<?> relation) {
44-
return relation.hasTag("type", "route") && relation.hasTag("route",
45-
"bus", "coach", "minibus");
44+
return relation.hasTag("type", "route") && relation.hasTag("route", "bus", "coach", "minibus");
4645
}
4746

4847
@Override

src/main/java/org/openstreetmap/josm/plugins/pt_assistant/actions/routinghelper/HorseTransportMode.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.openstreetmap.josm.plugins.pt_assistant.actions.routinghelper;
22

3-
import java.util.Arrays;
43
import java.util.List;
54
import java.util.Objects;
65
import java.util.Set;
76
import java.util.stream.Collectors;
7+
import java.util.stream.Stream;
88

99
import com.drew.lang.annotations.NotNull;
1010
import org.openstreetmap.josm.data.osm.IRelation;
@@ -18,24 +18,27 @@
1818
import org.openstreetmap.josm.tools.ImageProvider;
1919

2020
public class HorseTransportMode implements ITransportMode {
21+
22+
private static final List<String> suitableHighwaysForHorseRiders = Stream.concat(
23+
// This list is ordered from most suitable to least suitable
24+
Stream.of(
25+
"bridleway", "pedestrian", "footway", "path", "track", "living_street", "residential",
26+
"unclassified", "cyclestreet", "service", "cycleway"
27+
),
28+
Stream.of("tertiary", "secondary", "primary", "trunk").flatMap(it -> Stream.of(it, it + "_link"))
29+
).collect(Collectors.toList());
30+
2131
@Override
2232
public boolean canTraverseWay(@NotNull final IWay<?> way, @NotNull final WayTraversalDirection direction) {
2333
final String onewayValue = way.get("oneway");
24-
List<String> majorHighways = Arrays.asList(
25-
"tertiary", "secondary", "primary", "trunk");
26-
majorHighways.forEach(v -> majorHighways.add(String.format("%s_link", v)));
27-
// This list is ordered from most suitable to least suitable
28-
List<String> suitableHighwaysForHorseRiders = Arrays.asList(
29-
"bridleway", "pedestrian", "footway", "path", "track", "living_street", "residential", "unclassified", "cyclestreet", "service", "cycleway");
30-
suitableHighwaysForHorseRiders.addAll(majorHighways); // TODO do this only once when plugin starts
31-
return !way.hasTag("horse", "no") &&
32-
(way.hasTag("highway", suitableHighwaysForHorseRiders) ||
33-
way.hasTag("horse", "yes"))
34-
&& (
35-
onewayValue == null ||
36-
("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD) ||
37-
("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
38-
);
34+
return
35+
!way.hasTag("horse", "no")
36+
&& (way.hasTag("highway", suitableHighwaysForHorseRiders) || way.hasTag("horse", "yes"))
37+
&& (
38+
onewayValue == null
39+
|| ("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD)
40+
|| ("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
41+
);
3942
}
4043

4144
@Override

src/main/java/org/openstreetmap/josm/plugins/pt_assistant/actions/routinghelper/PedestrianTransportMode.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package org.openstreetmap.josm.plugins.pt_assistant.actions.routinghelper;
22

3-
import java.util.Arrays;
43
import java.util.List;
54
import java.util.Objects;
65
import java.util.Set;
76
import java.util.stream.Collectors;
8-
9-
import javax.swing.Icon;
7+
import java.util.stream.Stream;
108

119
import com.drew.lang.annotations.NotNull;
1210
import org.openstreetmap.josm.data.osm.IRelation;
@@ -20,30 +18,34 @@
2018
import org.openstreetmap.josm.tools.ImageProvider;
2119

2220
public class PedestrianTransportMode implements ITransportMode {
21+
22+
private static final List<String> suitableHighwaysForPedestrians = Stream.concat(
23+
// This list is ordered from most suitable to least suitable
24+
Stream.of(
25+
"pedestrian", "footway", "path", "track", "living_street", "residential",
26+
"unclassified", "cyclestreet", "service", "cycleway", "bridleway"
27+
),
28+
Stream.of("tertiary", "secondary", "primary", "trunk").flatMap(it -> Stream.of(it, it + "_link"))
29+
).collect(Collectors.toList());
30+
2331
@Override
2432
public boolean canTraverseWay(@NotNull final IWay<?> way, @NotNull final WayTraversalDirection direction) {
2533
final String onewayValue = way.get("oneway");
26-
List<String> majorHighways = Arrays.asList(
27-
"tertiary", "secondary", "primary", "trunk");
28-
majorHighways.forEach(v -> majorHighways.add(String.format("%s_link", v)));
29-
// This list is ordered from most suitable to least suitable
30-
List<String> suitableHighwaysForPedestrians = Arrays.asList(
31-
"pedestrian", "footway", "path", "track", "living_street", "residential", "unclassified", "cyclestreet", "service", "cycleway", "bridleway");
32-
suitableHighwaysForPedestrians.addAll(majorHighways); // TODO do this only once when plugin starts
33-
return !way.hasTag("foot", "no") &&
34-
(way.hasTag("highway", suitableHighwaysForPedestrians) ||
35-
way.hasTag("foot", "yes"))
36-
&& (
37-
onewayValue == null || "no".equals(way.get("foot:backward")) || "no".equals(way.get("oneway:foot")) ||
38-
("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD) ||
39-
("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
40-
);
34+
return
35+
!way.hasTag("foot", "no")
36+
&& (way.hasTag("highway", suitableHighwaysForPedestrians) || way.hasTag("foot", "yes"))
37+
&& (
38+
onewayValue == null
39+
|| "no".equals(way.get("foot:backward"))
40+
|| "no".equals(way.get("oneway:foot"))
41+
|| ("yes".equals(onewayValue) && direction == WayTraversalDirection.FORWARD)
42+
|| ("-1".equals(onewayValue) && direction == WayTraversalDirection.BACKWARD)
43+
);
4144
}
4245

4346
@Override
4447
public boolean canBeUsedForRelation(@NotNull final IRelation<?> relation) {
45-
return relation.hasTag("type", "route") && relation.hasTag("route",
46-
"foot", "walking", "hiking");
48+
return relation.hasTag("type", "route") && relation.hasTag("route", "foot", "walking", "hiking");
4749
}
4850

4951
@Override

src/main/java/org/openstreetmap/josm/plugins/pt_assistant/actions/routinghelper/TrolleyBusTransportMode.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,21 @@
11
package org.openstreetmap.josm.plugins.pt_assistant.actions.routinghelper;
22

3-
import java.util.Objects;
4-
import java.util.Set;
5-
import java.util.stream.Collectors;
6-
73
import com.drew.lang.annotations.NotNull;
84
import org.openstreetmap.josm.data.osm.IRelation;
95
import org.openstreetmap.josm.data.osm.IWay;
10-
import org.openstreetmap.josm.data.osm.Node;
11-
import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
12-
import org.openstreetmap.josm.data.osm.Relation;
13-
import org.openstreetmap.josm.data.osm.Way;
146
import org.openstreetmap.josm.plugins.pt_assistant.utils.PTIcons;
157
import org.openstreetmap.josm.tools.I18n;
168
import org.openstreetmap.josm.tools.ImageProvider;
179

1810
public class TrolleyBusTransportMode extends BusTransportMode {
1911
@Override
2012
public boolean canTraverseWay(@NotNull final IWay<?> way, @NotNull final WayTraversalDirection direction) {
21-
return canTraverseWay(way, direction) && way.hasTag("trolley_wire", "yes");
13+
return super.canTraverseWay(way, direction) && way.hasTag("trolley_wire", "yes");
2214
}
2315

2416
@Override
2517
public boolean canBeUsedForRelation(@NotNull final IRelation<?> relation) {
26-
return canBeUsedForRelation(relation) && relation.hasTag("route", "trolleybus");
18+
return relation.hasTag("type", "route") && relation.hasTag("route", "trolleybus");
2719
}
2820

2921
@Override

0 commit comments

Comments
 (0)