From 000ee8f59e09f0fed3c02eb4c33a971e83707510 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <quaritsch@ivt.tugraz.at>
Date: Mon, 13 Mar 2023 15:44:56 +0100
Subject: [PATCH] refactor mockup result writing: use the same mechanism for
 writing results as in the official reports, no need to replace the results
 element. remove no longer needed mockup-specific code

---
 .../VectoCore/Mockup/MockupResultReader.cs    |  39 +++----
 .../Mockup/Ninject/CIFMockupModule.cs         |   2 +-
 .../Mockup/Ninject/MRFMockupModule.cs         |   2 +-
 .../Mockup/Reports/IXMLMockupReport.cs        |  12 ---
 .../Mockup/Reports/MockupCustomerReport.cs    |  43 +-------
 .../Reports/MockupManufacturerReport.cs       |  42 +-------
 .../Reports/MockupReportResultsFactory.cs     |  78 ++++++++++++--
 .../Mockup/Reports/MockupVIFReport.cs         | 101 ------------------
 .../Reports/MockupVehicleInformationFile.cs   |  47 +-------
 .../XMLDeclarationMockupPrimaryReport.cs      |  12 +--
 .../Reports/XMLDeclarationMockupReport.cs     |  18 +---
 ...DeclarationMockupReportCompletedVehicle.cs |  19 +---
 .../CompletedBusRunDataFactory.cs             |   7 +-
 .../MockupLorryVectoRunDataFactory.cs         |   2 +-
 14 files changed, 113 insertions(+), 311 deletions(-)
 delete mode 100644 VectoCore/VectoCore/Mockup/Reports/IXMLMockupReport.cs
 delete mode 100644 VectoCore/VectoCore/Mockup/Reports/MockupVIFReport.cs

diff --git a/VectoCore/VectoCore/Mockup/MockupResultReader.cs b/VectoCore/VectoCore/Mockup/MockupResultReader.cs
index acdf5cb9d5..5454ef27b0 100644
--- a/VectoCore/VectoCore/Mockup/MockupResultReader.cs
+++ b/VectoCore/VectoCore/Mockup/MockupResultReader.cs
@@ -24,7 +24,7 @@ namespace TUGraz.VectoMockup
 
     internal static class MockupResultReader
     {
-		private enum ResultType
+		public enum ResultType
 		{
 			CIF,
 			MRF,
@@ -78,14 +78,14 @@ namespace TUGraz.VectoMockup
 
 			};
 
-			public static string GetResourceName(string xmlName, IResultEntry result, ResultType type, VectoRunData runData)
+			public static string GetResourceName(ResultType type, VectoRunData runData)
 			{
 				
 				var resNames = Assembly.GetAssembly(typeof(MockupResultReader)).GetManifestResourceNames();
 				//if (result.Status == VectoRun.Status.Success) {
-					var arch = GetArch(xmlName, runData);
+					var arch = GetArch(runData);
 					var reportType = GetReportType(type);
-					var vehicleType = result.VehicleClass.IsBus() ? "Bus" : "Lorry";
+					var vehicleType = runData.VehicleData.VehicleClass.IsBus() ? "Bus" : "Lorry";
 					return $"{mockupResourcePrefix}.{reportType}_MockupResults_{arch}_{vehicleType}.xml";
 				//}
 
@@ -106,7 +106,7 @@ namespace TUGraz.VectoMockup
 				}
 			}
 
-			private static string GetArch(string xmlName, VectoRunData runData)
+			private static string GetArch(VectoRunData runData)
 			{
 				bool ovc = false;
 				var jobType = VectoSimulationJobType.ConventionalVehicle;
@@ -131,30 +131,27 @@ namespace TUGraz.VectoMockup
 					return "PEV";
 				}
 
-				throw new VectoException($"{xmlName} not mapped to Architecture (Conv/HEV/PEV)");
+				throw new VectoException($"{runData.JobType} not mapped to Architecture (Conv/HEV/PEV)");
 			}
 
-
 		}
-        
-		public static XElement GetMRFMockupResult(string xmlName, IResultEntry result, XName resultElementName, VectoRunData runData)
+		
+		public static XElement GetMRFMockupResult(IResultEntry result, XName resultElementName, VectoRunData runData)
 		{
-			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.MRF, runData));
+			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(ResultType.MRF, runData));
 			ReplaceMission(result, resultElement);
 			ReplaceGroup(result, resultElement);
 			ReplacePayload(result, resultElement);
 			ReplaceFuelMode(result, resultElement);
 			SetFuels(result, resultElement);
 			ClearGearboxAndAxleGearEntries(result, resultElement, runData);
-			
+
 			return resultElement;
 		}
 
-
-
-		public static XElement GetCIFMockupResult(string xmlName, IResultEntry result, XName resultElementName, VectoRunData runData)
+		public static XElement GetCIFMockupResult(IResultEntry result, XName resultElementName, VectoRunData runData)
 		{
-			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.CIF, runData));
+			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(ResultType.CIF, runData));
 			resultElement.DescendantNodes().OfType<XComment>().Remove();
 			ReplaceMission(result, resultElement);
 			SetFuels(result, resultElement);
@@ -162,21 +159,19 @@ namespace TUGraz.VectoMockup
 			return resultElement;
 		}
 
-		public static XElement GetVIFMockupResult(string xmlName, IResultEntry result, XName resultElementName, VectoRunData runData)
+		public static XElement GetVIFMockupResult(IResultEntry result, XName resultElementName, VectoRunData runData)
 		{
-			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.VIF, runData));
+			var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(ResultType.VIF, runData));
 			resultElement.DescendantNodes().OfType<XComment>().Remove();
 			ReplaceMission(result, resultElement);
 			ReplaceGroup(result, resultElement);
 			ReplacePayload(result, resultElement);
-			ReplaceFuelMode(result,resultElement);
-            SetFuels(result, resultElement);
+			ReplaceFuelMode(result, resultElement);
+			SetFuels(result, resultElement);
 
-            return resultElement;
+			return resultElement;
 		}
 
-
-
 		private static void ReplacePayload(IResultEntry result, XElement resultElement)
 		{
 			if (result.Payload == null) {
diff --git a/VectoCore/VectoCore/Mockup/Ninject/CIFMockupModule.cs b/VectoCore/VectoCore/Mockup/Ninject/CIFMockupModule.cs
index 3e1076da0e..390a29b80e 100644
--- a/VectoCore/VectoCore/Mockup/Ninject/CIFMockupModule.cs
+++ b/VectoCore/VectoCore/Mockup/Ninject/CIFMockupModule.cs
@@ -40,7 +40,7 @@ namespace TUGraz.VectoMockup.Ninject
         public IXMLCustomerReport GetCustomerReport(VehicleCategory vehicleType, VectoSimulationJobType jobType, ArchitectureID archId,
             bool exempted, bool iepc, bool ihpc)
         {
-            return new MockupCustomerReport(_cifFactory.GetCustomerReport(vehicleType, jobType, archId, exempted, iepc, ihpc), exempted);
+            return new MockupCustomerReport(_cifFactory.GetCustomerReport(vehicleType, jobType, archId, exempted, iepc, ihpc));
         }
 
         public IXmlTypeWriter GetConventionalLorryVehicleType()
diff --git a/VectoCore/VectoCore/Mockup/Ninject/MRFMockupModule.cs b/VectoCore/VectoCore/Mockup/Ninject/MRFMockupModule.cs
index 6b51536cf1..3dfe66f0e2 100644
--- a/VectoCore/VectoCore/Mockup/Ninject/MRFMockupModule.cs
+++ b/VectoCore/VectoCore/Mockup/Ninject/MRFMockupModule.cs
@@ -44,7 +44,7 @@ namespace TUGraz.VectoMockup.Ninject
         public IXMLManufacturerReport GetManufacturerReport(VehicleCategory vehicleType, VectoSimulationJobType jobType,
             ArchitectureID archId, bool exempted, bool iepc, bool ihpc)
         {
-            return new MockupManufacturerReport(_manufacturerReportFactoryImplementation.GetManufacturerReport(vehicleType, jobType, archId, exempted, iepc, ihpc), exempted);
+            return new MockupManufacturerReport(_manufacturerReportFactoryImplementation.GetManufacturerReport(vehicleType, jobType, archId, exempted, iepc, ihpc));
         }
 
         public IXmlTypeWriter GetConventionalLorryVehicleType()
diff --git a/VectoCore/VectoCore/Mockup/Reports/IXMLMockupReport.cs b/VectoCore/VectoCore/Mockup/Reports/IXMLMockupReport.cs
deleted file mode 100644
index 9d68af06df..0000000000
--- a/VectoCore/VectoCore/Mockup/Reports/IXMLMockupReport.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using TUGraz.VectoCore.OutputData;
-using TUGraz.VectoCore.OutputData.XML;
-
-namespace TUGraz.VectoMockup.Reports
-{
-	internal interface IXMLMockupReport
-	{
-		void WriteMockupResult(IResultEntry resultValue);
-		void WriteMockupSummary(IResultEntry resultValue);
-		void WriteExemptedResults();
-	}
-}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Mockup/Reports/MockupCustomerReport.cs b/VectoCore/VectoCore/Mockup/Reports/MockupCustomerReport.cs
index 35ef05e800..667a033dce 100644
--- a/VectoCore/VectoCore/Mockup/Reports/MockupCustomerReport.cs
+++ b/VectoCore/VectoCore/Mockup/Reports/MockupCustomerReport.cs
@@ -11,28 +11,19 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.Manu
 
 namespace TUGraz.VectoMockup.Reports
 {
-    public class MockupCustomerReport : IXMLCustomerReport, IXMLMockupReport
+    public class MockupCustomerReport : IXMLCustomerReport
     {
-		private readonly bool _exempted;
 		private readonly AbstractCustomerReport _originalCustomerReport;
-        private XNamespace Cif = AbstractCustomerReport.Cif_0_9;
-        public MockupCustomerReport(IXMLCustomerReport originalReport, bool exempted)
+
+		public MockupCustomerReport(IXMLCustomerReport originalReport)
         {
-			_exempted = exempted;
 			_originalCustomerReport = originalReport as AbstractCustomerReport;
-            _outputDataType = _originalCustomerReport.OutputDataType;
-            Results = new XElement(Cif + XMLNames.Report_Results);
         }
 
-        private XElement Results;
-        private readonly string _outputDataType;
-        private VectoRunData _modelData;
-        
         #region Implementation of IXMLCustomerReport
 
         public void Initialize(VectoRunData modelData)
         {
-            _modelData = modelData;
             _originalCustomerReport.Initialize(modelData);
         }
 
@@ -41,12 +32,8 @@ namespace TUGraz.VectoMockup.Reports
             get
             {
                 var report = _originalCustomerReport.Report;
-                report.XPathSelectElements($"//*[local-name()='{XMLNames.Report_Results}']").Single().ReplaceWith(Results);
-
                 return report;
-
-
-            }
+			}
         }
 
         public void WriteResult(IResultEntry resultValue)
@@ -61,28 +48,6 @@ namespace TUGraz.VectoMockup.Reports
 
         #endregion
 
-        #region Implementation of IXMLMockupReport
-
-        public void WriteMockupResult(IResultEntry resultValue)
-        {
-            Results.Add(MockupResultReader.GetCIFMockupResult(_outputDataType, resultValue, Cif + "Result", _modelData));
-        }
-
-        public void WriteMockupSummary(IResultEntry resultValue)
-        {
-            Results.AddFirst(new XElement(Cif + "Status", "success"));
-            Results.AddFirst(new XComment("Always prints success at the moment"));
-			if (!_modelData.VehicleData.InputData.VocationalVehicle) {
-				Results.Add(MockupResultReader.GetCIFMockupResult(_outputDataType, resultValue, Cif + "Summary", _modelData));
-            }
-		}
-
-		public void WriteExemptedResults()
-		{
-			Results.Add(new XElement(Cif + "Status", "success"));
-			Results.Add(new XElement(Cif + "ExemptedVehicle"));
-        }
 
-		#endregion
     }
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Mockup/Reports/MockupManufacturerReport.cs b/VectoCore/VectoCore/Mockup/Reports/MockupManufacturerReport.cs
index 6a9efa0917..e90024ca68 100644
--- a/VectoCore/VectoCore/Mockup/Reports/MockupManufacturerReport.cs
+++ b/VectoCore/VectoCore/Mockup/Reports/MockupManufacturerReport.cs
@@ -12,56 +12,22 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.Manu
 
 namespace TUGraz.VectoMockup.Reports
 {
-	public class MockupManufacturerReport : IXMLManufacturerReport, IXMLMockupReport
+	public class MockupManufacturerReport : IXMLManufacturerReport
 	{
-		private readonly bool _exempted;
 		private AbstractManufacturerReport _ixmlManufacturerReportImplementation;
-		private VectoRunData _modelData;
 
-		private XNamespace Mrf = AbstractManufacturerReport.Mrf_0_9;
-		private readonly string _outputData;
-		private XElement Results { get; set; }
-		public MockupManufacturerReport(IXMLManufacturerReport originalManufacturerReport, bool exempted)
+		
+		public MockupManufacturerReport(IXMLManufacturerReport originalManufacturerReport)
 		{
-			_exempted = exempted;
 			_ixmlManufacturerReportImplementation = originalManufacturerReport as AbstractManufacturerReport;
-			_outputData = _ixmlManufacturerReportImplementation.OutputDataType;
-
-			Results = new XElement(Mrf + XMLNames.Report_Results);
-		}
-
-		public void WriteMockupResult(IResultEntry resultValue)
-		{
-
-			Results.Add(MockupResultReader.GetMRFMockupResult(_outputData, resultValue, Mrf + "Result", _modelData));
-
-		}
-
-		public void WriteMockupSummary(IResultEntry resultValue)
-		{
-			Results.AddFirst(new XElement(Mrf + "Status", "success"));
-			Results.AddFirst(new XComment("Always prints success at the moment"));
-			//Results.Add(MockupResultReader.GetMRFMockupResult(OutputDataType, resultValue, Mrf + "Summary", _ovc));
-		}
-
-		public void WriteExemptedResults()
-		{
-			Results.Add(new XElement(Mrf + "Status", "success"));
-			Results.Add(new XElement(Mrf + "ExemptedVehicle"));
 		}
 
 
 		#region Implementation of IXMLManufacturerReport
 
 
-		//public void InitializeVehicleData(IDeclarationInputDataProvider inputData)
-		//{
-		//	_ixmlManufacturerReportImplementation.InitializeVehicleData(inputData);
-		//}
-
 		public void Initialize(VectoRunData modelData)
 		{
-			_modelData = modelData;
 			_ixmlManufacturerReportImplementation.Initialize(modelData);
 		}
 
@@ -70,8 +36,6 @@ namespace TUGraz.VectoMockup.Reports
 			get
 			{
 				var report = _ixmlManufacturerReportImplementation.Report;
-				report.XPathSelectElements($"//*[local-name()='{XMLNames.Report_Results}']").Single().ReplaceWith(Results);
-
 				return report;
 			}
 		}
diff --git a/VectoCore/VectoCore/Mockup/Reports/MockupReportResultsFactory.cs b/VectoCore/VectoCore/Mockup/Reports/MockupReportResultsFactory.cs
index 0f1786e232..027cf37b75 100644
--- a/VectoCore/VectoCore/Mockup/Reports/MockupReportResultsFactory.cs
+++ b/VectoCore/VectoCore/Mockup/Reports/MockupReportResultsFactory.cs
@@ -1,7 +1,10 @@
 using System.Collections.Generic;
+using System.Linq;
 using System.Xml;
 using System.Xml.Linq;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common;
 
@@ -9,21 +12,55 @@ namespace TUGraz.VectoMockup.Reports
 {
 	class MockupReportResultsFactory : IResultsWriterFactory
 	{
+		protected XNamespace CIF = XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.9");
+		protected XNamespace MRF = XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9");
+		protected XNamespace VIF = XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1");
+
 		#region Implementation of IResultsWriterFactory
 
 		public IResultsWriter GetCIFResultsWriter(string vehicleCategory, VectoSimulationJobType jobType, bool ovc, bool exempted)
 		{
-			return new MockupDummyResultsWriter(XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9"));
+			if (exempted)
+				return new MockupExemptedResultsWriter(CIF, MockupResultReader.ResultType.CIF);
+			return new MockupDummyResultsWriter(CIF, MockupResultReader.ResultType.CIF);
 		}
 
 		public IResultsWriter GetMRFResultsWriter(string vehicleCategory, VectoSimulationJobType jobType, bool ovc, bool exempted)
 		{
-			return new MockupDummyResultsWriter(XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9"));
+			if (exempted)
+				return new MockupExemptedResultsWriter(MRF, MockupResultReader.ResultType.CIF);
+			return new MockupDummyResultsWriter(MRF, MockupResultReader.ResultType.MRF);
 		}
 
 		public IResultsWriter GetVIFResultsWriter(string vehicleCategory, VectoSimulationJobType jobType, bool ovc, bool exempted)
 		{
-			return new MockupDummyResultsWriter(XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"));
+			if (exempted)
+				return new MockupExemptedResultsWriter(VIF, MockupResultReader.ResultType.CIF);
+			return new MockupDummyResultsWriter(VIF, MockupResultReader.ResultType.VIF);
+		}
+
+		#endregion
+	}
+
+	internal class MockupExemptedResultsWriter : IResultsWriter
+	{
+		private readonly XNamespace TNS;
+		public MockupResultReader.ResultType ResultType;
+
+		public MockupExemptedResultsWriter(XNamespace ns, MockupResultReader.ResultType resultType)
+		{
+			TNS = ns;
+			ResultType = resultType;
+		}
+
+		#region Implementation of IResultsWriter
+
+		public XElement GenerateResults(List<IResultEntry> results)
+		{
+			var retVal = new XElement(TNS + XMLNames.Report_Results);
+			retVal.Add(new XElement(TNS + "Status", "success"));
+			retVal.Add(new XElement(TNS + "ExemptedVehicle"));
+			return retVal;
 		}
 
 		#endregion
@@ -33,17 +70,46 @@ namespace TUGraz.VectoMockup.Reports
 	{
 		private readonly XNamespace TNS;
 
-		public MockupDummyResultsWriter(XNamespace ns)
+		public MockupDummyResultsWriter(XNamespace ns, MockupResultReader.ResultType resultType)
 		{
 			TNS = ns;
+			ResultType = resultType;
 		}
 
+		public MockupResultReader.ResultType ResultType;
+
 		#region Implementation of IResultsWriter
 
 		public XElement GenerateResults(List<IResultEntry> results)
 		{
-			// only return a single 'Results' element - will be replaced in Mockup Report
-			return new XElement(TNS + "Results");
+			var retVal = new XElement(TNS + XMLNames.Report_Results);
+			retVal.AddFirst(new XElement(TNS + "Status", "success"));
+			retVal.AddFirst(new XComment("Always prints success at the moment"));
+
+			foreach (var result in results) {
+				switch (ResultType) {
+					case MockupResultReader.ResultType.CIF:
+						retVal.Add(MockupResultReader.GetCIFMockupResult(result, "Result", result.VectoRunData));
+						break;
+					case MockupResultReader.ResultType.MRF:
+						retVal.Add(MockupResultReader.GetMRFMockupResult(result, "Result", result.VectoRunData));
+						break;
+					case MockupResultReader.ResultType.VIF:
+						retVal.Add(MockupResultReader.GetVIFMockupResult(result, "Result", result.VectoRunData));
+						break;
+				}
+				
+			}
+
+			if (ResultType == MockupResultReader.ResultType.CIF) {
+				var result = results.First();
+				if (!result.VectoRunData.VehicleData.VocationalVehicle) {
+					retVal.Add(MockupResultReader.GetCIFMockupResult(result, TNS + "Summary",
+						result.VectoRunData));
+				}
+			}
+
+			return retVal;
 		}
 
 		#endregion
diff --git a/VectoCore/VectoCore/Mockup/Reports/MockupVIFReport.cs b/VectoCore/VectoCore/Mockup/Reports/MockupVIFReport.cs
deleted file mode 100644
index ce773080a2..0000000000
--- a/VectoCore/VectoCore/Mockup/Reports/MockupVIFReport.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-using System;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Xml.Linq;
-using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.OutputData;
-using TUGraz.VectoCore.OutputData.XML;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
-
-namespace TUGraz.VectoMockup.Reports
-{
-    public class MockupVehicleInformationFile : IXMLVehicleInformationFile, IXMLMockupReport
-    {
-		private XDocument _report;
-		private XNamespace _tns;
-
-
-		public MockupVehicleInformationFile(IXMLVehicleInformationFile vehicleInformationFile)
-		{
-
-		}
-
-
-
-		//private XDocument _report;
-		//private VectoRunData _modelData;
-
-
-		//#region Implementation of IXMLMockupReport
-
-		//public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue)
-		//{
-		//	throw new NotImplementedException();
-		//}
-
-		//public void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue)
-		//{
-		//	throw new NotImplementedException();
-		//}
-
-		//#endregion
-
-		//#region Implementation of IXMLMultistageReport
-
-		//public void Initialize(VectoRunData modelData)
-		//{
-		//	_modelData = modelData;
-		//}
-
-		//public XDocument Report => _report;
-
-		//public void GenerateReport()
-		//{
-		//	throw new NotImplementedException();
-		//}
-
-		//#endregion
-
-		#region Implementation of IXMLPrimaryVehicleReport
-
-		public void Initialize(VectoRunData modelData)
-		{
-			throw new NotImplementedException();
-		}
-
-		public void WriteResult(XMLDeclarationReport.ResultEntry result)
-		{
-			throw new NotImplementedException();
-		}
-
-		public void GenerateReport(XElement fullReportHash)
-		{
-			throw new NotImplementedException();
-		}
-
-		public XDocument Report => _report;
-
-		public XNamespace Tns => _tns;
-
-		#endregion
-
-		#region Implementation of IXMLMockupReport
-
-		public void WriteMockupResult(IResultEntry resultValue)
-		{
-			
-		}
-
-		public void WriteMockupSummary(IResultEntry resultValue)
-		{
-		}
-
-		public void WriteExemptedResults()
-		{
-			throw new NotImplementedException();
-		}
-
-		#endregion
-	}
-}
diff --git a/VectoCore/VectoCore/Mockup/Reports/MockupVehicleInformationFile.cs b/VectoCore/VectoCore/Mockup/Reports/MockupVehicleInformationFile.cs
index e00244edd0..1b1403beee 100644
--- a/VectoCore/VectoCore/Mockup/Reports/MockupVehicleInformationFile.cs
+++ b/VectoCore/VectoCore/Mockup/Reports/MockupVehicleInformationFile.cs
@@ -14,7 +14,7 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
 
 namespace TUGraz.VectoMockup.Reports
 {
-	internal class MockupInterimVehicleInformationFile : IXMLMultistepIntermediateReport, IXMLMockupReport
+	internal class MockupInterimVehicleInformationFile : IXMLMultistepIntermediateReport
 	{
 		private readonly IXMLMultistepIntermediateReport _intermediateVifImplementation;
 
@@ -39,38 +39,18 @@ namespace TUGraz.VectoMockup.Reports
 
 		#endregion
 
-		#region Implementation of IXMLMockupReport
-
-		public void WriteMockupResult(IResultEntry resultValue)
-		{
-			
-		}
-
-		public void WriteMockupSummary(IResultEntry resultValue)
-		{
-			
-		}
-
-		public void WriteExemptedResults()
-		{
-			
-		}
-
-		#endregion
 	}
 
 
-	internal class MockupPrimaryVehicleInformationFile : IXMLVehicleInformationFile, IXMLMockupReport
+	internal class MockupPrimaryVehicleInformationFile : IXMLVehicleInformationFile
     {
 		
 		private readonly IXMLVehicleInformationFile _vehicleInformationFileImplementation;
 		private VectoRunData _modelData;
 
-		private XElement Results;
 		public MockupPrimaryVehicleInformationFile(IXMLVehicleInformationFile vehicleInformationFileImplementation)
 		{
 			_vehicleInformationFileImplementation = vehicleInformationFileImplementation;
-			Results = new XElement(_vehicleInformationFileImplementation.Tns + XMLNames.Report_Results);
 		}
 
 
@@ -82,7 +62,7 @@ namespace TUGraz.VectoMockup.Reports
 			_modelData = modelData;
 		}
 
-		public void WriteResult(XMLDeclarationReport.ResultEntry result)
+		public void WriteResult(IResultEntry result)
 		{
 			_vehicleInformationFileImplementation.WriteResult(result);
 		}
@@ -93,25 +73,6 @@ namespace TUGraz.VectoMockup.Reports
 
 		#region Implementation of IXMLMockupReport
 
-		public void WriteMockupResult(IResultEntry resultValue)
-		{
-			var xElement = MockupResultReader.GetVIFMockupResult(Tns.NamespaceName, resultValue, Tns + "Result", _modelData);
-			Results.Add(xElement);
-		}
-
-		public void WriteMockupSummary(IResultEntry resultValue)
-		{
-			Results.AddFirst(new XElement(Tns + "Status", "success"));
-			Results.AddFirst(new XComment("Always prints success at the moment"));
-		}
-
-		public void WriteExemptedResults()
-		{
-			Results.Add(new XElement(Tns + "Status", "success"));
-			Results.Add(new XElement(Tns + "ExemptedVehicle"));
-		}
-		
-
 		public void GenerateReport(XElement fullReportHash)
 		{ 
 			_vehicleInformationFileImplementation.GenerateReport(fullReportHash);
@@ -122,8 +83,6 @@ namespace TUGraz.VectoMockup.Reports
 			get
 			{
 				var report = _vehicleInformationFileImplementation.Report;
-				var resultsElement = report.XPathSelectElements($"//*[local-name()='{XMLNames.Report_Results}']");
-				resultsElement.First().ReplaceWith(Results);
 				return report;
 			}
 		}
diff --git a/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupPrimaryReport.cs b/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupPrimaryReport.cs
index 774218a674..a950328396 100644
--- a/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupPrimaryReport.cs
+++ b/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupPrimaryReport.cs
@@ -39,8 +39,8 @@ namespace TUGraz.VectoMockup.Reports
 
 		protected override void WriteResult(ResultEntry result)
 		{
-			(ManufacturerRpt as IXMLMockupReport).WriteMockupResult(result);
-			(VehicleInformationFile as IXMLMockupReport).WriteMockupResult(result);
+			ManufacturerRpt.WriteResult(result);
+			VehicleInformationFile.WriteResult(result);
 		}
 
 		#endregion
@@ -48,14 +48,6 @@ namespace TUGraz.VectoMockup.Reports
 		
 		protected override void GenerateReports()
 		{
-			if (!_exempted) {
-				(ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First());
-				(VehicleInformationFile as IXMLMockupReport).WriteMockupSummary(Results.First());
-			} else {
-				(ManufacturerRpt as IXMLMockupReport).WriteExemptedResults();
-				(VehicleInformationFile as IXMLMockupReport).WriteExemptedResults();
-			}
-
 			ManufacturerRpt.GenerateReport();
 			var fullReportHash = GetSignature(ManufacturerRpt.Report);
 			VehicleInformationFile.GenerateReport(fullReportHash);
diff --git a/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReport.cs b/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReport.cs
index 6b73c358e4..4b8b05c612 100644
--- a/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReport.cs
+++ b/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReport.cs
@@ -35,24 +35,10 @@ namespace TUGraz.VectoMockup.Reports
 
 		protected override void WriteResult(ResultEntry result)
 		{
-			(ManufacturerRpt as IXMLMockupReport).WriteMockupResult(result);
-			(CustomerRpt as IXMLMockupReport).WriteMockupResult(result);
+			ManufacturerRpt.WriteResult(result);
+			CustomerRpt.WriteResult(result);
 		}
 
-		protected override void GenerateReports()
-		{
-			if (!_exempted) {
-				(ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First());
-				(CustomerRpt as IXMLMockupReport).WriteMockupSummary(Results.First());
-			} else {
-				(ManufacturerRpt as IXMLMockupReport).WriteExemptedResults();
-				(CustomerRpt as IXMLMockupReport).WriteExemptedResults();
-			}
-		
-			
-			
-			base.GenerateReports();
-		}
 
 		#endregion
 	}
diff --git a/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs b/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
index bd25165ae8..a4a250ff06 100644
--- a/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
+++ b/VectoCore/VectoCore/Mockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
@@ -118,23 +118,8 @@ namespace TUGraz.VectoMockup.Reports
 				result.FuelData = primaryResult.EnergyConsumption.Keys
 					.Select(x => DeclarationData.FuelData.Lookup(x, tankSystem)).Cast<IFuelProperties>().ToList();
 			}
-			(ManufacturerRpt as IXMLMockupReport).WriteMockupResult(result);
-			(CustomerRpt as IXMLMockupReport).WriteMockupResult(result);
-		}
-
-		protected override void GenerateReports()
-		{
-			if (!_exempted) {
-				(ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First());
-				(CustomerRpt as IXMLMockupReport).WriteMockupSummary(Results.First());
-			} else {
-				(ManufacturerRpt as IXMLMockupReport).WriteExemptedResults();
-				(CustomerRpt as IXMLMockupReport).WriteExemptedResults();
-			}
-
-
-
-			base.GenerateReports();
+			ManufacturerRpt.WriteResult(result);
+			CustomerRpt.WriteResult(result);
 		}
 
 	}
diff --git a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs
index c45182cb41..0d164a1574 100644
--- a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs
+++ b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs
@@ -131,7 +131,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
                 ExecutionMode = ExecutionMode.Declaration,
                 JobName = DataProvider.MultistageJobInputData.JobInputData.ManufacturingStages.Last().Vehicle.Identifier,
                 Report = Report,
-                //Aux = PrimaryBusMockupRunDataFactory.CreateMockupBusAux(CompletedVehicle),
+				//Aux = PrimaryBusMockupRunDataFactory.CreateMockupBusAux(CompletedVehicle),
 
                 //            //AirdragData = DataAdapterSpecific.CreateAirdragData(CompletedVehicle, mission),
                 //            //EngineData = DataAdapterSpecific.CreateEngineData(PrimaryVehicle, modeIdx, mission),
@@ -224,7 +224,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
                 VehicleData = new VehicleData()
                 {
                     Loading = loading.Value.Item1,
-
+                    VehicleClass = primarySegment.VehicleClass,
                 },
                 EngineData = PrimaryBusMockupRunDataFactory.CreateMockupEngineData(PrimaryVehicle, modeIdx, CompletedVehicle.TankSystem),
                 JobName = DataProvider.MultistageJobInputData.JobInputData.ManufacturingStages.Last().Vehicle.Identifier,
@@ -233,6 +233,9 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
                 Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
                 Report = Report,
                 ModFileSuffix = $"_{_segmentCompletedBus.VehicleClass.GetClassNumber()}-Generic_{loading.Key}",
+				InputData = DataProvider.MultistageJobInputData,
+                GearboxData = PrimaryBusMockupRunDataFactory.CreateMockupGearboxData(PrimaryVehicle),
+                AxleGearData = PrimaryBusMockupRunDataFactory.CreateMockupAxleGearData(PrimaryVehicle)
             };
             return base.CreateVectoRunDataGeneric(mission, loading, primarySegment, modeIdx);
         }
diff --git a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs
index 7ed4d67fad..c3c5c4fc26 100644
--- a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs
@@ -246,7 +246,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories
                 SleeperCab = vehicleData.SleeperCab,
                 VehicleClass = _segment.VehicleClass,
                 OffVehicleCharging = vehicleData.OvcHev,
-
+                VocationalVehicle = vehicleData.VocationalVehicle,
             };
         }
     }
-- 
GitLab