Timetable GetTimetable(string name) {
     var result = new Timetable(name, GetLayout(name));
     var app = new Excel.Application();
     Excel.Workbook book = null;
     app.Visible = false;
     try {
         book = app.Workbooks.Open(GetFilename(name));
         GetTrains(result, book);
    }
     finally {
         if (book != null) book.Close(false);
     }
     return result;
 }
Exemplo n.º 2
0
 private static StationCall GetCall(IDataRecord record, Timetable timetable)
 {
     Time arrivalTime = null;
     Time departureTime = null;
     var a = record.GetOrdinal("ArrivalTime");
     if (! record.IsDBNull(a))
     {
         var value = record.GetDateTime(a);
         arrivalTime = new Time(value.Hour, value.Minute);
     }
     var d = record.GetOrdinal("DepartureTime");
     if (! record.IsDBNull(d))
     {
         var value = record.GetDateTime(d);
         departureTime = new Time(value.Hour, value.Minute);
     }
     if (arrivalTime == null) arrivalTime = departureTime;
     if (departureTime == null) departureTime = arrivalTime;
     var signature = record.GetString(record.GetOrdinal("Signature"));
     var trackNumber = record.GetString(record.GetOrdinal("TrackNumber"));
     var stationTrack = timetable.Layout.Station(signature)[trackNumber];
     return new StationCall(stationTrack, arrivalTime, departureTime);
 }
Exemplo n.º 3
0
 public static void RecordHandler(IDataRecord record, Timetable timetable)
 {
     Train currentTrain = null;
     var key = Thread.CurrentThread.ManagedThreadId;
     if (CachedTrains.ContainsKey(key))
     {
         currentTrain = CachedTrains[key];
     }
     var identity = record.GetString(record.GetOrdinal("TrainNumber"));
     var category = GetCategory(record.GetString(record.GetOrdinal("Product")));
     if (currentTrain == null)
     {
         currentTrain = new Train(category, identity);
         CachedTrains[key] = currentTrain;
     }
     if (currentTrain.Identity != identity)
     {
         timetable.Add(currentTrain);
         currentTrain = new Train(category, identity);
         CachedTrains[key] = currentTrain;
     }
     currentTrain.Add(GetCall(record, timetable));
 }
        private static void GetTrains(Timetable timetable, Excel.Workbook book) {
            Excel.Worksheet sheet = book.Worksheets["Trains"];
            var r = 2;
            Train current = null;
            while (true) {
                var row = (Array)sheet.get_Range(Cell("A", r), Cell("K", r)).Cells.Value;
                if (row.GetValue(1, 1) == null) {
                    break;
                }
                else {
                    var type = row.Value(9).ToLowerInvariant();
                    switch (type) {
                        case "traindef":
                            if (current != null) timetable.Add(current);
                            var number = row.Value(10);
                            current = new Train(GetCategory(number.Substring(0, 1)), number);
                            break;
                        case "timetable":
                           try {
                            var track = timetable.Layout.Station(row.Value(3))[row.Value(4)];
                            current.Add(new StationCall(track,  Time.Parse(row.Value(5)), Time.Parse(row.Value(6))));
               
                            }
                            catch (Exception) {
                                Debugger.Break();
                                throw;
                            }
                            break;
                        default:
                            break;
                    }
                }
                r++;
            }
            if (current != null) timetable.Add(current);

        }
Exemplo n.º 5
0
  public static void FinalHandler(Timetable timetable)
  {
      if (CachedTrains.Any())
      {
          var key = Thread.CurrentThread.ManagedThreadId;
          var currentTrain = CachedTrains[key];
          timetable.Add(currentTrain);
          CachedTrains[key] = null;
      }
 }