示例#1
0
        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);
            }
        }
示例#2
0
 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);
 }
示例#3
0
 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);
 }
示例#4
0
        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));
        }