TeachingCaptureDataSerializer.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. using Vinno.IUS.Common.Configuration;
  5. using Vinno.IUS.Common.Log;
  6. using Vinno.IUS.Common.Network.Leaf;
  7. using Vinno.vCloud.Common.FIS.Remedicals;
  8. namespace Vinno.vCloud.Common.FIS.Teaching
  9. {
  10. static class TeachingCaptureDataSerializer
  11. {
  12. /// <summary>
  13. /// Serialize capture data content to a file.
  14. /// </summary>
  15. /// <param name="data"></param>
  16. /// <param name="filePath"></param>
  17. public static void Serialize(this TeachingCaptureData data, string filePath)
  18. {
  19. var stringBuilder = new StringBuilder();
  20. stringBuilder.AppendLine("[TeachingCaptureData]");
  21. stringBuilder.AppendLine($"Id = {data.Id}");
  22. stringBuilder.AppendLine($"UserId={data.UserId}");
  23. stringBuilder.AppendLine($"UploadStatus={data.Status}");
  24. stringBuilder.AppendLine($"OrginalFilePath = {data.OrginalFilePath}");
  25. File.WriteAllText(filePath, stringBuilder.ToString());
  26. }
  27. /// <summary>
  28. /// Deserialize a capture data from a file.
  29. /// </summary>
  30. /// <param name="leaf"></param>
  31. /// <param name="captureDataFilePath"></param>
  32. /// <returns></returns>
  33. public static TeachingCaptureData Deserialize(ClientLeaf leaf, string captureDataFilePath)
  34. {
  35. if (File.Exists(captureDataFilePath))
  36. {
  37. try
  38. {
  39. var configContent = File.ReadAllText(captureDataFilePath);
  40. var configLoader = new ConfigLoader();
  41. var sections = configLoader.LoadConfig(configContent);
  42. if (sections.Count != 1)
  43. {
  44. return null;
  45. }
  46. var section = sections[0];
  47. string id = string.Empty;
  48. string orginalFilePath = string.Empty;
  49. string userId = string.Empty;
  50. var status = UploadStatus.Idle;
  51. foreach (var item in section.Items)
  52. {
  53. switch (item.Key)
  54. {
  55. case "Id":
  56. id = item.Value;
  57. break;
  58. case "UserId":
  59. userId = item.Value;
  60. break;
  61. case "UploadStatus":
  62. Enum.TryParse(item.Value, out status);
  63. break;
  64. case "OrginalFilePath":
  65. orginalFilePath = item.Value;
  66. break;
  67. }
  68. }
  69. var data = new TeachingCaptureData(leaf, orginalFilePath, id,userId,status);
  70. return data;
  71. }
  72. catch (Exception e)
  73. {
  74. Logger.WriteLineError($"Load Capture data error: {e}");
  75. }
  76. }
  77. return null;
  78. }
  79. }
  80. }