Skip to content

Commit 05433de

Browse files
committed
core: adapt for railjson v3
1 parent 94de6b8 commit 05433de

35 files changed

+139
-275
lines changed

core/src/main/java/fr/sncf/osrd/api/pathfinding/GeomUtils.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import fr.sncf.osrd.api.pathfinding.response.DirTrackRange;
44
import fr.sncf.osrd.api.pathfinding.response.PathfindingResult;
55
import fr.sncf.osrd.infra.api.signaling.SignalingInfra;
6-
import fr.sncf.osrd.infra.implementation.RJSObjectParsing;
76
import fr.sncf.osrd.utils.geom.LineString;
87
import java.util.ArrayList;
98
import java.util.List;
@@ -31,9 +30,9 @@ static void addGeometry(PathfindingResult res, SignalingInfra infra) {
3130
continue;
3231
}
3332

34-
if (previousTrack.trackSection.id.id.compareTo(trackSection.trackSection.id.id) != 0) {
33+
if (previousTrack.trackSection.compareTo(trackSection.trackSection) != 0) {
3534
if (Double.compare(previousBegin, previousEnd) != 0) {
36-
var track = RJSObjectParsing.getTrackSection(previousTrack.trackSection, infra);
35+
var track = infra.getTrackSection(previousTrack.trackSection);
3736
sliceAndAdd(geoList, track.getGeo(), previousBegin, previousEnd, track.getLength());
3837
sliceAndAdd(schList, track.getSch(), previousBegin, previousEnd, track.getLength());
3938
}
@@ -45,7 +44,7 @@ static void addGeometry(PathfindingResult res, SignalingInfra infra) {
4544
}
4645

4746
assert previousTrack != null;
48-
var track = RJSObjectParsing.getTrackSection(previousTrack.trackSection, infra);
47+
var track = infra.getTrackSection(previousTrack.trackSection);
4948
sliceAndAdd(geoList, track.getGeo(), previousBegin, previousEnd, track.getLength());
5049
sliceAndAdd(schList, track.getSch(), previousBegin, previousEnd, track.getLength());
5150

core/src/main/java/fr/sncf/osrd/api/pathfinding/PathfindingResultConverter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import fr.sncf.osrd.infra.api.signaling.SignalingRoute;
1313
import fr.sncf.osrd.infra.api.tracks.undirected.TrackSection;
1414
import fr.sncf.osrd.infra.implementation.tracks.directed.TrackRangeView;
15-
import fr.sncf.osrd.railjson.schema.common.RJSObjectRef;
15+
import fr.sncf.osrd.railjson.schema.common.RJSWaypointRef;
1616
import fr.sncf.osrd.reporting.warnings.DiagnosticRecorderImpl;
1717
import fr.sncf.osrd.utils.graph.Pathfinding;
1818
import java.util.ArrayList;
@@ -143,7 +143,7 @@ private static RoutePathResult makeRouteResult(
143143
Pathfinding.EdgeRange<SignalingRoute> element
144144
) {
145145
var routeResult = new RoutePathResult(
146-
new RJSObjectRef<>(element.edge().getInfraRoute().getID(), "Route"),
146+
element.edge().getInfraRoute().getID(),
147147
element.edge().getSignalingType()
148148
);
149149
double offset = 0;

core/src/main/java/fr/sncf/osrd/api/pathfinding/PathfindingRoutesEndpoint.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,11 @@ public static Pathfinding.Result<SignalingRoute> runPathfinding(
109109
private void validate(SignalingInfra infra, PathfindingResult res, PathfindingWaypoint[][] reqWaypoints) {
110110
var start = res.pathWaypoints.get(0);
111111
var end = res.pathWaypoints.get(res.pathWaypoints.size() - 1);
112-
var startLocation = new TrackLocation(infra.getTrackSection(start.track.id.id), start.position);
113-
var endLocation = new TrackLocation(infra.getTrackSection(end.track.id.id), end.position);
112+
var startLocation = new TrackLocation(infra.getTrackSection(start.track), start.position);
113+
var endLocation = new TrackLocation(infra.getTrackSection(end.track), end.position);
114114
var routes = new ArrayList<SignalingRoute>();
115115
for (var route : res.routePaths) {
116-
var signalingRoute = infra.findSignalingRoute(route.route.id.id, route.signalingType);
116+
var signalingRoute = infra.findSignalingRoute(route.route, route.signalingType);
117117
assert signalingRoute != null;
118118
if (routes.isEmpty() || routes.get(routes.size() - 1) != signalingRoute)
119119
routes.add(signalingRoute);
@@ -129,7 +129,7 @@ private void validate(SignalingInfra infra, PathfindingResult res, PathfindingWa
129129
// Checks that at least one waypoint of each step is on the path
130130
var tracksOnPath = res.routePaths.stream()
131131
.flatMap(route -> route.trackSections.stream())
132-
.map(track -> track.trackSection.id.id)
132+
.map(track -> track.trackSection)
133133
.collect(Collectors.toSet());
134134
for (var step : reqWaypoints) {
135135
assert Arrays.stream(step)

core/src/main/java/fr/sncf/osrd/api/pathfinding/response/DirTrackRange.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package fr.sncf.osrd.api.pathfinding.response;
22

33
import com.squareup.moshi.Json;
4-
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
5-
import fr.sncf.osrd.railjson.schema.common.RJSObjectRef;
4+
import fr.sncf.osrd.railjson.schema.common.RJSWaypointRef;
65
import fr.sncf.osrd.railjson.schema.common.graph.EdgeDirection;
76
import fr.sncf.osrd.railjson.schema.infra.RJSTrackSection;
87

98
public class DirTrackRange {
109
@Json(name = "track")
11-
public final RJSObjectRef<RJSTrackSection> trackSection;
10+
public final String trackSection;
1211
public final double begin;
1312
public final double end;
1413
public final EdgeDirection direction;
1514

1615
/** Create a new directional track range */
1716
public DirTrackRange(String trackSectionID, double begin, double end) {
18-
this.trackSection = new RJSObjectRef<>(trackSectionID, "TrackSection");
17+
this.trackSection = trackSectionID;
1918
if (begin < end) {
2019
this.direction = EdgeDirection.START_TO_STOP;
2120
this.begin = begin;

core/src/main/java/fr/sncf/osrd/api/pathfinding/response/PathWaypointResult.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import fr.sncf.osrd.infra.api.tracks.undirected.OperationalPoint;
44
import fr.sncf.osrd.infra.api.tracks.undirected.TrackLocation;
55
import fr.sncf.osrd.infra.api.tracks.undirected.TrackSection;
6-
import fr.sncf.osrd.railjson.schema.common.RJSObjectRef;
6+
import fr.sncf.osrd.railjson.schema.common.RJSWaypointRef;
77
import fr.sncf.osrd.railjson.schema.infra.RJSTrackSection;
88

99
/**
@@ -21,7 +21,7 @@ public class PathWaypointResult {
2121
/**
2222
* Track the point is on
2323
*/
24-
public RJSObjectRef<RJSTrackSection> track;
24+
public String track;
2525
/**
2626
* Offset of the point on the track
2727
*/
@@ -42,7 +42,7 @@ private PathWaypointResult(
4242
double trackRangeOffset
4343
) {
4444
this.suggestion = suggestion;
45-
this.track = new RJSObjectRef<>(trackID, "TrackSection");
45+
this.track = trackID;
4646
this.position = offset;
4747
this.id = opID;
4848
this.trackRangeOffset = trackRangeOffset;

core/src/main/java/fr/sncf/osrd/api/pathfinding/response/RoutePathResult.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package fr.sncf.osrd.api.pathfinding.response;
22

33
import com.squareup.moshi.Json;
4-
import fr.sncf.osrd.railjson.schema.common.RJSObjectRef;
4+
import fr.sncf.osrd.railjson.schema.common.RJSWaypointRef;
55
import fr.sncf.osrd.railjson.schema.infra.RJSRoute;
66
import java.util.ArrayList;
77
import java.util.List;
@@ -10,13 +10,13 @@
1010
* A single route on the path
1111
*/
1212
public class RoutePathResult {
13-
public final RJSObjectRef<RJSRoute> route;
13+
public final String route;
1414
@Json(name = "track_sections")
1515
public final List<DirTrackRange> trackSections = new ArrayList<>();
1616
@Json(name = "signaling_type")
1717
public final String signalingType;
1818

19-
public RoutePathResult(RJSObjectRef<RJSRoute> route, String signalingType) {
19+
public RoutePathResult(String route, String signalingType) {
2020
this.route = route;
2121
this.signalingType = signalingType;
2222
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
11
package fr.sncf.osrd.infra.api.tracks.undirected;
22

33
public non-sealed interface TrackSection extends TrackEdge {
4-
5-
/** Returns line code */
6-
int getLineCode();
7-
8-
/** Returns track number */
9-
int getTrackNumber();
104
}

core/src/main/java/fr/sncf/osrd/infra/implementation/RJSObjectParsing.java

-36
This file was deleted.

core/src/main/java/fr/sncf/osrd/infra/implementation/reservation/ReservationInfraBuilder.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import fr.sncf.osrd.infra.api.tracks.undirected.TrackLocation;
2222
import fr.sncf.osrd.infra.errors.DiscontinuousRoute;
2323
import fr.sncf.osrd.infra.errors.MissingDetectorsRoute;
24-
import fr.sncf.osrd.infra.implementation.RJSObjectParsing;
2524
import fr.sncf.osrd.infra.implementation.tracks.directed.DirectedInfraBuilder;
2625
import fr.sncf.osrd.infra.implementation.tracks.directed.TrackRangeView;
2726
import fr.sncf.osrd.railjson.schema.common.graph.EdgeEndpoint;
@@ -215,11 +214,10 @@ private boolean isRouteControlled(ImmutableList<TrackRangeView> trackRanges) {
215214
private ImmutableList<TrackRangeView> makeTrackRanges(RJSRoute rjsRoute) {
216215
var res = new ArrayList<TrackRangeView>();
217216
for (var range : rjsRoute.path) {
218-
range.track.checkType(Set.of("TrackSection"));
219217
res.add(new TrackRangeView(
220218
range.begin,
221219
range.end,
222-
diTrackInfra.getEdge(range.track.id.id, Direction.fromEdgeDir(range.direction))
220+
diTrackInfra.getEdge(range.track, Direction.fromEdgeDir(range.direction))
223221
));
224222
}
225223

@@ -255,8 +253,10 @@ private ImmutableList<TrackRangeView> makeTrackRanges(RJSRoute rjsRoute) {
255253
/** Lists the release points on a given route (in order) */
256254
private ImmutableList<Detector> releasePoints(RJSRoute rjsRoute) {
257255
var builder = ImmutableList.<Detector>builder();
258-
for (var detector : rjsRoute.releaseDetectors) {
259-
builder.add(RJSObjectParsing.getDetector(detector, diTrackInfra.getDetectorMap()));
256+
for (var rjsDetector : rjsRoute.releaseDetectors) {
257+
var detector = diTrackInfra.getDetectorMap().get(rjsDetector);
258+
assert detector != null;
259+
builder.add(detector);
260260
}
261261
return builder.build();
262262
}

core/src/main/java/fr/sncf/osrd/infra/implementation/signaling/modules/bal3/BAL3.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import fr.sncf.osrd.infra.api.signaling.SignalState;
1111
import fr.sncf.osrd.infra.api.signaling.SignalingModule;
1212
import fr.sncf.osrd.infra.api.signaling.SignalingRoute;
13-
import fr.sncf.osrd.infra.implementation.RJSObjectParsing;
1413
import fr.sncf.osrd.railjson.schema.common.graph.EdgeDirection;
1514
import fr.sncf.osrd.railjson.schema.infra.RJSInfra;
1615
import fr.sncf.osrd.railjson.schema.infra.trackobjects.RJSSignal;
@@ -70,7 +69,8 @@ public ImmutableMap<RJSSignal, Signal<?>> createSignals(ReservationInfra infra,
7069
continue;
7170
DiDetector linkedDetector = null;
7271
if (signal.linkedDetector != null) {
73-
var undirectedDetector = RJSObjectParsing.getDetector(signal.linkedDetector, infra.getDetectorMap());
72+
var undirectedDetector = infra.getDetectorMap().get(signal.linkedDetector);
73+
assert undirectedDetector != null;
7474
var dir = signal.direction == EdgeDirection.START_TO_STOP ? Direction.FORWARD : Direction.BACKWARD;
7575
linkedDetector = undirectedDetector.getDiDetector(dir);
7676
}

core/src/main/java/fr/sncf/osrd/infra/implementation/tracks/undirected/TrackSectionImpl.java

+2-18
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ public class TrackSectionImpl implements TrackSection {
2222
private final LineString geo;
2323
private final LineString sch;
2424
private final ImmutableRangeMap<Double, LoadingGaugeConstraint> loadingGaugeConstraints;
25-
private final int trackNumber;
26-
private final int lineCode;
2725

2826
@Override
2927
@ExcludeFromGeneratedCodeCoverage
@@ -41,18 +39,14 @@ public TrackSectionImpl(
4139
ImmutableSet<OperationalPoint> operationalPoints,
4240
LineString geo,
4341
LineString sch,
44-
ImmutableRangeMap<Double, LoadingGaugeConstraint> loadingGaugeConstraints,
45-
int trackNumber,
46-
int lineCode
42+
ImmutableRangeMap<Double, LoadingGaugeConstraint> loadingGaugeConstraints
4743
) {
4844
this.length = length;
4945
this.id = id;
5046
this.operationalPoints = operationalPoints;
5147
this.geo = geo;
5248
this.sch = sch;
5349
this.loadingGaugeConstraints = loadingGaugeConstraints;
54-
this.trackNumber = trackNumber;
55-
this.lineCode = lineCode;
5650
this.catenaryVoltages.put(Range.closed(0., length), Set.of());
5751
}
5852

@@ -61,7 +55,7 @@ public TrackSectionImpl(
6155
double length,
6256
String id
6357
) {
64-
this(length, id, ImmutableSet.of(), null, null, ImmutableRangeMap.of(), 0, 0);
58+
this(length, id, ImmutableSet.of(), null, null, ImmutableRangeMap.of());
6559
speedSections = new EnumMap<>(Direction.class);
6660
for (var dir : Direction.values())
6761
speedSections.put(dir, ImmutableRangeMap.of());
@@ -107,16 +101,6 @@ public ImmutableRangeMap<Double, LoadingGaugeConstraint> getLoadingGaugeConstrai
107101
return loadingGaugeConstraints;
108102
}
109103

110-
@Override
111-
public int getLineCode() {
112-
return lineCode;
113-
}
114-
115-
@Override
116-
public int getTrackNumber() {
117-
return trackNumber;
118-
}
119-
120104
public RangeMap<Double, Set<Integer>> getVoltages() {
121105
return catenaryVoltages;
122106
}

core/src/main/java/fr/sncf/osrd/infra/implementation/tracks/undirected/UndirectedInfraBuilder.java

+9-12
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import fr.sncf.osrd.infra.api.Direction;
1111
import fr.sncf.osrd.infra.api.tracks.undirected.*;
1212
import fr.sncf.osrd.infra.errors.InvalidInfraError;
13-
import fr.sncf.osrd.infra.implementation.RJSObjectParsing;
1413
import fr.sncf.osrd.railjson.schema.common.graph.EdgeEndpoint;
1514
import fr.sncf.osrd.railjson.schema.infra.RJSInfra;
1615
import fr.sncf.osrd.railjson.schema.infra.RJSSwitch;
@@ -54,7 +53,7 @@ private TrackInfra parse(RJSInfra infra) {
5453
for (var op : infra.operationalPoints) {
5554
for (var part : op.parts) {
5655
var newOp = new OperationalPoint(part.position, op.id);
57-
operationalPointsPerTrack.put(part.track.id.id, newOp);
56+
operationalPointsPerTrack.put(part.track, newOp);
5857
}
5958
}
6059

@@ -100,7 +99,7 @@ private TrackInfra parse(RJSInfra infra) {
10099
private void loadCatenaries(List<RJSCatenary> catenaries, HashMap<String, TrackSectionImpl> trackSectionsByID) {
101100
for (var catenary : catenaries) {
102101
for (var trackRange : catenary.trackRanges) {
103-
var track = trackSectionsByID.get(trackRange.track.id.id);
102+
var track = trackSectionsByID.get(trackRange.track);
104103
assert track != null;
105104
track.getVoltages().merge(
106105
Range.open(trackRange.begin, trackRange.end),
@@ -115,8 +114,8 @@ private void loadCatenaries(List<RJSCatenary> catenaries, HashMap<String, TrackS
115114
private void addRemainingLinks(RJSInfra infra) {
116115
int generatedID = 0;
117116
for (var link : infra.trackSectionLinks) {
118-
var srcID = link.src.track.id.id;
119-
var dstID = link.dst.track.id.id;
117+
var srcID = link.src.track;
118+
var dstID = link.dst.track;
120119
var oldSrcNode = getNode(srcID, link.src.endpoint);
121120
var oldDstNode = getNode(dstID, link.dst.endpoint);
122121
if (oldSrcNode != null || oldDstNode != null) {
@@ -164,7 +163,7 @@ private void addSpeedSections(
164163
for (var speedSection : speedSections) {
165164
var value = SpeedLimits.from(speedSection);
166165
for (var trackRange : speedSection.trackRanges) {
167-
var track = RJSObjectParsing.getTrackSection(trackRange.track, trackSectionsByID);
166+
var track = trackSectionsByID.get(trackRange.track);
168167
var speedSectionMaps = track.getSpeedSections();
169168
if (trackRange.applicableDirections.appliesToNormal()) {
170169
speedSectionMaps.get(Direction.FORWARD).merge(
@@ -188,7 +187,7 @@ private void addSpeedSections(
188187
@SuppressFBWarnings({"FE_FLOATING_POINT_EQUALITY"}) // This case only causes issues with strict equalities
189188
private void makeWaypoint(HashMap<String, TrackSectionImpl> trackSectionsByID,
190189
RJSRouteWaypoint waypoint, boolean isBufferStop) {
191-
var track = RJSObjectParsing.getTrackSection(waypoint.track, trackSectionsByID);
190+
var track = trackSectionsByID.get(waypoint.track);
192191
var newWaypoint = new DetectorImpl(track, waypoint.position, isBufferStop, waypoint.id);
193192
var detectors = detectorLists.get(track);
194193
for (var detector : detectors)
@@ -212,9 +211,7 @@ private TrackSectionImpl makeTrackSection(RJSTrackSection track) {
212211
ImmutableSet.copyOf(operationalPointsPerTrack.get(track.id)),
213212
track.geo,
214213
track.sch,
215-
buildLoadingGaugeLimits(track.loadingGaugeLimits),
216-
track.trackNumber,
217-
track.lineCode
214+
buildLoadingGaugeLimits(track.loadingGaugeLimits)
218215
);
219216
builder.addEdge(begin, end, edge);
220217
edge.gradients = makeGradients(track);
@@ -371,11 +368,11 @@ private Switch parseSwitch(
371368
var newNode = new SwitchPortImpl(portName, rjsSwitch.id);
372369
portMap.put(portName, newNode);
373370
networkBuilder.addNode(newNode);
374-
addNode(port.track.id.id, port.endpoint, newNode);
371+
addNode(port.track, port.endpoint, newNode);
375372
allPorts.add(newNode);
376373
}
377374
var finalPortMap = portMap.build();
378-
var switchType = RJSObjectParsing.getSwitchType(rjsSwitch.switchType, switchTypeMap);
375+
var switchType = switchTypeMap.get(rjsSwitch.switchType);
379376
var groups = ImmutableMultimap.<String, SwitchBranch>builder();
380377
var allBranches = new HashSet<SwitchBranchImpl>();
381378
for (var entry : switchType.groups.entrySet()) {

0 commit comments

Comments
 (0)