Skip to content

Commit 66f4709

Browse files
Add tag handling
1 parent d654f73 commit 66f4709

File tree

3 files changed

+47
-32
lines changed

3 files changed

+47
-32
lines changed

.idea/codeStyles/Project.xml

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.junit.jupiter.api.Assertions.assertNotNull;
55

66
import java.time.Duration;
7+
import java.util.Set;
78
import org.junit.jupiter.api.Test;
89
import org.opentripplanner.test.support.ResourceLoader;
910
import org.opentripplanner.updater.spi.HttpHeaders;
@@ -34,6 +35,7 @@ void parse() {
3435
assertEquals("Ågotnes Terminal", first.getName().toString());
3536
assertEquals(10, first.getAvailability().getBicycleSpaces());
3637
assertEquals(10, first.getCapacity().getBicycleSpaces());
38+
assertEquals(Set.of("FREE", "PRIVATE", "BIKE", "BOOKABLE"), first.getTags());
3739

3840
var last = lots.getLast();
3941
assertEquals("bikeep:224111", last.getId().toString());

src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdater.java

+45-31
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package org.opentripplanner.ext.vehicleparking.bikeep;
22

33
import com.fasterxml.jackson.databind.JsonNode;
4+
import com.fasterxml.jackson.databind.ObjectReader;
5+
import java.io.IOException;
6+
import java.util.List;
47
import org.opentripplanner.framework.geometry.WgsCoordinate;
58
import org.opentripplanner.framework.i18n.NonLocalizedString;
9+
import org.opentripplanner.framework.json.ObjectMappers;
610
import org.opentripplanner.framework.tostring.ToStringBuilder;
711
import org.opentripplanner.routing.vehicle_parking.VehicleParking;
812
import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
@@ -16,6 +20,9 @@
1620
public class BikeepUpdater extends GenericJsonDataSource<VehicleParking> {
1721

1822
private static final String JSON_PARSE_PATH = "features";
23+
private static final ObjectReader STRING_LIST_READER = ObjectMappers
24+
.ignoringExtraFields()
25+
.readerForListOf(String.class);
1926
private final BikeepUpdaterParameters params;
2027

2128
public BikeepUpdater(BikeepUpdaterParameters parameters) {
@@ -25,41 +32,48 @@ public BikeepUpdater(BikeepUpdaterParameters parameters) {
2532

2633
@Override
2734
protected VehicleParking parseElement(JsonNode jsonNode) {
28-
var coords = jsonNode.path("geometry").path("coordinates");
29-
var coordinate = new WgsCoordinate(coords.get(1).asDouble(), coords.get(0).asDouble());
35+
try {
36+
var coords = jsonNode.path("geometry").path("coordinates");
37+
var coordinate = new WgsCoordinate(coords.get(1).asDouble(), coords.get(0).asDouble());
3038

31-
var props = jsonNode.path("properties");
32-
var vehicleParkId = new FeedScopedId(params.feedId(), props.path("code").asText());
33-
var name = new NonLocalizedString(props.path("label").asText());
34-
var parking = props.path("parking");
39+
var props = jsonNode.path("properties");
40+
var vehicleParkId = new FeedScopedId(params.feedId(), props.path("code").asText());
41+
var name = new NonLocalizedString(props.path("label").asText());
42+
var parking = props.path("parking");
3543

36-
var availability = VehicleParkingSpaces
37-
.builder()
38-
.bicycleSpaces(parking.get("available").asInt())
39-
.build();
40-
var capacity = VehicleParkingSpaces
41-
.builder()
42-
.bicycleSpaces(parking.get("total").asInt())
43-
.build();
44+
List<String> tags = STRING_LIST_READER.readValue(props.path("tags"));
4445

45-
VehicleParking.VehicleParkingEntranceCreator entrance = builder ->
46-
builder
47-
.entranceId(new FeedScopedId(params.feedId(), vehicleParkId.getId() + "/entrance"))
48-
.coordinate(coordinate)
49-
.walkAccessible(true)
50-
.carAccessible(true);
46+
var availability = VehicleParkingSpaces
47+
.builder()
48+
.bicycleSpaces(parking.get("available").asInt())
49+
.build();
50+
var capacity = VehicleParkingSpaces
51+
.builder()
52+
.bicycleSpaces(parking.get("total").asInt())
53+
.build();
54+
55+
VehicleParking.VehicleParkingEntranceCreator entrance = builder ->
56+
builder
57+
.entranceId(new FeedScopedId(params.feedId(), vehicleParkId.getId() + "/entrance"))
58+
.coordinate(coordinate)
59+
.walkAccessible(true)
60+
.carAccessible(true);
5161

52-
return VehicleParking
53-
.builder()
54-
.id(vehicleParkId)
55-
.name(name)
56-
.state(VehicleParkingState.OPERATIONAL)
57-
.coordinate(coordinate)
58-
.bicyclePlaces(true)
59-
.availability(availability)
60-
.capacity(capacity)
61-
.entrance(entrance)
62-
.build();
62+
return VehicleParking
63+
.builder()
64+
.id(vehicleParkId)
65+
.name(name)
66+
.state(VehicleParkingState.OPERATIONAL)
67+
.coordinate(coordinate)
68+
.bicyclePlaces(true)
69+
.availability(availability)
70+
.tags(tags)
71+
.capacity(capacity)
72+
.entrance(entrance)
73+
.build();
74+
} catch (IOException e) {
75+
throw new RuntimeException(e);
76+
}
6377
}
6478

6579
@Override

0 commit comments

Comments
 (0)