From 245cffb7ee7b458c4a712837bc450f5731c11df0 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Tue, 28 Apr 2020 12:00:15 +0200
Subject: [PATCH] implementing reading new auxiliary xml type (v2.3); adding
 test data with new electric steering pump techs; adding testcase to correctly
 read new technologies

---
 .../XMLAuxiliaryDeclarationDataProvider.cs    | 17 +++++++++++++++++
 .../XMLDeclarationAuxiliariesDataProvider.cs  | 16 ++++++++++++++++
 .../XMLDeclarationInputDataV23InjectModule.cs |  9 +++++++++
 .../Reader/Impl/XMLComponentReader.cs         | 17 +++++++++++++++++
 .../vecto_vehicle-fullElectricSP.xml          |  1 +
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |  3 +++
 .../XML/XMLDeclarationInputTest.cs            | 19 +++++++++++++++++++
 7 files changed, 82 insertions(+)

diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs
index 2f5d63a5fd..468a93f952 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs
@@ -50,6 +50,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		#endregion
 	}
 
+	// =============================
+
 	public class XMLAuxiliaryDeclarationDataProviderV20 : XMLAuxiliaryDeclarationDataProviderV10
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20;
@@ -61,4 +63,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public XMLAuxiliaryDeclarationDataProviderV20(XmlNode auxNode, IXMLDeclarationVehicleData vehicle) : base(
 			auxNode, vehicle) { }
 	}
+
+	// =============================
+
+	public class XMLAuxiliaryDeclarationDataProviderV23 : XMLAuxiliaryDeclarationDataProviderV10
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23;
+
+		public new const string XSD_TYPE = "AuxiliariesComponentDeclarationType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLAuxiliaryDeclarationDataProviderV23(XmlNode auxNode, IXMLDeclarationVehicleData vehicle) : base(
+			auxNode, vehicle)
+		{ }
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs
index 373aa45ef5..9df2b202c7 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs
@@ -79,4 +79,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 	}
 
 	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationAuxiliariesDataProviderV23 : XMLDeclarationAuxiliariesDataProviderV10
+	{
+		public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23;
+
+		public new const string XSD_TYPE = "AuxiliariesDataDeclarationType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationAuxiliariesDataProviderV23(
+			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(
+			vehicle, componentNode, sourceFile)
+		{ }
+	}
+
+	// ---------------------------------------------------------------------------------------
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs
index 470446a2c9..3ca4743a9a 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs
@@ -20,6 +20,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
 
 			Bind<IXMLADASReader>()
 				.To<XMLADASReaderV23>().Named(XMLADASReaderV23.QUALIFIED_XSD_TYPE);
+
+
+			Bind<IXMLAuxiliariesDeclarationInputData>().To<XMLDeclarationAuxiliariesDataProviderV23>()
+														.Named(XMLDeclarationAuxiliariesDataProviderV23.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLAuxiliaryDeclarationInputData>().To<XMLAuxiliaryDeclarationDataProviderV23>()
+														.Named(XMLAuxiliaryDeclarationDataProviderV23.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLAuxiliaryReader>().To<XMLAuxiliaryReaderV23>().Named(XMLAuxiliaryReaderV23.QUALIFIED_XSD_TYPE);
 		}
 
 		#endregion
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
index 79ddb4b19e..39c139e436 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
@@ -316,6 +316,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		{ }
 	}
 
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLAuxiliaryReaderV23 : XMLComponentReaderV20
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23;
+
+		public new const string AUX_READER_TYPE = "AuxiliariesDataDeclarationType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, AUX_READER_TYPE);
+		
+
+		public XMLAuxiliaryReaderV23(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base(
+			vehicle, componentsNode)
+		{ }
+	}
+
+
 	// ---------------------------------------------------------------------------------------
 
 	public class XMLComponentReaderV26 : XMLComponentReaderV20
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml
index 796d580539..61ffe14f8c 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml
@@ -3278,6 +3278,7 @@
 					</Fan>
 					<SteeringPump>
 						<Technology>Full electric steering gear</Technology>
+						<Technology>Electric driven pump</Technology>
 					</SteeringPump>
 					<ElectricSystem>
 						<Technology>Standard technology - LED headlights, all</Technology>
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 250f0a6198..569f2a4c96 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -3724,6 +3724,9 @@
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\engineSample_WHR.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vecto_vehicle-fullElectricSP.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel_WHR.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
index f9115920c3..9a094dc525 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
@@ -1089,5 +1089,24 @@ namespace TUGraz.VectoCore.Tests.XML
 					techInput, aux);
 			}
 		}
+
+		[TestCase(@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vecto_vehicle-fullElectricSP.xml")]
+		public void TestReadingNewSteeringPumpTechnologies(string file)
+		{
+			var reader = XmlReader.Create(file);
+
+			var inputDataProvider = xmlInputReader.CreateDeclaration(reader);
+			var vehicle = inputDataProvider.JobInputData.Vehicle;
+
+			var steeringPump = vehicle.Components.AuxiliaryInputData.Auxiliaries.Where(x => x.Type == AuxiliaryType.SteeringPump)
+									.FirstOrDefault();
+			Assert.NotNull(steeringPump);
+
+			Assert.AreEqual("Full electric steering gear", steeringPump.Technology[0]);
+			Assert.AreEqual("Electric driven pump", steeringPump.Technology[1]);
+
+			Assert.AreEqual(
+				616.2, DeclarationData.SteeringPump.Lookup(MissionType.LongHaul, VehicleClass.Class5, steeringPump.Technology).Value());
+		}
 	}
 }
\ No newline at end of file
-- 
GitLab