public IEnumerable <ITradeData> ReadTradeData(TextReader textReader) { string line = textReader.ReadLine(); var cIdx = ColumnIndexes.GeFromHeaderLine(line, Separator); int rowNo = 2; while ((line = textReader.ReadLine()) != null) { ITradeData tradeData = null; try { string[] values = line.Split(new char[] { Separator }); if (values.Length > 6) { throw new FormatException("Too many columns in a row."); } tradeData = new TradeData(values[cIdx.DateIndex], values[cIdx.OpenIndex], values[cIdx.HighIndex], values[cIdx.LowIndex], values[cIdx.CloseIndex], values[cIdx.VolumeIndex]).CheckDataBusinessCorrectness(); } catch (Exception e) { e.Data["rowNo"] = rowNo; Trace.TraceError("Exception when processing row number: " + rowNo + " (" + e.Message + ")"); throw e; } rowNo++; yield return(tradeData); } }
public IEnumerable <ITradeData> ReadTradeData(TextReader textReader) { string line; int rowNo = 1; while ((line = textReader.ReadLine()) != null) { ITradeData tradeData = null; try { string[] values = line.Split(new char[] { Separator }); if (values.Length > 6) { throw new FormatException("Too many columns in a row."); } tradeData = new TradeData(values[0], values[1], values[2], values[3], values[4], values[5]).CheckDataBusinessCorrectness(); } catch (Exception e) { e.Data["rowNo"] = rowNo; Trace.TraceError("Exception when processing row number: " + rowNo + " (" + e.Message + ")"); throw e; } rowNo++; yield return(tradeData); } }
public IEnumerable <ITradeData> ReadTradeData(TextReader textReader) { XmlReader reader = XmlReader.Create(textReader); reader.MoveToContent(); reader.ReadToDescendant("value"); int rowNo = 1; do { ITradeData tradeData = null; try { var date = reader.GetAttribute("date"); var open = reader.GetAttribute("open"); var high = reader.GetAttribute("high"); var low = reader.GetAttribute("low"); var close = reader.GetAttribute("close"); var volume = reader.GetAttribute("volume"); tradeData = new TradeData(date, open, high, low, close, volume).CheckDataBusinessCorrectness(); } catch (Exception e) { e.Data["rowNo"] = rowNo; Trace.TraceError("Exception when processing row number: " + rowNo + " (" + e.Message + ")"); throw e; } rowNo++; yield return(tradeData); } while (reader.ReadToNextSibling("value")); }