Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }