Esempio n. 1
0
        public override void Append <Y>(ListSerializable <T> listElements, string path, string ElementsName = "")
        {
            if (!File.Exists(path))
            {
                throw new FileNotFoundException(path + " not found");
            }

            if (string.IsNullOrEmpty(ElementsName))
            {
                throw new ArgumentNullException(nameof(ElementsName) + " is null or empty");
            }

            _Path = path;

            string text = _XmlSerializer.SerializeList <Y>(listElements);

            ///get just necesserary element
            XDocument       docTemp        = XDocument.Parse(text);
            XElement        parent         = docTemp.Descendants(ElementsName).First();
            List <XElement> elementToWrite = parent.Elements().ToList();

            ///read file
            Loader loaderXml = new Loader();
            string message   = loaderXml.LoadXMLFile(path);

            if (string.IsNullOrEmpty(message))
            {
                XDocument doc     = loaderXml.GetDocument();
                XElement  element = doc.Element(ElementsName);
                element.Add(elementToWrite);
                Save(doc);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// read line and create object T
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="fileName"></param>
        /// <returns>Liste of T, one by line</returns>
        public ListSerializable <T> read <Y>(string filePath) where Y : ListSerializable <T>
        {
            ListSerializable <T> elements = (Y)Activator.CreateInstance(typeof(Y));

            using (var reader = new StreamReader(filePath))
            {
                int count = 0;
                while (!reader.EndOfStream)
                {
                    var line = reader.ReadLine();
                    if (count == 0 && HasHeader)
                    {
                        CheckCorrectHeader(line);
                    }
                    else
                    {
                        IStandardSerializer <T> serializer = new CsvSerializer <T>(Separator);
                        Serializable            element    = serializer.Deserialize(line);
                        elements.Add((T)element);
                    }
                    count++;
                }
            }

            return(elements);
        }
Esempio n. 3
0
        internal static void Append <Y>(IStandardSerializer <T> serializer, T element, string path) where Y : ListSerializable <T>
        {
            string content            = FileReader.Read(path);
            ListSerializable <T> list = (Y)Activator.CreateInstance(typeof(Y));

            try
            {
                //check if it is a list
                list = serializer.DeserializeList <Y>(content);
                if (list.Count == 0)
                {
                    //maybe it's an object
                    list.Add(serializer.Deserialize(content));
                }
            }
            catch
            {
                //else is just an object
                list.Add(serializer.Deserialize(content));
            }

            list.Add(element);
            string text = serializer.SerializeList <Y>(list);

            FileWriter.Write(text, path);
        }
Esempio n. 4
0
        public void GenericReaderCsv()
        {
            ListSerializable <User> users = new UserList();

            users.Add(new User("Toto", "Titi"));
            users.Add(new User("Tata", "Roro"));

            IWriter <User> write = new CsvWriter <User>(';', new StringList {
                "Name", "Firstname"
            });

            write.Write <UserList>(users, CsvFile);

            IGenericReader <User> reader = new CsvReader <User>(';', new StringList {
                "Name", "Firstname"
            });

            ListSerializable <User> usersToCompare = reader.read <UserList>(CsvFile);

            Assert.IsNotNull(usersToCompare);

            Assert.AreEqual(users[0].Firstname, usersToCompare[0].Firstname);
            Assert.AreEqual(users[0].Name, usersToCompare[0].Name);

            Assert.AreEqual(users[1].Firstname, usersToCompare[1].Firstname);
            Assert.AreEqual(users[1].Name, usersToCompare[1].Name);
        }
Esempio n. 5
0
        public void writeExcelFile()
        {
            ListSerializable <User> users = new UserList();

            users.Add(new User("Toto", "Titi"));
            users.Add(new User("Tata", "Roro"));

            IWriter <User> write = new ExcelWriter <User>("Users", new StringList {
                "Name", "Firstname"
            });

            write.Write <UserList>(users, ExcelFile);

            IReader <User> reader = new ExcelReader <User>("Users", new StringList {
                "Name", "Firstname"
            });

            ListSerializable <User> usersToCompare = reader.read <UserList>(ExcelFile);

            Assert.IsNotNull(usersToCompare);

            Assert.AreEqual(users[0].Firstname, usersToCompare[0].Firstname);
            Assert.AreEqual(users[0].Name, usersToCompare[0].Name);

            Assert.AreEqual(users[1].Firstname, usersToCompare[1].Firstname);
            Assert.AreEqual(users[1].Name, usersToCompare[1].Name);
        }
Esempio n. 6
0
        public override void Append <Y>(ListSerializable <T> listElements, string path, string ElementsName = "")
        {
            ExcelReader <T>      reader = new ExcelReader <T>(_WorkSheetName);
            ListSerializable <T> list   = reader.read <Y>(path);

            list.AddRange(listElements);
            Write(list, path);
        }
Esempio n. 7
0
 public override void Append <Y>(ListSerializable <T> listElements, string path, string ElementsName = "")
 {
     if (File.Exists(path))
     {
         string text       = _JsonSerializer.SerializeList <Y>(listElements);
         JArray root       = (JArray)JsonConvert.DeserializeObject(File.ReadAllText(path));
         JArray parentList = JArray.Parse(text);
         foreach (var item in parentList.Children())
         {
             root.Add(item);
         }
         FileWriter.Write(root.ToString(), path);
     }
     else
     {
         throw new FileNotFoundException(path + "not found");
     }
 }
Esempio n. 8
0
        public ListSerializable <T> read <Y>(string filePath) where Y : ListSerializable <T>
        {
            Loader loader       = new Loader();
            string errorMessage = loader.LoadXMLFile(filePath, _namespaceUri, _pathXsdFile);

            if (string.IsNullOrEmpty(errorMessage))
            {
                XDocument doc = loader.GetDocument();
                //test if file is a list of elements
                XElement element = doc.Element(_tagElements);
                IStandardSerializer <T> serializer = new XmlSerializer <T>();
                if (element != null)
                {
                    string result = string.Concat(element);
                    return(serializer.DeserializeList <Y>(result));
                }
                else
                {
                    //test if file contains only one element
                    element = doc.Element(_typeElement);
                    if (element != null)
                    {
                        string result = string.Concat(element);
                        ListSerializable <T> elements = (Y)Activator.CreateInstance(typeof(Y));
                        elements.Add(serializer.Deserialize(result));
                        return(elements);
                    }
                    else
                    {
                        throw new ArgumentException("File not contains this type of serializable object");
                    }
                }
            }
            else
            {
                throw new InvalidOperationException(errorMessage);
            }
        }
Esempio n. 9
0
        public void GenericReaderJson()
        {
            ListSerializable <User> users = new UserList();

            users.Add(new User("Toto", "Titi"));
            users.Add(new User("Tata", "Roro"));

            IWriter <User> write = new JsonWriter <User>();

            write.Write <UserList>(users, JsonFile);

            IGenericReader <User> reader = new JsonReader <User>();

            ListSerializable <User> usersToCompare = reader.read <UserList>(JsonFile);

            Assert.IsNotNull(usersToCompare);

            Assert.AreEqual(users[0].Firstname, usersToCompare[0].Firstname);
            Assert.AreEqual(users[0].Name, usersToCompare[0].Name);

            Assert.AreEqual(users[1].Firstname, usersToCompare[1].Firstname);
            Assert.AreEqual(users[1].Name, usersToCompare[1].Name);
        }
Esempio n. 10
0
        public void GenericReaderDefaultWithBasicSerializer()
        {
            ListSerializable <User> users = new UserList();

            users.Add(new User("Toto", "Titi"));
            users.Add(new User("Tata", "Roro"));

            IWriter <User> write = new DefaultWriter <User>(new UserBasicSerializer());

            write.Write <UserList>(users, CsvFile);

            IGenericReader <User> reader = new DefaultReader <User>(new UserBasicSerializer());

            ListSerializable <User> usersToCompare = reader.read <UserList>(CsvFile);

            Assert.IsNotNull(usersToCompare);

            Assert.AreEqual(users[0].Firstname, usersToCompare[0].Firstname);
            Assert.AreEqual(users[0].Name, usersToCompare[0].Name);

            Assert.AreEqual(users[1].Firstname, usersToCompare[1].Firstname);
            Assert.AreEqual(users[1].Name, usersToCompare[1].Name);
        }
Esempio n. 11
0
        public override void Append <Y>(ListSerializable <T> listElements, string path, string ElementsName = "")
        {
            string text = _CsvSerializer.SerializeList <Y>(listElements);

            if (_CsvSerializer.HasHeader)
            {
                Type type         = typeof(T);
                var  bindingFlags = BindingFlags.Instance |
                                    BindingFlags.NonPublic |
                                    BindingFlags.Public;
                FieldInfo[] listValues = type.GetFields(bindingFlags);
                if (listValues.Length > 0)
                {
                    StringList listValuesName = new StringList(listValues.Select(value => value.Name).ToList());
                    string     header         = listValuesName.Join(_CsvSerializer.Separator);
                    StringList linesInfile    = new CsvReader <T>(_CsvSerializer.Separator).readLine(path, true);
                    if (linesInfile.First() != header)
                    {
                        //add header and rewrite file
                        StringBuilder sb = new StringBuilder();
                        sb.AppendLine(header);
                        foreach (string line in linesInfile)
                        {
                            sb.AppendLine(line);
                        }
                        FileWriter.Write(sb.ToString(), path);
                    }

                    if (text.Contains(header))
                    {
                        //remove header if exist in text to append
                        text = text.Remove(0, header.Length + 2); //2 for \r\n
                    }
                }
            }
            FileWriter.Append(text, path);
        }
Esempio n. 12
0
 public string SerializeList <Y>(ListSerializable <T> listObjects) where Y : ListSerializable <T>
 {
     return(SerializeList((Y)listObjects));
 }
Esempio n. 13
0
        public override void Append <Y>(ListSerializable <T> listElements, string path, string ElementsName = "")
        {
            string text = _DefaultSerializer.SerializeList <Y>(listElements);

            FileWriter.Append(text, path);
        }
Esempio n. 14
0
 public void Write <Y>(ListSerializable <T> listElements, string path) where Y : ListSerializable <T>
 {
     Write((Y)listElements, path);
 }
Esempio n. 15
0
 public abstract void Append <Y>(ListSerializable <T> listElements, string path, string ElementsName = "") where Y : ListSerializable <T>;
Esempio n. 16
0
 public ICollection <object[]> SerializeList <Y>(ListSerializable <T> listObjects) where Y : ListSerializable <T>
 {
     return(SerializeList((Y)listObjects));
 }