From a834823bc5e5d09dc05e38e76e64e8bdb0c207ae Mon Sep 17 00:00:00 2001
From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at>
Date: Fri, 24 Jun 2022 15:09:08 +0200
Subject: [PATCH] started with report for Mockup

---
 .../VectoCore/Ninject/VectoNinjectModule.cs   |  3 +
 .../AbstractVIFReport.cs                      | 69 +++++++++++++
 .../IVIFReportFactory.cs                      | 64 ++++++++++++
 .../VIFReport/PrimaryVIFReport.cs             | 40 ++++++++
 .../VectoMockup/Ninject/VIFMockupModule.cs    | 96 +++++++++++++++++-
 .../Reports/MockupReportFactory.cs            |  2 +
 .../VectoMockup/Reports/MockupVIFReport.cs    | 97 +++++++++++++++++++
 7 files changed, 369 insertions(+), 2 deletions(-)
 create mode 100644 VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFReport.cs
 create mode 100644 VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
 create mode 100644 VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFReport/PrimaryVIFReport.cs
 create mode 100644 VectoMockup/VectoMockup/Reports/MockupVIFReport.cs

diff --git a/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs b/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs
index ed368bc1c4..3ea6c57d05 100644
--- a/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs
+++ b/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs
@@ -41,6 +41,7 @@ using TUGraz.VectoCore.OutputData.XML;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
 using TUGraz.VectoCore.OutputData.XML.ComponentWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 using TUGraz.VectoCore.OutputData.XML.Engineering;
 
 using TUGraz.VectoCore.OutputData.XML.GroupWriter;
@@ -92,6 +93,8 @@ namespace TUGraz.VectoCore
 
 			LoadModule<MRFNinjectModule>();
 			LoadModule<CIFNinjectModule>();
+			LoadModule<VIFNinjectModule>();
+			
 
 
 #if (MOCKUP)  //TODO: add second constant for release
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFReport.cs
new file mode 100644
index 0000000000..b686d18b72
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFReport.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1
+{
+	public abstract class AbstractVIFReport : IXMLPrimaryVehicleReport
+	{
+		private XDocument _report;
+		private XNamespace _tns;
+
+		protected readonly IVIFReportFactory _vifFactory;
+
+		protected XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
+		public static XNamespace VIF => XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1");
+
+		public abstract string OutputDataType { get; }
+
+
+		protected XElement Vehicle { get; set; }
+		protected XElement Results { get; set; }
+	
+
+		protected AbstractVIFReport(IVIFReportFactory vifFactory)
+		{
+			_vifFactory = vifFactory;
+		}
+		
+		public abstract void InitializeVehicleData(IDeclarationInputDataProvider inputData);
+		
+		#region Implementation of IXMLPrimaryVehicleReport
+
+		public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			InitializeVehicleData(modelData.InputData);
+			Results = new XElement(VIF + XMLNames.Report_Results);
+		}
+
+		private List<XMLDeclarationReport.ResultEntry> results = new List<XMLDeclarationReport.ResultEntry>();
+		public void WriteResult(XMLDeclarationReport.ResultEntry result)
+		{
+			results.Add(result);
+		}
+
+		public void GenerateReport(XElement fullReportHash)
+		{
+			//ToDo add missing namespaces and 
+			Report = new XDocument(new XElement(VIF + "VectoOutputMultistep",
+					new XAttribute("xmlns", VIF),
+					new XAttribute(XNamespace.Xmlns + "xsi", xsi)),
+				Vehicle,
+				Results
+			);
+		}
+
+		public XDocument Report { get; protected set; }
+
+		public XNamespace Tns => _tns;
+
+		#endregion
+	}
+}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
new file mode 100644
index 0000000000..3288d87e7d
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1
+{
+	public interface IVIFReportFactory
+	{
+		IXMLPrimaryVehicleReport GetVIFReport(VehicleCategory vehicleType, VectoSimulationJobType jobType,
+			ArchitectureID archId, bool exempted, bool iepc, bool ihpc);
+
+
+
+
+		#region Vehicle
+
+		IXmlTypeWriter GetConventionalLorryVehicleType();
+
+
+		#endregion
+
+
+
+		#region Components
+		
+		IXmlTypeWriter GetAdasType();
+		IXmlTypeWriter GetAngelDriveType();
+		IXmlTypeWriter GetAuxiliaryType();
+		IXmlTypeWriter GetAxlegearType();
+		IXmlTypeWriter GetAxleWheelsType();
+		IXmlTypeWriter GetBoostingLimitationsType();
+		IXmlTypeWriter GetElectricMotorTorqueLimitsType();
+		IXmlTypeWriter GetEngineType();
+		IXmlTypeWriter GetTorqueConvertType();
+		IXmlTypeWriter GetTorqueLimitsType();
+		IXmlTypeWriter GetTransmissionType();
+
+		#endregion
+
+
+		#region Groups
+
+		IReportOutputGroup GetConventionalVehicleGroup();
+		IReportOutputGroup GetPrimaryBusGeneralParameterGroup();
+		IReportOutputGroup GetPrimaryBusChassisParameterGroup();
+		IReportOutputGroup GetPrimaryBusRetarderParameterGroup();
+		IReportOutputGroup GetPrimaryBusXeVParameterGroup();
+		IReportOutputGroup GetHevIepcSVehicleGroup();
+		IReportOutputGroup GetHevSxVehicleGroup();
+		IReportOutputGroup GetIepcVehicleGroup();
+		IReportOutputGroup GetPEVVehicleGroup();
+
+
+		#endregion
+
+	}
+}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFReport/PrimaryVIFReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFReport/PrimaryVIFReport.cs
new file mode 100644
index 0000000000..01c6ab60c1
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFReport/PrimaryVIFReport.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.VIFReport
+{
+	internal class PrimaryVIFReportBase : AbstractVIFReport
+	{
+		private string _outputDataType;
+		public PrimaryVIFReportBase(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		#region Overrides of AbstractVIFReport
+
+		public override string OutputDataType => _outputDataType;
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+
+
+
+			//Vehicle
+			//InputDataSignature
+			//ManufacturerRecordSignature
+			//Results
+			//ApplicationInformation
+
+
+			throw new NotImplementedException();
+		}
+
+		#endregion
+	}
+
+	
+
+
+}
diff --git a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
index e448064bed..b4fab35d63 100644
--- a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
@@ -3,19 +3,111 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
+using TUGraz.VectoMockup.Reports;
 
 namespace TUGraz.VectoMockup.Ninject
 {
-    internal class VIFMockupModulen : AbstractNinjectModule
+    internal class VIFMockupModule : AbstractNinjectModule
     {
 		#region Overrides of NinjectModule
 
 		public override void Load()
 		{
-			
+			Kernel.Bind<IVIFReportFactory>().To<MockupVIFReportFactory>()
+				.WhenInjectedExactlyInto<MockupReportFactory>().InSingletonScope();
 		}
 
 		#endregion
+
+		public class MockupVIFReportFactory : IVIFReportFactory
+		{
+			private IVIFReportFactory _vifReportFactoryImplementation;
+
+
+			public MockupVIFReportFactory(IVIFReportFactory vifReportFactoryImplementation)
+			{
+				_vifReportFactoryImplementation = vifReportFactoryImplementation;
+			}
+
+
+			#region Implementation of IVIFReportFactory
+
+			public IXMLPrimaryVehicleReport GetVIFReport(VehicleCategory vehicleType, VectoSimulationJobType jobType, ArchitectureID archId,
+				bool exempted, bool iepc, bool ihpc)
+			{
+				return new MockupVIFReport(
+					_vifReportFactoryImplementation.GetVIFReport(vehicleType, jobType, archId, exempted, iepc, ihpc));
+			}
+
+			public IXmlTypeWriter GetConventionalLorryVehicleType()
+			{
+				return _vifReportFactoryImplementation.GetConventionalLorryVehicleType();
+			}
+
+			public IXmlTypeWriter GetTorqueConvertType()
+			{
+				return _vifReportFactoryImplementation.GetTorqueConvertType();
+			}
+
+			public IXmlTypeWriter GetTorqueLimitsType()
+			{
+				return _vifReportFactoryImplementation.GetTorqueLimitsType();
+			}
+
+			public IXmlTypeWriter GetTransmissionType()
+			{
+				return _vifReportFactoryImplementation.GetTransmissionType();
+			}
+
+			public IReportOutputGroup GetConventionalVehicleGroup()
+			{
+				return _vifReportFactoryImplementation.GetConventionalVehicleGroup();
+			}
+
+			public IReportOutputGroup GetPrimaryBusGeneralParameterGroup()
+			{
+				throw new NotImplementedException();
+			}
+
+			public IXmlTypeWriter GetAdasType()
+			{
+				return _vifReportFactoryImplementation.GetAdasType();
+			}
+
+			public IXmlTypeWriter GetAngelDriveType()
+			{
+				return _vifReportFactoryImplementation.GetAngelDriveType();
+			}
+
+			public IXmlTypeWriter GetAuxiliaryType()
+			{
+				return _vifReportFactoryImplementation.GetAuxiliaryType();
+			}
+
+			public IXmlTypeWriter GetAxlegearType()
+			{
+				return _vifReportFactoryImplementation.GetAxlegearType();
+			}
+
+			public IXmlTypeWriter GetAxleWheelsType()
+			{
+				return _vifReportFactoryImplementation.GetAxleWheelsType();
+			}
+
+			public IXmlTypeWriter GetEngineType()
+			{
+				return _vifReportFactoryImplementation.GetEngineType();
+			}
+
+			#endregion
+		}
+
 	}
 }
diff --git a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
index 28e605c867..ad010f8813 100644
--- a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
+++ b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
@@ -10,6 +10,7 @@ using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.XML;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 
 namespace TUGraz.VectoMockup.Reports
 {
@@ -17,6 +18,7 @@ namespace TUGraz.VectoMockup.Reports
     {
         private readonly IManufacturerReportFactory _mrfFactory;
         private readonly ICustomerInformationFileFactory _cifFactory;
+		private readonly IVIFReportFactory _vifFactory;
 
 
         #region Implementation of IXMLDeclarationReportFactory
diff --git a/VectoMockup/VectoMockup/Reports/MockupVIFReport.cs b/VectoMockup/VectoMockup/Reports/MockupVIFReport.cs
new file mode 100644
index 0000000000..476798affb
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/MockupVIFReport.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
+
+namespace TUGraz.VectoMockup.Reports
+{
+    public class MockupVIFReport : IXMLPrimaryVehicleReport, IXMLMockupReport
+    {
+		private XDocument _report;
+		private XNamespace _tns;
+
+
+		public MockupVIFReport(IXMLPrimaryVehicleReport vifReport)
+		{
+
+		}
+
+
+
+		//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, List<List<FuelData.Entry>> fuelModes)
+		{
+			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(XMLDeclarationReport.ResultEntry resultValue)
+		{
+			
+		}
+
+		public void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue)
+		{
+		}
+
+		#endregion
+	}
+}
-- 
GitLab