From 0eb5efb21edffce3c0c126c66aed647c519639de Mon Sep 17 00:00:00 2001
From: Harald Martini <harald.martini@student.tugraz.at>
Date: Tue, 17 May 2022 08:40:01 +0200
Subject: [PATCH] renamed MockupResult files

---
 ....xml => CIF_MockupResults_OVC-HEV_Bus.xml} |   0
 ...ml => CIF_MockupResults_OVC-HEV_Lorry.xml} |   3 +-
 ... => CIF_MockupResults_non-OVC-HEV_Bus.xml} |   0
 ...> CIF_MockupResults_non-OVC-HEV_Lorry.xml} |   0
 ....xml => MRF_MockupResults_OVC-HEV_Bus.xml} |   0
 ...ml => MRF_MockupResults_OVC-HEV_Lorry.xml} |   0
 ... => MRF_MockupResults_non-OVC-HEV_Bus.xml} |   0
 ...> MRF_MockupResults_non-OVC-HEV_Lorry.xml} |   0
 .../VectoCore/Resources/MockupResults.xml     |  19 ----
 .../VectoCore/Utils/MockupResultReader.cs     | 105 ++++++++++++------
 VectoCore/VectoCore/VectoCore.csproj          |   7 +-
 11 files changed, 73 insertions(+), 61 deletions(-)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{CIF_MockupResults_OCV-HEV_Bus.xml => CIF_MockupResults_OVC-HEV_Bus.xml} (100%)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{CIF_MockupResults_OCV-HEV_Lorry.xml => CIF_MockupResults_OVC-HEV_Lorry.xml} (98%)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{CIF_MockupResults_non-OCV-HEV_Bus.xml => CIF_MockupResults_non-OVC-HEV_Bus.xml} (100%)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{CIF_MockupResults_non-OCV-HEV_Lorry.xml => CIF_MockupResults_non-OVC-HEV_Lorry.xml} (100%)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{MRF_MockupResults_OCV-HEV_Bus.xml => MRF_MockupResults_OVC-HEV_Bus.xml} (100%)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{MRF_MockupResults_OCV-HEV_Lorry.xml => MRF_MockupResults_OVC-HEV_Lorry.xml} (100%)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{MRF_MockupResults_non-OCV-HEV_Bus.xml => MRF_MockupResults_non-OVC-HEV_Bus.xml} (100%)
 rename VectoCore/VectoCore/Resources/Declaration/Report/{MRF_MockupResults_non-OCV-HEV_Lorry.xml => MRF_MockupResults_non-OVC-HEV_Lorry.xml} (100%)
 delete mode 100644 VectoCore/VectoCore/Resources/MockupResults.xml

diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OCV-HEV_Bus.xml b/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OVC-HEV_Bus.xml
similarity index 100%
rename from VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OCV-HEV_Bus.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OVC-HEV_Bus.xml
diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OCV-HEV_Lorry.xml b/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OVC-HEV_Lorry.xml
similarity index 98%
rename from VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OCV-HEV_Lorry.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OVC-HEV_Lorry.xml
index 24e78e5874..e2d877de79 100644
--- a/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OCV-HEV_Lorry.xml
+++ b/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_OVC-HEV_Lorry.xml
@@ -85,7 +85,8 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.9 V:\VectoCore\Vec
 		</Result>
 		<!-- END OCV HEV (and OCV FCV in future) Lorry -->
 		<Summary xsi:type="ResultSummaryOCVHEVType">
-			<Fuel type="Diesel CI"><!-- repeat for every fuel used -->
+			<!-- repeat for every fuel used -->
+			<Fuel type="Diesel CI">
 				<FuelConsumption unit="g/km">6.1</FuelConsumption>
 				<FuelConsumption unit="g/t-km">6.20</FuelConsumption>
 				<FuelConsumption unit="g/m³-km">6.220</FuelConsumption>
diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OCV-HEV_Bus.xml b/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OVC-HEV_Bus.xml
similarity index 100%
rename from VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OCV-HEV_Bus.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OVC-HEV_Bus.xml
diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OCV-HEV_Lorry.xml b/VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OVC-HEV_Lorry.xml
similarity index 100%
rename from VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OCV-HEV_Lorry.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/CIF_MockupResults_non-OVC-HEV_Lorry.xml
diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OCV-HEV_Bus.xml b/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OVC-HEV_Bus.xml
similarity index 100%
rename from VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OCV-HEV_Bus.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OVC-HEV_Bus.xml
diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OCV-HEV_Lorry.xml b/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OVC-HEV_Lorry.xml
similarity index 100%
rename from VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OCV-HEV_Lorry.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_OVC-HEV_Lorry.xml
diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OCV-HEV_Bus.xml b/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OVC-HEV_Bus.xml
similarity index 100%
rename from VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OCV-HEV_Bus.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OVC-HEV_Bus.xml
diff --git a/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OCV-HEV_Lorry.xml b/VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OVC-HEV_Lorry.xml
similarity index 100%
rename from VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OCV-HEV_Lorry.xml
rename to VectoCore/VectoCore/Resources/Declaration/Report/MRF_MockupResults_non-OVC-HEV_Lorry.xml
diff --git a/VectoCore/VectoCore/Resources/MockupResults.xml b/VectoCore/VectoCore/Resources/MockupResults.xml
deleted file mode 100644
index 9a0e45b0d9..0000000000
--- a/VectoCore/VectoCore/Resources/MockupResults.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-
-<MockupResults>
-	<ConventionalLorryManufacturerOutputDataType>
-		<Mission>Long Haul</Mission>
-		<Load></Load>
-		<TotalVehicleMassInSimulation></TotalVehicleMassInSimulation>
-		<Simulation>
-			<AverageSpeed></AverageSpeed>
-		</Simulation>
-		<FuelAndEnergyConsumption>
-
-		</FuelAndEnergyConsumption>
-	</ConventionalLorryManufacturerOutputDataType>
-
-	<ConventionalLorryOutputType>
-		
-	</ConventionalLorryOutputType>
-</MockupResults>
diff --git a/VectoCore/VectoCore/Utils/MockupResultReader.cs b/VectoCore/VectoCore/Utils/MockupResultReader.cs
index 35d40f0aad..395a7d91b3 100644
--- a/VectoCore/VectoCore/Utils/MockupResultReader.cs
+++ b/VectoCore/VectoCore/Utils/MockupResultReader.cs
@@ -1,19 +1,14 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Xml;
 using System.Xml.Linq;
 using System.Xml.XPath;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
-using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.OutputData.XML;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport;
-using RuntimeArgumentHandle = System.RuntimeArgumentHandle;
 
 namespace TUGraz.VectoCore.Utils
 {
@@ -41,14 +36,31 @@ namespace TUGraz.VectoCore.Utils
 				XMLNames.CIF_OutputDataType_ConventionalLorryOutputType,
 			};
 
-			private static HashSet<string> hev = new HashSet<string>() { };
+			private static HashSet<string> hev = new HashSet<string>() {
+				//MRF
+				XMLNames.MRF_OutputDataType_HEV_S2_LorryManufacturerOutputDataType,
+				XMLNames.MRF_OutputDataType_HEV_S3_LorryManufacturerOutputDataType,
+				XMLNames.MRF_OutputDataType_HEV_S4_LorryManufacturerOutputDataType,
+				XMLNames.MRF_OutputDataType_HEV_Px_IHPCLorryManufacturerOutputDataType,
+				XMLNames.MRF_OutputDataType_HEV_IEPC_S_LorryManufacturerOutputDataType,
+				//CIF
+				XMLNames.CIF_OutputDataType_HEV_S2_LorryOutputType,
+				XMLNames.CIF_OutputDataType_HEV_S3_LorryOutputType,
+				XMLNames.CIF_OutputDataType_HEV_S4_LorryOutputType,
+				XMLNames.CIF_OutputDataType_HEV_IEPC_S_LorryOutputType,
+				XMLNames.CIF_OutputDataType_HEV_Px_LorryOutputType,
+			};
 			private static HashSet<string> pev = new HashSet<string>() { };
-			public static string GetResourceName(string xmlName, XMLDeclarationReport.ResultEntry result, ResultType type)
+			public static string GetResourceName(string xmlName, XMLDeclarationReport.ResultEntry result, ResultType type, bool ovc)
 			{
-				var arch = GetArch(xmlName, false);
-				var reportType = type == ResultType.MRF ? "MRF" : "CIF";
-				var vehicleType = result.VehicleClass.IsBus() ? "Bus" : "Lorry";
-				return $"{mockupResourcePrefix}.{reportType}_MockupResults_{arch}_{vehicleType}.xml";
+				//if (result.Status == VectoRun.Status.Success) {
+					var arch = GetArch(xmlName, ovc);
+					var reportType = type == ResultType.MRF ? "MRF" : "CIF";
+					var vehicleType = result.VehicleClass.IsBus() ? "Bus" : "Lorry";
+					return $"{mockupResourcePrefix}.{reportType}_MockupResults_{arch}_{vehicleType}.xml";
+				//}
+
+				throw new NotImplementedException("Error result not implemented\n");
 			}
 
 			private static string GetArch(string xmlName, bool ocv)
@@ -58,12 +70,7 @@ namespace TUGraz.VectoCore.Utils
 				}
 
 				if (hev.Contains(xmlName)) {
-					if (ocv) {
-						return "OCV-HEV";
-					} else {
-						return "non-OCV-HEV";
-					}
-					
+					return ocv ? "OVC-HEV" : "non-OVC-HEV";
 				}
 
 				if (pev.Contains(xmlName)) {
@@ -76,9 +83,9 @@ namespace TUGraz.VectoCore.Utils
 
 		}
         
-		public static XElement GetMRFMockupResult(string xmlName, XMLDeclarationReport.ResultEntry result, XName resultElementName)
+		public static XElement GetMRFMockupResult(string xmlName, XMLDeclarationReport.ResultEntry result, XName resultElementName, bool ovc)
 		{
-			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.MRF));
+			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.MRF, ovc));
 			ReplaceMission(result, resultElement);
 			SetFuels(result, resultElement);
 			
@@ -87,9 +94,11 @@ namespace TUGraz.VectoCore.Utils
 		}
 
 
-		public static XElement GetCIFMockupResult(string xmlName, XMLDeclarationReport.ResultEntry result, XName resultElementName)
+
+		public static XElement GetCIFMockupResult(string xmlName, XMLDeclarationReport.ResultEntry result, XName resultElementName, bool ovc)
 		{
-			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.CIF));
+			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.CIF, ovc));
+			resultElement.DescendantNodes().OfType<XComment>().Remove();
 			ReplaceMission(result, resultElement);
 			SetFuels(result, resultElement);
 
@@ -99,7 +108,8 @@ namespace TUGraz.VectoCore.Utils
 		private static XElement GetResultElement(XName resultElementName, string resourceName)
 		{
 			var xDoc = XDocument.Load(RessourceHelper.ReadStream(resourceName));
-			var results = xDoc.XPathSelectElements($"//*[name()='Result']");
+			
+			var results = xDoc.XPathSelectElements($"//*[name()='{resultElementName.LocalName}']");
 			
 			return results.First();
 		}
@@ -107,24 +117,47 @@ namespace TUGraz.VectoCore.Utils
 		
 		private static void ReplaceMission(XMLDeclarationReport.ResultEntry result, XElement resultElement)
 		{
-			resultElement.Elements().Single(x => x.Name.LocalName == XMLNames.Report_Result_Mission).Value =
-				result.Mission.ToXMLFormat();
+			var mission = resultElement.Elements()
+				.FirstOrDefault(x => x.Name.LocalName == XMLNames.Report_Result_Mission);
+			if (mission != null) {
+				mission.Value = result.Mission.ToXMLFormat();
+			}
+				
 		}
 
 		private static void SetFuels(XMLDeclarationReport.ResultEntry result, XElement resultElement)
 		{
-			var fuelElement = resultElement.XPathSelectElements("//*[name()='Fuel']").First();
-			var insertAfter = fuelElement.PreviousNode;         //FuelElements added after this element
-			fuelElement.Remove();
-			
-			foreach (var fuelProperties in result.FuelData) {
-				
-				var fuelElementToAdd = new XElement(fuelElement); //deep copy of fuel element;
-				fuelElementToAdd.SetAttributeValue(XMLNames.Report_Results_Fuel_Type_Attr, fuelProperties.FuelType.ToXMLFormat());
-				ClearFuelConsumptionEntries(fuelProperties.FuelType, fuelElementToAdd, result.VehicleClass);
+			//var tmpResultElement = new XElement(resultElement);
+			var fuelElements = resultElement.XPathSelectElements("//*[name()='Fuel']").ToList();
+			foreach (var fuelElement in fuelElements) {
+				XElement lastAdded = null;
+				foreach (var fuelProperties in result.FuelData)
+				{
+					Action<XElement> insertAction = (element) => {
+						//FuelElements added after this element
+						if (lastAdded != null) {
+							fuelElement.AddAfterSelf(element);
+							
+						} else if (fuelElement.PreviousNode != null) {
+							fuelElement.AddAfterSelf(element);
+							
+						} else {
+							fuelElement.Parent.AddFirst(element);
+						}
+						lastAdded = element;
+						fuelElement.Remove();
+					};
+
+					var fuelElementToAdd = new XElement(fuelElement); //deep copy of fuel element;
+					fuelElementToAdd.SetAttributeValue(XMLNames.Report_Results_Fuel_Type_Attr, fuelProperties.FuelType.ToXMLFormat());
+					ClearFuelConsumptionEntries(fuelProperties.FuelType, fuelElementToAdd, result.VehicleClass);
+
+
+
+					insertAction(fuelElementToAdd);
 
-				insertAfter.AddAfterSelf(fuelElementToAdd);
-				insertAfter = fuelElementToAdd;
+
+				}
 			}
 		}
 
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index 273c5ea14b..325434c6b8 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -11,7 +11,8 @@
     <None Remove="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_1-Stage_650ccm.acmp" />
     <None Remove="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_2-Stage_398ccm.acmp" />
     <None Remove="Resources\Declaration\VAUXBus\DEFAULT_3-Cylinder_2-Stage_598ccm.acmp" />
-    <None Remove="Resources\MockupResults.xml" />
+    <None Remove="Resources\MockupCIFResults.xml" />
+    <None Remove="Resources\MockupMRFResults.xml" />
     <None Remove="Resources\XSD\VectoDeclarationDefinitions.2.2.1.xsd" />
     <None Remove="Resources\XSD\VectoOutputPrimaryBus.xsd" />
   </ItemGroup>
@@ -73,10 +74,6 @@
     </EmbeddedResource>
   </ItemGroup>
 
-  <ItemGroup>
-    <EmbeddedResource Include="Resources\MockupResults.xml" />
-  </ItemGroup>
-
   <ItemGroup>
     <Compile Update="JSONKeys.Designer.cs">
       <DesignTime>True</DesignTime>
-- 
GitLab