private static void Main(string[] args) { Console.WriteLine("Hello World"); string path; FileStream writer; if (args.Length > 0) { path = args[0]; } else { path = @"Data\dane.csv"; Console.WriteLine("No file provided as the first argument, using built-in dane.csv \n"); }; if (args[1].Length > 0) { writer = new FileStream(args[1], FileMode.Create); } else { writer = new FileStream(@"data.xml", FileMode.Create); Console.WriteLine("No output file or invalid argument specified. Using default data.xml"); } if (args[2].Length > 0 && args[2].Contains("xml")) { Console.WriteLine("Running XML mode \n"); mode = "xml"; } else if (args[2].Contains("json")) { Console.WriteLine("Running JSON mode \n"); mode = "json"; } else { Console.WriteLine("Invalid output type provided \n"); mode = "invalid"; } //Wczytywanie var fi = new FileInfo(path); var list = new List <Student>(); if (!fi.Exists) { throw new System.ArgumentException("The file path is incorrect"); } string line = null; try { using var stream = new StreamReader(fi.OpenRead()); while ((line = stream.ReadLine()) != null) { string[] student = line.Split(','); //Console.WriteLine(line); var fileStudent = new Student { Imie = student[0], Nazwisko = student[1], Studies = new Studies(student[2], student[3]), IndexNumber = student[4], Birthdate = student[5], Email = student[6], MothersName = student[7], FathersName = student[8] }; list.Add(fileStudent); } stream.Dispose(); } catch (FileNotFoundException ex) { Console.WriteLine(ex); Console.WriteLine("File to read from was not found! \n"); } //XML //var list = new List<Student>(); //var st = new Student //{ // IndexNumber = "s40269", // Imie = "Jan", // Nazwisko = "Kowalski", // Birthdate = "02.05.1980", // Email = "*****@*****.**", // MothersName = "Pawlak", // FathersName = "Biedny", // Studies = new Studies("IT", "Daily") //}; //list.Add(st); University u = new University { CreatedAt = DateTime.Now, Author = "Jan Kowalski", students = list }; UniversityWrapper uw = new UniversityWrapper { University = u }; XmlSerializer serializer = new XmlSerializer(typeof(University)); //new XmlRootAttribute("university")); if (mode.Contains("json")) { var jsonString = JsonSerializer.Serialize(uw, typeof(UniversityWrapper)); File.WriteAllText("data.json", jsonString); serializer.Serialize(writer, u); } else if (mode.Contains("xml")) { FileStream writerXML = new FileStream(@"data.xml", FileMode.Create); serializer.Serialize(writerXML, u); } else if (mode.Contains("invalid")) { Console.WriteLine("You did not provide third parameter! Not writing to any format! \n"); } else { Console.WriteLine("Unknown state of writing mode, report this to dev! \n"); } //serializer.Serialize(writer, list); }
static void Main(string[] args) { var path = @"C:\Users\Łukasz\Desktop\dane.csv"; var resultPath = @"C:\Users\Łukasz\Desktop\result.xml"; var resultFormat = "xml"; var log = new StringBuilder(); try { if (args.Length != 3) { throw new ArgumentException("Wrong number of arguments"); } if (args.Length == 3) { if (!(args[2] == "xml" || args[2] == ".xml" || args[2] == "json" || args[2] == ".json")) { throw new ArgumentException("Unable to save in this format"); } resultFormat = args[2]; if (!Directory.Exists((resultPath))) { throw new ArgumentException("Incorrect path"); } resultPath = "@" + args[1]; if (!File.Exists(path)) { throw new FileNotFoundException("File " + path + " does not exist."); } path = "@" + args[0]; } } catch (Exception ex) { log.Append(ex.Message); path = @"C:\Users\Łukasz\Desktop\dane.csv"; resultPath = @"C:\Users\Łukasz\Desktop\result.xml"; resultFormat = "xml"; } var university = new University { date = DateTime.Today.ToString("dd.MM.yyyy"), author = "Łukasz Grzybowski", students = new HashSet <Student>(new OwnComparer()), studies = new List <ActiveStudies>() }; var allLines = File.ReadLines(path); HashSet <Student> studentsHashSet = university.students; foreach (var line in allLines) { var eachStudent = line.Split(","); if (eachStudent.Length != 9) { log.Append("Wrong number of columns in this line: " + line); continue; } var stud = new Student(eachStudent); if (!studentsHashSet.Add(stud)) { log.Append("This student already exists: " + stud.FirstName + " " + stud.LastName + " " + stud.Index + " "); } else { var flag2 = true; foreach (var stud2 in university.studies) { if (stud2.name == stud.studies.name) { stud2.numberOfStudents++; flag2 = false; break; } } if (flag2 == true) { university.studies.Add(new ActiveStudies { name = stud.studies.name, numberOfStudents = 1 }); } } var flag = true; foreach (var line2 in eachStudent) { if (line2.Length != 0) { continue; } log.Append("One or more columns are empty in this line: " + line); flag = false; break; } if (!flag) { continue; } } File.WriteAllText(@"C:\Users\Łukasz\Desktop\log.txt", log.ToString()); if (resultFormat == "xml") { var serializer = new XmlSerializer(typeof(University)); var writer = new FileStream(resultPath, FileMode.Create); serializer.Serialize(writer, university, new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty })); } else if (resultFormat == "json") { var pathToJSON = resultPath; University universityToJSON = university; string json = JsonConvert.SerializeObject(universityToJSON); File.WriteAllText(pathToJSON, json); } }