From ecb98d3f993359ee975f6be0d229ccad9681367f Mon Sep 17 00:00:00 2001
From: Harald Martini <martini@ivt.tugraz.at>
Date: Wed, 20 Oct 2021 13:59:20 +0200
Subject: [PATCH] Updated Constructor of SimulatorFactoryCreators, added
 XMLReport Factory to SimulatorFactoryDeclaration

---
 .../Models/Simulation/Impl/JobContainer.cs    |  3 +-
 .../IFollowUpSimulatorFactoryCreator.cs       |  8 ++---
 .../SimulatorFactoryDeclaration.cs            | 30 +++++++++++++++----
 .../SimulationFactoryNinjectModule.cs         |  5 +---
 4 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs
index e8d2b01df1..fc47ca8ee2 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs
@@ -106,9 +106,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					if (followUpSimulatorFactoryFetched || !AllCompleted()) {
 						return null;
 					}
+
 					followUpSimulatorFactoryFetched = true;
 					return _simulatorFactory.FollowUpSimulatorFactory;
-				} finally {
+				}finally {
 
 				}
 			}
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs
index 7b54beffdd..eb532932ca 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs
@@ -44,7 +44,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 		public abstract ISimulatorFactory GetNextFactory();
 		public abstract IOutputDataWriter CurrentStageOutputDataWriter { get; }
 		public abstract IDeclarationReport CurrentStageDeclarationReport { get; }
-
 		public abstract IInputDataProvider CurrentStageInputData { get; }
 
 		#endregion
@@ -58,9 +57,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 		private readonly IDeclarationReport _currentStageDeclarationReport = null;
 		private readonly IXMLInputDataReader _inputDataReader;
 		private readonly IMultistagePrimaryAndStageInputDataProvider _originalStageInputData;
+		private readonly IDeclarationReport _originalDeclarationReport;
 
 		public InterimAfterPrimaryFactoryCreator(IMultistagePrimaryAndStageInputDataProvider originalStageInputData,
 			IOutputDataWriter originalReportWriter, 
+			IDeclarationReport originalDeclarationReport,
 			ISimulatorFactoryFactory simFactoryFactory, 
 			IXMLInputDataReader inputDataReader, bool validate) : base(simFactoryFactory, validate)
 		{
@@ -68,6 +69,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 			_originalStageInputData = originalStageInputData;
 			_inputDataReader = inputDataReader;
 			_originalOriginalReportWriter = originalReportWriter;
+			_originalDeclarationReport = originalDeclarationReport;
 			_currentStageOutputDataWriter =
 				new TempFileOutputWriter(originalReportWriter, ReportType.DeclarationReportManufacturerXML)
 				;
@@ -93,8 +95,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 				nextStageInput.MultistageJobInputData.JobInputData.ManufacturingStages?.Count ?? -1;
 
 			_originalOriginalReportWriter.NumberOfManufacturingStages = manStagesCount;
-
-			return _simulatorFactoryFactory.Factory(ExecutionMode.Declaration, nextStageInput, _originalOriginalReportWriter, null,
+			return _simulatorFactoryFactory.Factory(ExecutionMode.Declaration, nextStageInput, _originalOriginalReportWriter, _originalDeclarationReport,
 				null, _validate);
 		}
 
@@ -104,7 +105,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 		#region Overrides of FollowUpSimulatorFactoryCreator
 
 		public override IInputDataProvider CurrentStageInputData => _originalStageInputData.PrimaryVehicle;
-
 		public override IOutputDataWriter CurrentStageOutputDataWriter => _currentStageOutputDataWriter;
 		public override IDeclarationReport CurrentStageDeclarationReport => _currentStageDeclarationReport;
 
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
index e40c0e70c7..6d36c5f001 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
@@ -28,6 +28,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 		private readonly ISimulatorFactoryFactory _simFactoryFactory;
 		private IInputDataProvider _currentStageInputData;
 		private IDeclarationReport _currentStageDeclarationReport;
+		private IVTPReport _currentStageVTPReport;
+		private readonly IXMLDeclarationReportFactory _xmlDeclarationReportFactory;
+
 
 		public SimulatorFactoryDeclaration(IInputDataProvider dataProvider, 
 			IOutputDataWriter writer,
@@ -35,13 +38,17 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 			IVTPReport vtpReport,
 			bool validate,
 			IXMLInputDataReader xmlInputDataReader,
-			ISimulatorFactoryFactory simulatorFactoryFactory
+			ISimulatorFactoryFactory simulatorFactoryFactory,
+			IXMLDeclarationReportFactory xmlDeclarationReportFactory
 			) : base(ExecutionMode.Declaration, writer, validate)
 		{
 			_xmlInputDataReader = xmlInputDataReader;
 			_simFactoryFactory = simulatorFactoryFactory;
 			_currentStageInputData = dataProvider;
-			_currentStageDeclarationReport = declarationReport;
+			_currentStageDeclarationReport = declarationReport ?? xmlDeclarationReportFactory.CreateReport(dataProvider, writer);
+			_currentStageVTPReport = vtpReport ?? xmlDeclarationReportFactory.CreateVTPReport(dataProvider, writer);
+			_xmlDeclarationReportFactory = xmlDeclarationReportFactory;
+
 			_followUpSimulatorFactoryCreator = CreateFollowUpFactoryCreator();
 			UpdateCurrentStageInput();
 			_simulate = CanBeSimulated(dataProvider);
@@ -50,6 +57,14 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 			}
 		}
 
+		private void CreateReport()
+		{
+			if (_currentStageDeclarationReport != null && _currentStageInputData != null) {
+
+			}
+		}
+
+
 		/// <summary>
 		/// Modifies the input and output of the current simulation step based on the Following step
 		/// </summary>
@@ -67,15 +82,17 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 
 		[UsedImplicitly]
 		public SimulatorFactoryDeclaration(IInputDataProvider dataProvider,
-			IOutputDataWriter writer, IXMLInputDataReader xmlInputDataReader,
-			ISimulatorFactoryFactory simulatorFactoryFactory, bool validate) : this(
+			IOutputDataWriter writer,
+			bool validate, IXMLInputDataReader xmlInputDataReader,
+			ISimulatorFactoryFactory simulatorFactoryFactory, IXMLDeclarationReportFactory xmlDeclarationReportFactory) : this(
 			dataProvider: dataProvider, 
 			declarationReport: null,
 			writer: writer,
 			vtpReport: null, 
 			validate: true,
 			xmlInputDataReader: xmlInputDataReader, 
-			simulatorFactoryFactory: simulatorFactoryFactory)
+			simulatorFactoryFactory: simulatorFactoryFactory,
+			xmlDeclarationReportFactory: xmlDeclarationReportFactory)
 		{
 
 		}
@@ -104,8 +121,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 			switch (_currentStageInputData) {
 				case IMultistagePrimaryAndStageInputDataProvider multistagePrimaryAndStageInputDataProvider:
 					return new InterimAfterPrimaryFactoryCreator(
-							multistagePrimaryAndStageInputDataProvider, 
+							multistagePrimaryAndStageInputDataProvider,
 							ReportWriter,
+							_currentStageDeclarationReport,
 						_simFactoryFactory, _xmlInputDataReader, Validate);
 				case IMultistageVIFInputData multistageVifInputData:
 					if (multistageVifInputData.VehicleInputData != null) {
diff --git a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs
index bda5e5f57d..6d5135be91 100644
--- a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs
+++ b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs
@@ -44,7 +44,7 @@ using TUGraz.VectoHashing;
 
 namespace TUGraz.VectoCore.Models.Simulation
 {
-	public class SimulationFactoryNinjectModule : NinjectModule
+	public class SimulationFactoryNinjectModule : VectoNinjectModule
 	{
 		#region Overrides of NinjectModule
 
@@ -59,9 +59,6 @@ namespace TUGraz.VectoCore.Models.Simulation
 			Bind<IDeclarationReport>().To<NullDeclarationReport>();
 			Bind<IVTPReport>().To<NullVTPReport>();
 
-			//if (Kernel != null && !Kernel.HasModule(typeof(PowertrainBuilderInjectModule).FullName)) {
-			//	Kernel.Load(new[] { new PowertrainBuilderInjectModule() });
-			//}
 		}
 
 		#endregion
-- 
GitLab