1
1
package org .opentripplanner .ext .vehicleparking .bikeep ;
2
2
3
3
import com .fasterxml .jackson .databind .JsonNode ;
4
+ import com .fasterxml .jackson .databind .ObjectReader ;
5
+ import java .io .IOException ;
6
+ import java .util .List ;
4
7
import org .opentripplanner .framework .geometry .WgsCoordinate ;
5
8
import org .opentripplanner .framework .i18n .NonLocalizedString ;
9
+ import org .opentripplanner .framework .json .ObjectMappers ;
6
10
import org .opentripplanner .framework .tostring .ToStringBuilder ;
7
11
import org .opentripplanner .routing .vehicle_parking .VehicleParking ;
8
12
import org .opentripplanner .routing .vehicle_parking .VehicleParkingSpaces ;
16
20
public class BikeepUpdater extends GenericJsonDataSource <VehicleParking > {
17
21
18
22
private static final String JSON_PARSE_PATH = "features" ;
23
+ private static final ObjectReader STRING_LIST_READER = ObjectMappers
24
+ .ignoringExtraFields ()
25
+ .readerForListOf (String .class );
19
26
private final BikeepUpdaterParameters params ;
20
27
21
28
public BikeepUpdater (BikeepUpdaterParameters parameters ) {
@@ -25,41 +32,48 @@ public BikeepUpdater(BikeepUpdaterParameters parameters) {
25
32
26
33
@ Override
27
34
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 ());
30
38
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" );
35
43
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" ));
44
45
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 );
51
61
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
+ }
63
77
}
64
78
65
79
@ Override
0 commit comments