MATSIM
MeasurementLocation.java
Go to the documentation of this file.
1 package org.matsim.counts;
2 
3 import org.matsim.api.core.v01.Coord;
4 import org.matsim.api.core.v01.Id;
9 
10 import javax.annotation.Nullable;
11 import java.util.Iterator;
12 import java.util.LinkedHashMap;
13 import java.util.Map;
14 
21 public final class MeasurementLocation<T> implements Attributable, Iterable<MeasurementLocation.TypeAndMode> {
22 
23  static final String ELEMENT_NAME = "location";
24 
25  private final Id<T> refId;
26  private final Map<TypeAndMode, Measurable> measurables = new LinkedHashMap<>();
27  private final Attributes attributes = new AttributesImpl();
28 
29  private String id;
30  private String stationName;
31  private String description;
32  private Coord coordinates;
33 
34  MeasurementLocation(final Id<T> refId, String stationName) {
35  this.refId = refId;
36  this.stationName = stationName;
37  }
38 
42  public Id<T> getRefId() {
43  return refId;
44  }
45 
49  public String getId() {
50  return id;
51  }
52 
53  @Override
55  return attributes;
56  }
57 
61  public Measurable createMeasurable(String typeOfMeasurableData, String mode, int interval) {
62  return measurables.computeIfAbsent(new TypeAndMode(typeOfMeasurableData, mode),
63  k -> new Measurable(mode, typeOfMeasurableData, interval));
64  }
65 
69  public boolean deleteMeasurable(String typeOfMeasurableData, String mode) {
70  return this.measurables.remove(new TypeAndMode(typeOfMeasurableData, mode)) != null;
71  }
72 
78  }
79 
83  public Measurable createVolume(String mode) {
85  }
86 
87  public Measurable createVolume(String mode, int interval) {
88  return createMeasurable(Measurable.VOLUMES, mode, interval);
89  }
90 
91  public Measurable createVelocity(String mode, int interval) {
92  return createMeasurable(Measurable.VELOCITIES, mode, interval);
93  }
94 
95  public Measurable createPassengerCounts(String mode, int interval) {
96  return createMeasurable(Measurable.PASSENGERS, mode, interval);
97  }
98 
99  public String getDescription() {
100  return description;
101  }
102 
103  public void setDescription(String description) {
104  this.description = description;
105  }
106 
107  public String getStationName() {
108  return stationName;
109  }
110 
114  public String getDisplayName() {
115  if (stationName != null)
116  return stationName;
117  if (id != null)
118  return id;
119 
120  return description;
121  }
122 
123  public void setId(String id) {
124  this.id = id;
125  }
126 
127  public void setStationName(String stationName) {
128  this.stationName = stationName;
129  }
130 
132  return coordinates;
133  }
134 
135  public void setCoordinates(Coord coordinates) {
136  this.coordinates = coordinates;
137  }
138 
139  public Measurable getVolumesForMode(String mode) {
140  return this.measurables.get(new TypeAndMode(Measurable.VOLUMES, mode));
141  }
142 
146  public boolean hasMeasurableForMode(String measurableType, String mode) {
147  return this.measurables.containsKey(new TypeAndMode(measurableType, mode));
148  }
149 
150  @Nullable
151  public Measurable getMeasurableForMode(String measurableType, String mode) {
152  return this.measurables.get(new TypeAndMode(measurableType, mode));
153  }
154 
155  Map<TypeAndMode, Measurable> getMeasurables() {
156  return this.measurables;
157  }
158 
159  @Override
160  public String toString() {
161  return "MeasurementLocation{" +
162  "id=" + refId +
163  ", stationName='" + stationName + '\'' +
164  '}';
165  }
166 
167  @Override
168  public Iterator<TypeAndMode> iterator() {
169  return this.measurables.keySet().iterator();
170  }
171 
175  public final record TypeAndMode(String type, String mode) {
176  }
177 
178 }
boolean deleteMeasurable(String typeOfMeasurableData, String mode)
Measurable createMeasurable(String typeOfMeasurableData, String mode, int interval)
boolean hasMeasurableForMode(String measurableType, String mode)
Measurable createVolume(String mode, int interval)
Measurable createVelocity(String mode, int interval)
final record TypeAndMode(String type, String mode)
Measurable getMeasurableForMode(String measurableType, String mode)
final Map< TypeAndMode, Measurable > measurables
Measurable createPassengerCounts(String mode, int interval)