public void UpdateLookupTableEntry(LookupTableType lookupTableType, LookupTableModule newLookupTableModule) { switch (lookupTableType) { case LookupTableType.LINES: UpdateLookupTableEntry("Lines", newLookupTableModule); break; case LookupTableType.PAPER_CHART: UpdateLookupTableEntry("PaperChart", newLookupTableModule); break; case LookupTableType.PLAIN_BOUNDARIES: UpdateLookupTableEntry("PlainBoundaries", newLookupTableModule); break; case LookupTableType.SIMPLIFIED: UpdateLookupTableEntry("Simplified", newLookupTableModule); break; case LookupTableType.SYMBOLIZED_BOUNDARIES: UpdateLookupTableEntry("SymbolizedBoundaries", newLookupTableModule); break; } }
internal static Dictionary <LookupTableType, LookupTable> Read(XmlDocument doc) { // select "lookups" node Dictionary <LookupTableType, LookupTable> lookupTables = new Dictionary <LookupTableType, LookupTable>(); XmlNode lookupsNode = doc.DocumentElement.SelectSingleNode("lookups"); foreach (XmlNode lookupTableNode in lookupsNode.ChildNodes) { LookupTable lookupTable = new LookupTable() { DrawnType = GetLookTableType(lookupTableNode.Attributes["name"].InnerText) }; string shapeType = lookupTableNode.Attributes["shapeType"].InnerText; XmlNodeList lookups = lookupTableNode.SelectNodes("lookup"); foreach (XmlNode lookup in lookups) { LookupTableModule lookupModule = new LookupTableModule() { Rcid = Convert.ToInt32(lookup.Attributes["rcid"].InnerText, CultureInfo.InvariantCulture), ModuleName = lookup.SelectSingleNode("module").InnerText, ObjectClass = lookup.SelectSingleNode("objectClass").InnerText, DisplayType = shapeType, DisplayPriority = Convert.ToInt32(lookup.SelectSingleNode("displayPriority").InnerText, CultureInfo.InvariantCulture), RadarPriority = lookup.SelectSingleNode("radarPriority").InnerText[0], DisplayCategory = lookup.Attributes["category"].InnerText }; XmlNode attributesNode = lookup.SelectSingleNode("attributes"); if (attributesNode != null) { foreach (XmlNode attrNode in attributesNode.ChildNodes) { lookupModule.Attributes.Add(attrNode.Name, attrNode.InnerText); } } XmlNode instructionsNode = lookup.SelectSingleNode("instructions"); if (instructionsNode != null) { foreach (XmlNode instrNode in instructionsNode.ChildNodes) { lookupModule.Instructions.Add(instrNode.InnerText); } } lookupTable.LookupModules.Add(lookupModule); } lookupTables.Add(GetLookTableType(lookupTableNode.Attributes["name"].InnerText), lookupTable); } return(lookupTables); }
private void UpdateLookupTableEntry(string type, LookupTableModule newLookupTableModule) { XDocument document = XDocument.Load(resourceFile); XElement element = document.Root.XPathSelectElements("lookups/" + type + "/lookup").Where(x => x.Attribute("rcid").Value.ToString() == newLookupTableModule.Rcid.ToString()).First(); if (element != null) { element.Attribute("category").SetValue(newLookupTableModule.DisplayCategory); element.Element("objectClass").SetValue(newLookupTableModule.ObjectClass); element.Element("displayPriority").SetValue(newLookupTableModule.DisplayPriority.ToString()); element.Element("radarPriority").SetValue(newLookupTableModule.RadarPriority.ToString()); element.Element("module").SetValue(newLookupTableModule.ModuleName); element.XPathSelectElements("instructions/instr").Remove(); XElement instructionsElement = element.Element("instructions"); foreach (var item in newLookupTableModule.Instructions) { XElement xElement = new XElement("instr"); xElement.SetValue(item); instructionsElement.Add(xElement); } XElement attributesElement = element.Element("attributes"); if (newLookupTableModule.Attributes.Count > 0) { if (attributesElement == null) { element.Add(new XElement("attributes")); } else { attributesElement.Elements().Remove(); } attributesElement = element.Element("attributes"); foreach (var item in newLookupTableModule.Attributes) { attributesElement.Add(new XElement(item.Key, item.Value)); } } document.Save(resourceFile); } }