From 51168ff98184b4d9d8b9a043e7b7e20f3685e949 Mon Sep 17 00:00:00 2001
From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at>
Date: Wed, 8 Sep 2021 11:30:33 +0200
Subject: [PATCH] added PEV heavy lorry E4 to reader

---
 .../XMLDeclarationComponentsDataProvider.cs   |  6 ++--
 .../XMLDeclarationVehicleDataProvider.cs      |  2 +-
 ...XMLDeclarationInputDataV210InjectModule.cs | 10 ++++--
 .../Reader/Impl/XMLComponentReader.cs         | 18 ++++++++++
 .../XML/XMLDeclarationInputv210.cs            | 33 ++++++++++++++++++-
 5 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
index 335fec2547..a7d9c9cdc1 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
@@ -418,12 +418,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 	// ---------------------------------------------------------------------------------------
 
-	public class XMLDeclarationHeavyLorryPEVE3ComponentDataV210 : XMLDeclarationHeavyLorryPEVE2ComponentDataV210
+	public class XMLDeclarationHeavyLorryPEVExComponentDataV210 : XMLDeclarationHeavyLorryPEVE2ComponentDataV210
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS;
 		public new const string XSD_TYPE = "Components_PEV-E3_LorryType";
+		public const string XSD_PEV_E4_TYPE = "Components_PEV-E4_LorryType";
 		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
-		public XMLDeclarationHeavyLorryPEVE3ComponentDataV210(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) 
+		public static readonly string QUALIFIED_XSD_PEV_E4_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_PEV_E4_TYPE);
+		public XMLDeclarationHeavyLorryPEVExComponentDataV210(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) 
 			: base(vehicle, componentNode, sourceFile) { }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index 4032c89342..daaa72deea 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -1397,7 +1397,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public override CubicMeter CargoVolume => null;
 
 		public override IList<ITorqueLimitInputData> TorqueLimits =>
-			Components is XMLDeclarationHeavyLorryPEVE3ComponentDataV210 ? null : base.TorqueLimits;
+			Components is XMLDeclarationHeavyLorryPEVExComponentDataV210 ? null : base.TorqueLimits;
 
 		#endregion
 	}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs
index c3ab53fbea..97c04ea5fd 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs
@@ -91,8 +91,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
 			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryPEVE2ComponentDataV210>()
 				.Named(XMLDeclarationHeavyLorryPEVE2ComponentDataV210.QUALIFIED_XSD_TYPE);
 
-			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryPEVE3ComponentDataV210>()
-				.Named(XMLDeclarationHeavyLorryPEVE3ComponentDataV210.QUALIFIED_XSD_TYPE);
+			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryPEVExComponentDataV210>()
+				.Named(XMLDeclarationHeavyLorryPEVExComponentDataV210.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryPEVExComponentDataV210>()
+				.Named(XMLDeclarationHeavyLorryPEVExComponentDataV210.QUALIFIED_XSD_PEV_E4_TYPE);
 
 			Bind<IXMLComponentReader>().To<XMLComponentReaderV210_CompletedBus>().Named(XMLComponentReaderV210_CompletedBus.QUALIFIED_XSD_TYPE);
 
@@ -128,6 +131,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
 			Bind<IXMLComponentReader>().To<XMLPEVHeavyLorryE3DeclarationComponentReaderV201>()
 				.Named(XMLPEVHeavyLorryE3DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLComponentReader>().To<XMLPEVHeavyLorryE4DeclarationComponentReaderV201>()
+				.Named(XMLPEVHeavyLorryE4DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE);
+
 			Bind<IXMLGearboxReader>().To<XMLGearboxDeclarationComponentReaderV201>()
 				.Named(XMLGearboxDeclarationComponentReaderV201.GEARBOX_READER_QUALIFIED_XSD_TYPE);
 
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 3f2f174507..d3463ed67d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
@@ -876,6 +876,24 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 	// ---------------------------------------------------------------------------------------
 
+	public class XMLPEVHeavyLorryE4DeclarationComponentReaderV201 : XMLPEVHeavyLorryE3DeclarationComponentReaderV201
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS;
+		public new const string XSD_TYPE = "Components_PEV-E4_LorryType";
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLPEVHeavyLorryE4DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode)
+			: base(vehicle, componentsNode) { }
+
+		#region Overrides of XMLComponentReaderV10
+
+		public override IAxleGearInputData AxleGearInputData => null;
+
+		#endregion
+	}
+	
+	// ---------------------------------------------------------------------------------------
+	
 	public class XMLGearboxDeclarationComponentReaderV201 : XMLComponentReaderV10
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V2101_JOBS;
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs
index f1d153c4fe..c54b1fc41a 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs
@@ -1097,7 +1097,7 @@ namespace TUGraz.VectoCore.Tests.XML
 
 
 		[TestCase(@"HeavyLorry\PEV_heavyLorry_E3.xml")]
-		public void TestPEVE3MediumLorry(string jobfile)
+		public void TestPEVE3HeavyLorry(string jobfile)
 		{
 			var filename = Path.Combine(BASE_DIR, jobfile);
 			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
@@ -1127,6 +1127,37 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.IsNull(vehicle.MaxPropulsionTorque);
 		}
 
+		[TestCase(@"HeavyLorry\PEV_heavyLorry_E4.xml")]
+		public void TestPEVE4HeavyLorry(string jobfile)
+		{
+			var filename = Path.Combine(BASE_DIR, jobfile);
+			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
+			Assert.NotNull(dataProvider.JobInputData);
+			var vehicle = dataProvider.JobInputData.Vehicle;
+			Assert.NotNull(vehicle);
+			Assert.IsNull(vehicle.Components.EngineInputData);
+			Assert.IsNotNull(vehicle.Components.ElectricMachines);
+			Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count);
+			Assert.AreEqual(PowertrainPosition.BatteryElectricE4, vehicle.Components.ElectricMachines.Entries[0].Position);
+			Assert.IsNull(vehicle.Components.IEPC);
+			Assert.IsNull(vehicle.Components.GearboxInputData);
+			TestTorqueConverter(vehicle);
+			Assert.IsNull(vehicle.Components.TorqueConverterInputData);
+			Assert.IsNull(vehicle.Components.AngledriveInputData);
+			Assert.IsNotNull(vehicle.Components.RetarderInputData);
+			Assert.IsNull(vehicle.Components.AxleGearInputData);
+			Assert.IsNotNull(vehicle.Components.AxleWheels);
+			Assert.IsNotNull(vehicle.Components.AuxiliaryInputData);
+			Assert.IsNull(vehicle.Components.BusAuxiliaries);
+			Assert.IsNotNull(vehicle.Components.AirdragInputData);
+			Assert.IsNotNull(vehicle.Components.ElectricStorage);
+			Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData);
+			Assert.IsNull(vehicle.CargoVolume);
+			Assert.IsNull(vehicle.TorqueLimits);
+			Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);
+			Assert.IsNull(vehicle.MaxPropulsionTorque);
+		}
+
 		#region Test existence of torque converter
 
 		private void TestTorqueConverter(IVehicleDeclarationInputData vehicle)
-- 
GitLab