static CifRecord Parse(string record) { CifRecord cifRecord = null; switch (record.Substring(0, 2)) { case "BS": cifRecord = BasicSchedule.FromCsv(record); break; case "BX": cifRecord = BasicScheduleExtraDetails.FromCsv(record); break; case "LO": cifRecord = OriginLocation.FromCsv(record); break; case "LI": cifRecord = IntermediateLocation.FromCsv(record); break; case "CR": cifRecord = ChangesEnRoute.FromCsv(record); break; case "LT": cifRecord = TerminatingLocation.FromCsv(record); break; default: break; } return(cifRecord); }
public static BasicSchedule FromCsv(string csvLine) { string pattern = "yyMMdd"; string[] values = csvLine.Split(','); BasicSchedule bs = new BasicSchedule { RecordIdentity = values[0], TransactionType = values[1], TrainUid = values[2], DateRunsFrom = DateTime.ParseExact(values[3], pattern, null, DateTimeStyles.None), DateRunsTo = DateTime.ParseExact(values[4], pattern, null, DateTimeStyles.None), //WARNING! DaysRun in values[5] added at the end BankHolidayRunning = values[6], TrainStatus = values[7], TrainCategory = values[8], TrainIdentity = values[9], //WARNING! Headcode in values[10] added at the end //WARNING! CourseIndicator in values[11] added at the end //WARNING! TrainServiceCode in values[12] added at the end PortionId = values[13], PowerType = values[14], TimingLoad = values[15], //WARNING! Speed in values[16] added at the end OperatingCharacteristics = values[17], SeatingClass = values[18], Sleepers = values[19], Reservations = values[20], ConnectionIndicator = values[21], CateringCode = values[22], ServiceBranding = values[23], Spare = values[24], StpIndicator = values[25] }; Int32.TryParse(values[5], out bs.DaysRun); Int32.TryParse(values[10], out bs.Headcode); Int32.TryParse(values[11], out bs.CourseIndicator); Int32.TryParse(values[12], out bs.TrainServiceCode); Int32.TryParse(values[16], out bs.Speed); return(bs); }