public Results.FileValue Execute(string fileName, Configuration.FileConfiguration config) { if (!System.IO.File.Exists(fileName)) { throw new ReadFileException(fileName, "There is no file: " + fileName); } StreamReader reader = new StreamReader(fileName); string content = reader.ReadToEnd(); reader.Close(); string[] lines = content.Split(new char[] { '\n' }); Results.FileValue res = new Results.FileValue(); res.FileName = fileName; res.Headers = ReadHeaders(lines, config); res.Footers = ReadFooter(lines, config); res.Records = ReadRecords(lines, config); return(res); }
private IList <LineValue> ReadFooter(string[] lines, Configuration.FileConfiguration config) { IList <LineValue> list = new List <LineValue>(); #region Reading Configuration IList <Configuration.LineConfiguration> linesConfig = new List <Configuration.LineConfiguration>(); for (int c = 0; c < config.Lines.Count; c++) { if (config.Lines[c].IsFooter) { linesConfig.Add(config.Lines[c]); } } #endregion for (int i = 0; i < linesConfig.Count; i++) { string headerLine = lines[lines.Length - 1 - linesConfig[i].LineOffset]; list.Add(ReadLine(lines.Length - linesConfig[i].LineOffset, linesConfig[i].Name, headerLine, linesConfig[i].Parameters)); } return(list); }
private IList <LineValue> ReadRecords(string[] lines, Configuration.FileConfiguration config) { IList <LineValue> list = new List <LineValue>(); int offSetHeader = 0; int offSetFooter = 0; #region Reading Configuration for (int c = 0; c < config.Lines.Count; c++) { if (config.Lines[c].IsFooter) { int offset = config.Lines[c].LineOffset + 1; if (offSetFooter < offset) { offSetFooter = offset; } } } for (int c = 0; c < config.Lines.Count; c++) { if (config.Lines[c].IsHeader) { int offset = config.Lines[c].LineOffset + 1; if (offSetHeader < offset) { offSetHeader = offset; } } } IList <Configuration.LineConfiguration> linesConfig = new List <Configuration.LineConfiguration>(); for (int c = 0; c < config.Lines.Count; c++) { if (!config.Lines[c].IsFooter && !config.Lines[c].IsHeader) { linesConfig.Add(config.Lines[c]); } } #endregion for (int c = offSetHeader; c < lines.Length - offSetFooter - 1; c++) { int indexConfig = GetIndexConfigCondition(lines[c], linesConfig); if (indexConfig == -1) { continue; } list.Add(ReadLine(c + 1, linesConfig[indexConfig].Name, lines[c], linesConfig[indexConfig].Parameters)); } return(list); }