public OrderHistoryFileReturn ParseMainframeFile(TextReader reader) { OrderHistoryFileReturn retVal = new OrderHistoryFileReturn(); OrderHistoryFile currentFile = null; while (reader.Peek() != -1) { string line = reader.ReadLine(); switch (line.Substring(RECORDTYPE_STARTPOS, RECORDTYPE_LENGTH)) { case "H": SetErrorStatusAndFutureItemsOnFile(currentFile); currentFile = CreateOrderHistoryFileFromHeaderLine(line); retVal.Files.Add(currentFile); break; case "D": var orderDetail = new OrderHistoryDetail(); orderDetail.Parse(line); currentFile.Details.Add(orderDetail); break; default: break; } } // end of while SetErrorStatusAndFutureItemsOnFile(currentFile); return(retVal); }
/// <summary> /// Parse an array of strings as a file /// </summary> /// <param name="data"></param> /// <returns></returns> private OrderHistoryFileReturn ParseFile(string[] data) { OrderHistoryFileReturn retVal = new OrderHistoryFileReturn(); OrderHistoryFile currentFile = null; for (int i = 0; i < data.Length; i++) { string line = data[i]; if (line.Contains("END###")) { break; } switch (line.Substring(RECORDTYPE_STARTPOS, RECORDTYPE_LENGTH)) { case "H": SetErrorStatusAndFutureItemsOnFile(currentFile); currentFile = ParseNewOrderHistoryFileFromHeaderLine(line); retVal.Files.Add(currentFile); break; case "D": var orderDetail = new OrderHistoryDetail(); orderDetail.Parse(line); currentFile.Details.Add(orderDetail); break; default: break; } } // end of for loop SetErrorStatusAndFutureItemsOnFile(currentFile); return(retVal); }