1   package org.opentrafficsim.road.gtu.lane.tactical.toledo;
2   
3   import java.io.Serializable;
4   
5   import org.djutils.exceptions.Throw;
6   import org.opentrafficsim.core.gtu.GTUException;
7   import org.opentrafficsim.core.gtu.RelativePosition;
8   import org.opentrafficsim.core.network.LateralDirectionality;
9   import org.opentrafficsim.road.gtu.lane.perception.InfrastructureLaneChangeInfo;
10  import org.opentrafficsim.road.gtu.lane.perception.LaneStructureRecord;
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  public class InfrastructureLaneChangeInfoToledo extends InfrastructureLaneChangeInfo implements Serializable
24  {
25  
26      
27      private static final long serialVersionUID = 20160811L;
28  
29      
30      private final int splitNumber;
31  
32      
33  
34  
35  
36  
37  
38      public InfrastructureLaneChangeInfoToledo(final int requiredNumberOfLaneChanges, final LaneStructureRecord record,
39              final int splitNumber) throws GTUException
40      {
41          super(requiredNumberOfLaneChanges, record, RelativePosition.REFERENCE_POSITION, splitNumber > 0,
42                  LateralDirectionality.NONE);
43          Throw.when(splitNumber <= 0, GTUException.class, "Split number should be at least 1.");
44          this.splitNumber = splitNumber;
45      }
46  
47      
48  
49  
50  
51      public final boolean forSplit()
52      {
53          return this.splitNumber > 0;
54      }
55  
56      
57  
58  
59  
60      public final int getSplitNumber()
61      {
62          return this.splitNumber;
63      }
64  
65      
66      @Override
67      public final String toString()
68      {
69          return "InfrastructureLaneChangeInfoToledo [requiredNumberOfLaneChanges=" + getRequiredNumberOfLaneChanges()
70                  + ", remainingDistance=" + getRemainingDistance() + ", split=" + this.splitNumber + "]";
71      }
72  }