1 package org.opentrafficsim.road.gtu.lane.perception;
2
3 import java.io.Serializable;
4
5 import org.djunits.value.vdouble.scalar.Length;
6 import org.opentrafficsim.core.Throw;
7
8
9
10
11
12
13
14
15
16
17
18
19 public class InfrastructureLaneChangeInfo implements Comparable<InfrastructureLaneChangeInfo>, Serializable
20 {
21
22
23 private static final long serialVersionUID = 20160811L;
24
25
26 private final int requiredNumberOfLaneChanges;
27
28
29 private final Length remainingDistance;
30
31
32
33
34
35
36
37
38 public InfrastructureLaneChangeInfo(final int requiredNumberOfLaneChanges, final Length remainingDistance)
39 {
40 Throw.when(requiredNumberOfLaneChanges < 0, IllegalArgumentException.class,
41 "Required number of lane changes may not be negative.");
42 Throw.whenNull(remainingDistance, "Remaining distance may not be null.");
43 Throw.when(remainingDistance.si < 0, IllegalArgumentException.class, "Remaining distance may not be negative.");
44 this.requiredNumberOfLaneChanges = requiredNumberOfLaneChanges;
45 this.remainingDistance = remainingDistance;
46 }
47
48
49
50
51 public final int getRequiredNumberOfLaneChanges()
52 {
53 return this.requiredNumberOfLaneChanges;
54 }
55
56
57
58
59 public final Length getRemainingDistance()
60 {
61 return this.remainingDistance;
62 }
63
64
65 @SuppressWarnings("checkstyle:designforextension")
66 @Override
67 public String toString()
68 {
69 return "InfrastructureLaneChangeInfo [requiredNumberOfLaneChanges=" + this.requiredNumberOfLaneChanges
70 + ", remainingDistance=" + this.remainingDistance + "]";
71 }
72
73
74 @Override
75 public final int compareTo(final InfrastructureLaneChangeInfo infrastructureLaneChangeInfo)
76 {
77 return this.remainingDistance.compareTo(infrastructureLaneChangeInfo.getRemainingDistance());
78 }
79
80 }