private static bool IsRegexValid(List <string> lineStringList, int lineCounter) { Regex emailRegex = new Regex(Constants.emailRegex); Regex dateRegex = new Regex(Constants.dateRegex); Regex idRegex = new Regex(Constants.idRegex); Regex wordRegex = new Regex(Constants.singleWordRegex); Regex multipleWordsRegex = new Regex(Constants.multipleWordsRegex); Regex hyphenatedRegex = new Regex(Constants.hyphenatedRegex); if (idRegex.IsMatch(lineStringList.ElementAt(0)) && wordRegex.IsMatch(lineStringList.ElementAt(1)) && wordRegex.IsMatch(lineStringList.ElementAt(2)) && dateRegex.IsMatch(lineStringList.ElementAt(3)) && emailRegex.IsMatch(lineStringList.ElementAt(4)) && wordRegex.IsMatch(lineStringList.ElementAt(5)) && wordRegex.IsMatch(lineStringList.ElementAt(6)) && multipleWordsRegex.IsMatch(lineStringList.ElementAt(7)) && hyphenatedRegex.IsMatch(lineStringList.ElementAt(8))) { return(true); } else { ErrorUtil.GenerateError(lineCounter, "wrong input format"); return(false); } }
private static bool IsLineElementCountValid(List <string> lineStringList, int line) { if (lineStringList.Count < Constants.properLineLength) { ErrorUtil.GenerateError(line, "not enough data. Should be " + Constants.properLineLength + " elements, but has " + lineStringList.Count); return(false); } return(true); }
private static bool ContainsNoWhitespaceValues(List <string> lineStringList, int line) { foreach (string element in lineStringList) { if (string.IsNullOrEmpty(element)) { ErrorUtil.GenerateError(line, "part of the data is missing"); return(false); } } return(true); }
public static University ParseCsvFileToDifferentFormat(string csvFile) { List <string> lineStringList = new List <string>(); List <Student> studentList = new List <Student>(); int lineCounter = 1; try { if (File.Exists(Constants.logFile)) { File.Delete(Constants.logFile); } FileStream writer = new FileStream(Constants.logFile, FileMode.Create); writer.Close(); using (StreamReader reader = new StreamReader(File.OpenRead(csvFile))) { string line = ""; while ((line = reader.ReadLine()) != null) { if (!String.IsNullOrWhiteSpace(line)) { lineStringList = line.Split(',').ToList(); if (IsLineElementCountValid(lineStringList, lineCounter)) { if (ContainsNoWhitespaceValues(lineStringList, lineCounter)) { Student student = ParseToStudent(lineStringList, lineCounter); if (student != null) { if (!HasSameStudents(studentList, student, lineCounter)) { studentList.Add(student); } else { string message = "student with id " + student.Id + " already exists"; ErrorUtil.GenerateError(lineCounter, message); } } } } } else { ErrorUtil.GenerateError(lineCounter, "empty line"); } lineCounter++; } } } catch (FileNotFoundException e) { ErrorUtil.GenerateError(lineCounter, "file does not exist or the path is wrong"); Console.WriteLine(e.Message); } Dictionary <string, int> studiesMap = createStudiesMap(studentList); List <ActiveStudy> studiesList = TransformMapToStudiesList(studiesMap); return(new University(DateTime.Now, "Anna Miklash", studentList, studiesList)); }