Example #1
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);

        }
Example #3
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;
      }
 }