public TrackStretch TrackStretch(Station from, Station to) { try { return TrackStretches.Where(l => (l.Start.Station.Equals(from) && l.End.Station.Equals(to)) || (l.Start.Station.Equals(to) && l.End.Station.Equals(from))).Single(); } catch (InvalidOperationException) { throw new TrackLayoutException("There is no stretch between " + from.Name + " and " + to.Name); } }
public static void RecordHandler(IDataRecord record, TrackLayout layout) { var result = new Station(record.GetString(record.GetOrdinal("FullName")), record.GetString(record.GetOrdinal("Signature"))); layout.Add(result); }
public TrackStretch StretchTowards(Station other) { return Exits.Where(e => e.Stretch.End.Station.Equals(other)).Select(e => e.Stretch).Single(); }
//public TrackStretch GetTrainsStretch() public void Add(Station station) { if (HasStation(station)) throw new TrackLayoutException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.DuplicateAddOfStation, station)); _stations.Add(station); }
public bool HasStation(Station station) { return Stations.Any(s => s.Equals(station)); }
private static void GetStations(TrackLayout layout, Excel.Workbook book) { Excel.Worksheet sheet = book.Worksheets["StationTrack"]; var r = 2; Station current = null; var loop = true; while (loop) { var row = (Array)sheet.get_Range(Cell("A", r), Cell("G", r)).Cells.Value; if (row.GetValue(1, 1) == null) { break; } else { var rowType = row.Value(6); switch (rowType) { case "Station": if (current != null) layout.Add(current); current = new Station( row.Value(5), row.Value(1)); break; case "Track": current.Add(new StationTrack(row.Value(3))); break; default: loop = false; break; } r++; } } if (current != null) layout.Add(current); }
public double DistanceToStation(Station station) { if (station.Equals(_stretches.First().Start.Station)) return 0; var stretch = _stretches.FirstOrDefault(s => s.End.Station.Equals(station)); if (stretch == null) throw new ArgumentOutOfRangeException(nameof(station)); return _stretches.Take(_stretches.IndexOf(stretch) + 1).Sum(s => s.Distance); }
public bool HasStation(Station station) { return _stretches.Any(s => s.Start.Station.Equals(station) || s.End.Station.Equals(station)); }