# HG changeset patch # User IBBoard # Date 1238258724 0 # Node ID 9d31d063b19459612ab2e79c1f4ec364a5605605 # Parent b49372dd8afa80e12a05bdcc7b0a8bf3ce929224 Re #10 - Refactor source code for readability * Add SelectSingleElement method that checks type and casts return as XmlElement Also: * Delete code to staged load Army and add TODO diff -r b49372dd8afa -r 9d31d063b194 api/Factories/Xml/WarFoundryXmlFactory.cs --- a/api/Factories/Xml/WarFoundryXmlFactory.cs Sat Mar 28 16:37:27 2009 +0000 +++ b/api/Factories/Xml/WarFoundryXmlFactory.cs Sat Mar 28 16:45:24 2009 +0000 @@ -93,7 +93,7 @@ Race race = WarFoundryLoader.GetDefault().GetRace(system, raceID); int points = GetIntValueFromAttribute(elem, "maxPoints"); Army army = new Army(race, name, points, file); - StoreExtraData(army, elem); + //TODO: Complete loading of army return army; } @@ -249,6 +249,12 @@ { return element.SelectSingleNode(xpathQuery, GetNamespaceManager()); } + + private XmlElement SelectSingleElement(XmlNode element, string xpathQuery) + { + XmlNode node = SelectSingleNode(element, xpathQuery); + return (node is XmlElement) ? (XmlElement) node : null; + } private int GetIntValueFromAttribute(XmlElement elem, string attributeName) { @@ -298,10 +304,6 @@ { CompleteLoading((Race)obj); } - else if (obj is Army) - { - CompleteLoading((Army) obj); - } } public void CompleteLoading(GameSystem system) @@ -322,7 +324,7 @@ XmlDocument extraData = GetExtraData(system); LoadCategoriesForSystem(system, extraData); - XmlElement statsElem = SelectSingleNode(extraData, "/system:system/system:sysStatsList"); + XmlElement statsElem = SelectSingleElement(extraData, "/system:system/system:sysStatsList"); string defaultStatsID = statsElem.GetAttribute("defaultStats"); LoadSystemStatsForSystem(system, extraData); system.StandardSystemStatsID = defaultStatsID; @@ -446,7 +448,7 @@ } type.MainCategory = cat; - XmlElement statsElement = SelectSingleNodes(elem, "/race:race/race:units/race:unit/race:stats"); + XmlElement statsElement = SelectSingleElement(elem, "/race:race/race:units/race:unit/race:stats"); type.UnitStats = ParseUnitStats(statsElement, system); //TODO: Add unit requirements LogNotifier.Debug(GetType(), "Loaded "+type.Name);