changeset 238:d1068f4b6d1c

Fixes #141: Check IDs of units on loading army * IDs were already checked - now exceptions instead of ignoring (exception is already caught for other reasons) Also: * Code cleanup of main XML file factory
author IBBoard <dev@ibboard.co.uk>
date Sun, 21 Feb 2010 20:25:52 +0000
parents ec7fe85116cf
children 7c14537d4a23
files api/Factories/Xml/WarFoundryXmlArmyParser.cs api/Factories/Xml/WarFoundryXmlFactory.cs
diffstat 2 files changed, 20 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/api/Factories/Xml/WarFoundryXmlArmyParser.cs	Sun Feb 21 20:13:44 2010 +0000
+++ b/api/Factories/Xml/WarFoundryXmlArmyParser.cs	Sun Feb 21 20:25:52 2010 +0000
@@ -5,6 +5,7 @@
 using System;
 using System.Collections.Generic;
 using System.Xml;
+using IBBoard.IO;
 using IBBoard.Xml;
 using ICSharpCode.SharpZipLib.Zip;
 using IBBoard.WarFoundry.API.Objects;
@@ -85,6 +86,10 @@
 
 					LoadUnitEquipment(unitElem, unit);
 				}
+				else
+				{
+					throw new InvalidFileException("Duplicate unit ID found in army file: "+id);
+				}
 			}
 		}
 
--- a/api/Factories/Xml/WarFoundryXmlFactory.cs	Sun Feb 21 20:13:44 2010 +0000
+++ b/api/Factories/Xml/WarFoundryXmlFactory.cs	Sun Feb 21 20:25:52 2010 +0000
@@ -135,14 +135,14 @@
 		{			
 			LogNotifier.DebugFormat(GetType(), "Complete loading of {0} with ID {1}", obj.GetType().Name, obj.ID);
 
-				if (obj is GameSystem)
-				{
-					CompleteLoadingGameSystem((GameSystem) obj);
-				}
-				else if (obj is Race)
-				{
-					CompleteLoadingRace((Race) obj);
-				}
+			if (obj is GameSystem)
+			{
+				CompleteLoadingGameSystem((GameSystem) obj);
+			}
+			else if (obj is Race)
+			{
+				CompleteLoadingRace((Race) obj);
+			}
 		}
 
 		private void CompleteLoadingRace(Race race)
@@ -162,14 +162,13 @@
 		{
 			try
 			{
-			gameSystemFactory.CompleteLoading(system);
-
-		}
-		catch (InvalidFileException ex)
-		{
-			WarFoundryLoader.GetDefault().RemoveGameSystem(system);
-			throw;
-		}
+				gameSystemFactory.CompleteLoading(system);
+			}
+			catch (InvalidFileException ex)
+			{
+				WarFoundryLoader.GetDefault().RemoveGameSystem(system);
+				throw;
+			}
 		}
 	}
 }
\ No newline at end of file