package tmcsim.utilities; import java.util.ArrayList; import java.util.List; import java.util.NoSuchElementException; import java.util.Scanner; /** * Represent a single VDS, "a logical grouping of detectors" at a particular * location in one direction. * @author jdalbey */ public final class VehicleDetectionStation { public final String id; public final String fwy; public final String dir; public final String postmile; public final String latitude; public final String longitude; public final String type; // type of lanes being monitored public final String street; private String station_address; private List laneList; // list of all lanes (loop detectors) that // this VDS monitors. /** * Constructor * @param lineScanner A Scanner that uses tab as a delimiter for a single * line of the vds meta file. */ public VehicleDetectionStation(Scanner lineScanner) { id = lineScanner.next(); fwy = lineScanner.next(); dir = lineScanner.next(); lineScanner.next(); // skip District lineScanner.next(); // skip Country lineScanner.next(); // skip City String raw_pm = lineScanner.next().trim(); // remove any postmile prefix, if it exists. if (Character.isAlphabetic(raw_pm.charAt(0))) { raw_pm = raw_pm.substring(1); } postmile = raw_pm; lineScanner.next(); // skip Abs_PM latitude = lineScanner.next(); longitude = lineScanner.next(); lineScanner.next(); // skip length type = lineScanner.next(); // skip type lineScanner.next(); // skip lanes street = lineScanner.next(); // TODO read street name correctly laneList = new ArrayList(); // list of lane descriptors } public void setStaAddr(String address) { this.station_address = address; } public String getStaAddr() { return this.station_address; } public void addLane(String laneDescription) { this.laneList.add(laneDescription); } public List getLaneList() { return laneList; } @Override public String toString() { return station_address + " " + fwy + " " + dir + " " + postmile; } }