Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Bug_Lib.BugType;
  8. using System.IO;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using System.Xml;
  12.  
  13. namespace Bug_Lib.Repository
  14. {
  15.     public interface IStorage
  16.     {
  17.         void WriteFile(int sprint, List<TaskBase> lst, string fileName); //пишем в файл
  18.         bool ReadFromFile(out int sprint, List<TaskBase> lst, string fileName); //читаем из файла
  19.  
  20.     }
  21.     public class Storage
  22.     {
  23.  
  24.         private JObject _jData;
  25.         private XmlDocument _doc;
  26.  
  27.         public class Json : Storage, IStorage
  28.         {
  29.             public void WriteFile(int sprint, List<TaskBase> lsBases, string fileName)
  30.             {
  31.                 #region JSON FORMATTER
  32.                 JObject jData = new JObject(
  33.                     new JProperty("Sprint", sprint),
  34.                     new JProperty("ChangesDate", DateTime.Now.ToString("MM-dd-yyyy-HH:mm")),
  35.                     new JProperty("Tasks",
  36.                         new JArray(
  37.                             from task in lsBases
  38.                             orderby lsBases.Count // порядок сортировки
  39.                         select new JObject(
  40.                                 new JProperty("ID", task.ID),
  41.                                 new JProperty("Type", task.Type),
  42.                                 new JProperty("Name", task.Name),
  43.                                 new JProperty("Description", task.Description),
  44.                                 new JProperty("items",
  45.                                     new JObject(
  46.                                         new JProperty("SprintNumber", task.SprintNumber),
  47.                                         new JProperty("Priority", task.Priority),
  48.                                         new JProperty("Difficulty", task.Dificulty),
  49.                                         new JProperty("Iterations", task.Iterations),
  50.                                         new JProperty("Status", task.Status))
  51.                                         )))));
  52.                 #endregion
  53.  
  54.                 File.WriteAllText($@"{fileName}.json", jData.ToString());
  55.  
  56.             }
  57.             public bool ReadFromFile(out int sprint, List<TaskBase> tasks, string fileName)
  58.             {
  59.                 sprint = 1;
  60.  
  61.                 if (!File.Exists($@"{fileName}.json") || new FileInfo($@"{fileName}.json").Length == 0)
  62.                 {
  63.                     return false;
  64.                 }
  65.                 else
  66.                 {
  67.                     tasks.Clear();
  68.                 }
  69.  
  70.                 _jData = JsonConvert.DeserializeObject<JObject>(File.ReadAllText($@"{fileName}.json"));
  71.  
  72.                 sprint = (int)_jData.SelectToken("Sprint");
  73.  
  74.                 foreach (var task in _jData.SelectToken("Tasks"))
  75.                 {
  76.                     switch (task["Type"].ToString())
  77.                     {
  78.                         case "Bug":
  79.                             tasks.Add(JsonConvert.DeserializeObject<Bug>(task.ToString()));
  80.                             break;
  81.  
  82.                         case "Feature":
  83.                             tasks.Add(JsonConvert.DeserializeObject<Feature>(task.ToString()));
  84.                             break;
  85.  
  86.                         case "Technical debt":
  87.                             tasks.Add(JsonConvert.DeserializeObject<TechDebt>(task.ToString()));
  88.                             break;
  89.                     }
  90.                 }
  91.  
  92.                 return true;
  93.             }
  94.         }
  95.  
  96.         public class Xml : Storage, IStorage
  97.         {
  98.             public void WriteFile(int sprint, List<TaskBase> lsBases, string fileName)
  99.             {
  100.  
  101.                 #region JSON FORMATTER
  102.  
  103.                 JObject jData = new JObject(
  104.                     new JProperty("Sprint", sprint),
  105.                     new JProperty("ChangesDate", DateTime.Now.ToString("MM-dd-yyyy-HH:mm")),
  106.                     new JProperty("Tasks",
  107.                         new JArray(
  108.                             from task in lsBases
  109.                             orderby lsBases.Count // порядок сортировки
  110.                             select new JObject(
  111.                                 new JProperty("ID", task.ID),
  112.                                 new JProperty("Type", task.Type),
  113.                                 new JProperty("Name", task.Name),
  114.                                 new JProperty("Description", task.Description),
  115.                                 new JProperty("items",
  116.                                     new JObject(
  117.                                         new JProperty("SprintNumber", task.SprintNumber),
  118.                                         new JProperty("Priority", task.Priority),
  119.                                         new JProperty("Difficulty", task.Difficulty),
  120.                                         new JProperty("Iterations", task.Iterations),
  121.                                         new JProperty("Status", task.Status))
  122.                                 )))));
  123.  
  124.                 #endregion
  125.  
  126.                 _doc = JsonConvert.DeserializeXmlNode(jData.ToString(), "Root");
  127.                 _doc.Save($@"{fileName}.xml");
  128.             }
  129.  
  130.             public bool ReadFromFile(out int sprint, List<TaskBase> tasks, string fileName)
  131.             {
  132.                 sprint = 1;
  133.  
  134.                 if (!File.Exists($@"{fileName}.xml") || new FileInfo($@"{fileName}.xml").Length == 0)
  135.                 {
  136.                     return false;
  137.                 }
  138.                 else
  139.                 {
  140.                     tasks.Clear();
  141.                 }
  142.  
  143.                 XmlDocument doc = new XmlDocument();
  144.                 doc.LoadXml(File.ReadAllText($@"{fileName}.xml"));
  145.                 _jData = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(doc));
  146.  
  147.                 sprint = (int)_jData.SelectToken("Root.Sprint");
  148.  
  149.                 foreach (var task in _jData.SelectToken("Root.Tasks"))
  150.                 {
  151.                     switch (task["Type"].ToString())
  152.                     {
  153.                         case "Bug":
  154.                             tasks.Add(JsonConvert.DeserializeObject<Bug>(task.ToString()));
  155.                             break;
  156.  
  157.                         case "Feature":
  158.                             tasks.Add(JsonConvert.DeserializeObject<Feature>(task.ToString()));
  159.                             break;
  160.  
  161.                         case "Technical debt":
  162.                             tasks.Add(JsonConvert.DeserializeObject<TechDebt>(task.ToString()));
  163.                             break;
  164.                     }
  165.                 }
  166.  
  167.                 return true;
  168.             }
  169.         }
  170.     }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement