Beispiel #1
0
 public ReturnCode LoadFromXML(string fileName)
 {
     if (!File.Exists(fileName))
     {
         return(ReturnCode.FILE_DOESNT_EXIST);
     }
     try
     {
         XmlDocument doc = new XmlDocument();
         doc.Load(fileName);
         presets.Clear();
         foreach (XmlNode presetNode in doc.DocumentElement.ChildNodes)
         {
             Preset newPreset = new Preset(presetNode.Attributes["name"]?.InnerText);
             foreach (XmlNode siteNode in presetNode.ChildNodes)
             {
                 Site site = siteMan.GetSites().Single(s => s.Name == siteNode.Attributes["name"]?.InnerText);
                 foreach (XmlNode facilityNode in siteNode.ChildNodes)
                 {
                     Facility fac = site.GetFacilities().Single(s => s.Name == facilityNode.Attributes["name"]?.InnerText);
                     foreach (XmlNode systemNode in facilityNode.ChildNodes)
                     {
                         DetectionSystem sys = fac.GetSystems().Single(s => s.Name == systemNode.Attributes["name"]?.InnerText);
                         foreach (XmlNode instrumentNode in systemNode.ChildNodes)
                         {
                             if (instrumentNode.Name == "Instrument")
                             {
                                 Instrument inst = sys.GetInstruments().Single(i => i.Name == instrumentNode.Attributes["name"]?.InnerText);
                                 if (instrumentNode.Attributes["checked"] != null)
                                 {
                                     if (instrumentNode.Attributes["checked"].InnerText == "true")
                                     {
                                         newPreset.GetActiveInstruments().Add(inst);
                                         foreach (XmlNode chanNode in instrumentNode.ChildNodes)
                                         {
                                             Channel chan = inst.GetChannels().Single(c => c.Name == chanNode.Attributes["name"]?.InnerText);
                                             foreach (XmlNode checkNode in chanNode.ChildNodes)
                                             {
                                                 if (checkNode.Attributes["checked"] != null)
                                                 {
                                                     if (checkNode.Attributes["checked"].InnerText == "true")
                                                     {
                                                         newPreset.AddChannel(chan, int.Parse(checkNode.Attributes["chart"].InnerText));
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             else if (instrumentNode.Name == "EventGenerator")
                             {
                                 XmlNode        eventGenNode   = instrumentNode;
                                 EventGenerator eventGenerator = sys.GetEventGenerators().Single(e => e.Name == eventGenNode.Attributes["name"]?.InnerText);
                                 if (eventGenNode.Attributes["checked"].InnerText == "true")
                                 {
                                     newPreset.GetActiveEventGenerators().Add(eventGenerator);
                                 }
                             }
                             else
                             {
                                 return(ReturnCode.CORRUPTED_FILE);
                             }
                         }
                     }
                 }
             }
             presets.Add(newPreset);
         }
     }
     catch
     {
         return(ReturnCode.FAIL);
     }
     return(ReturnCode.SUCCESS);
 }