ConfigFileLoader.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. namespace ConfigOperator;
  2. public class ConfigFileLoader(ConfigFiles configFiles)
  3. {
  4. public void Load()
  5. {
  6. if (!DierctoryHelper.GetAllFiles(Paths.ConfigFileFolder, out List<string>? configs) || configs is null)
  7. return;
  8. configFiles.Files.Clear();
  9. foreach (string filePath in configs)
  10. {
  11. //if (!XmlHelper.DeserializeXml(filePath, out ConfigSaveXML? output) || output is null)
  12. // continue;
  13. if (!JsonHelper.ReadFile(filePath, out ConfigSaveXML? output) || output is null)
  14. continue;
  15. if (output.Mini8Configs is null)
  16. continue;
  17. FileInfo fileInfo = new(filePath);
  18. TemperatureConfig temperatureConfig = new();
  19. output.Adapt(temperatureConfig);
  20. temperatureConfig.ConfigName = fileInfo.Name.Replace(fileInfo.Extension, "");
  21. temperatureConfig.Mini8sConfig = [];
  22. foreach (Mini8ConfigXML mini8ConfigXML in output.Mini8Configs)
  23. {
  24. Mini8Config mini8Config = new()
  25. {
  26. Index = mini8ConfigXML.Index,
  27. ChannelConfig = []
  28. };
  29. temperatureConfig.Mini8sConfig[mini8ConfigXML.Index] = mini8Config;
  30. if (mini8ConfigXML.ChannelConfig is null)
  31. continue;
  32. //mini8ConfigXML.ChannelConfig.Foreach(t => mini8Config.ChannelConfig[t.Index] = t);
  33. foreach (var channelConfig in mini8ConfigXML.ChannelConfig)
  34. {
  35. if (channelConfig.Running_P == 0)
  36. channelConfig.Running_P = 100;
  37. if (channelConfig.Running_I == 0)
  38. channelConfig.Running_I = 100;
  39. if (channelConfig.Running_D == 0)
  40. channelConfig.Running_D = 100;
  41. mini8Config.ChannelConfig[channelConfig.Index] = channelConfig;
  42. }
  43. }
  44. configFiles.Files[temperatureConfig.ConfigName] = temperatureConfig;
  45. }
  46. }
  47. public void Save()
  48. {
  49. if (configFiles.Files is null)
  50. return;
  51. foreach (TemperatureConfig configFile in configFiles.Files.Values)
  52. {
  53. if (configFile is null)
  54. continue;
  55. if (string.IsNullOrEmpty(configFile.ConfigName))
  56. continue;
  57. if (configFile.Mini8sConfig is null)
  58. continue;
  59. ConfigSaveXML configSaveXML = new()
  60. {
  61. EditTime = configFile.EditTime,
  62. Editor = configFile.Editor,
  63. Description = configFile.Description,
  64. Mini8Configs = []
  65. };
  66. foreach (Mini8Config mini8Config in configFile.Mini8sConfig.Values)
  67. {
  68. if (mini8Config.ChannelConfig is null)
  69. continue;
  70. Mini8ConfigXML mini8ConfigXML = new()
  71. {
  72. Index = mini8Config.Index,
  73. ChannelConfig = [.. mini8Config.ChannelConfig.Values],
  74. };
  75. configSaveXML.Mini8Configs.Add(mini8ConfigXML);
  76. }
  77. string path = Path.Combine(Paths.ConfigFileFolder, $"{configFile.ConfigName}.mc");
  78. //XmlFileHelper.WriteFile(path, configSaveXML);
  79. JsonHelper.WriteFile(path, configSaveXML);
  80. }
  81. }
  82. public void LoadCurrentSetting()
  83. {
  84. string filePath = Path.Combine(Paths.ConfigFileFolder, "CurrentConfig", $"LastSaved.mc");
  85. //if (!XmlHelper.DeserializeXml(filePath, out ConfigSaveXML? output) || output is null)
  86. // return;
  87. if (!JsonHelper.ReadFile(filePath, out ConfigSaveXML? output) || output is null)
  88. return;
  89. if (output.Mini8Configs is null)
  90. return;
  91. FileInfo fileInfo = new(filePath);
  92. TemperatureConfig temperatureConfig = new();
  93. output.Adapt(temperatureConfig);
  94. temperatureConfig.ConfigName = fileInfo.Name.Replace(fileInfo.Extension, "");
  95. temperatureConfig.Mini8sConfig = [];
  96. foreach (Mini8ConfigXML mini8ConfigXML in output.Mini8Configs)
  97. {
  98. Mini8Config mini8Config = new()
  99. {
  100. Index = mini8ConfigXML.Index,
  101. ChannelConfig = []
  102. };
  103. temperatureConfig.Mini8sConfig[mini8ConfigXML.Index] = mini8Config;
  104. if (mini8ConfigXML.ChannelConfig is null)
  105. continue;
  106. mini8ConfigXML.ChannelConfig.Foreach(t => mini8Config.ChannelConfig[t.Index] = t);
  107. }
  108. configFiles.CurrentConfigFile = temperatureConfig;
  109. }
  110. public void SaveCurrentSetting()
  111. {
  112. if (configFiles.CurrentConfigFile is null)
  113. return;
  114. TemperatureConfig configFile = configFiles.CurrentConfigFile;
  115. if (configFile is null)
  116. return;
  117. if (string.IsNullOrEmpty(configFile.ConfigName))
  118. return;
  119. if (configFile.Mini8sConfig is null)
  120. return;
  121. ConfigSaveXML configSaveXML = new()
  122. {
  123. EditTime = configFile.EditTime,
  124. Editor = configFile.Editor,
  125. Description = configFile.Description,
  126. Mini8Configs = []
  127. };
  128. foreach (Mini8Config mini8Config in configFile.Mini8sConfig.Values)
  129. {
  130. if (mini8Config.ChannelConfig is null)
  131. continue;
  132. Mini8ConfigXML mini8ConfigXML = new()
  133. {
  134. Index = mini8Config.Index,
  135. ChannelConfig = [.. mini8Config.ChannelConfig.Values],
  136. };
  137. configSaveXML.Mini8Configs.Add(mini8ConfigXML);
  138. }
  139. string path = Path.Combine(Paths.ConfigFileFolder, "CurrentConfig", $"LastSaved.mc");
  140. //XmlFileHelper.WriteFile(path, configSaveXML);
  141. JsonHelper.WriteFile(path, configSaveXML);
  142. }
  143. }
  144. public class CurrentConfigXML
  145. {
  146. public string? SelectedConfig { get; set; }
  147. }
  148. public class ConfigSaveXML
  149. {
  150. public DateTime EditTime { get; set; }
  151. public string? Editor { get; set; }
  152. public string? Description { get; set; }
  153. public List<Mini8ConfigXML>? Mini8Configs { get; set; }
  154. }
  155. public class Mini8ConfigXML
  156. {
  157. public byte Index { get; set; }
  158. public List<ChannelConfig>? ChannelConfig { get; set; }
  159. }