From 47ba858db335ce4373df5f564eb82270575a7ba3 Mon Sep 17 00:00:00 2001
From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at>
Date: Tue, 12 Oct 2021 09:27:29 +0200
Subject: [PATCH] replaced switch case in CreateSimulatorFactory with call to
 ISimulatorFactoryFactory

---
 VECTO/GUI/MainForm.vb                         |  3 +-
 .../Models/Simulation/ISimulatorFactory.cs    |  3 ++
 .../Simulation/ISimulatorFactoryFactory.cs    |  3 +-
 .../Impl/SimulatorFactory/SimulatorFactory.cs | 29 +++++++++----------
 4 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb
index b42ea57526..ee4824c169 100644
--- a/VECTO/GUI/MainForm.vb
+++ b/VECTO/GUI/MainForm.vb
@@ -48,6 +48,7 @@ Imports TUGraz.VectoCommon.Resources
 Imports TUGraz.VectoCommon.Utils
 Imports TUGraz.VectoCore
 Imports TUGraz.VectoCore.InputData.FileIO.XML
+Imports TUGraz.VectoCore.Models.Simulation
 Imports TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 Imports TUGraz.VectoCore.Models.SimulationComponent.Data
 Imports TUGraz.VectoCore.OutputData
@@ -1024,7 +1025,7 @@ lbFound:
                 Dim outFile As String = GetOutputDirectory(jobFile)
                 Dim fileWriter As FileOutputWriter = New FileOutputWriter(outFile)
 
-                Dim runsFactory As SimulatorFactory = SimulatorFactory.CreateSimulatorFactory(mode, input, fileWriter)
+                Dim runsFactory As ISimulatorFactory = SimulatorFactory.CreateSimulatorFactory(mode, input, fileWriter)
                 runsFactory.WriteModalResults = Cfg.ModOut
                 runsFactory.ModalResults1Hz = Cfg.Mod1Hz
                 runsFactory.Validate = cbValidateRunData.Checked
diff --git a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs
index d370c58c7e..878c80f6a2 100644
--- a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs
@@ -47,6 +47,9 @@ namespace TUGraz.VectoCore.Models.Simulation
 		IVectoRunDataFactory DataReader { get; }
 		ISimulatorFactory FollowUpSimulatorFactory { get; }
 		IOutputDataWriter ReportWriter { get; }
+		bool SerializeVectoRunData { get; set; }
+
+		bool CreateFollowUpSimulatorFactory { get; set; }
 
 		/// <summary>
 		/// Creates powertrain and initializes it with the component's data.
diff --git a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs
index 8e8617343e..50ae3f960f 100644
--- a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs
@@ -41,7 +41,8 @@ namespace TUGraz.VectoCore.Models.Simulation
 			ExecutionMode mode, IInputDataProvider dataProvider,
 			IOutputDataWriter writer);
 
-		ISimulatorFactory Factory(IInputDataProvider dataProvider,
+		ISimulatorFactory Factory(ExecutionMode mode, 
+			IInputDataProvider dataProvider,
 			IOutputDataWriter writer,
 			IDeclarationReport declarationReport = null,
 			IVTPReport vtpReport = null,
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
index d1c9d38447..59fb4431bd 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
@@ -71,30 +71,29 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 		{
 			get => CreateFollowUpSimulatorFactory ? _followingSimulatorFactoryCreator?.Invoke() : null;
 		}
-
-		public bool CreateFollowUpSimulatorFactory = false;
+		public bool CreateFollowUpSimulatorFactory { get; set; } = false;
 		protected readonly ExecutionMode _mode;
 
 
 		#region Constructors and Factory Methods to instantiate Instances of SimulatorFactory without NInject (should only be used in Testcases that are not updated yet)
 
 		[Obsolete("Creation of new SimulatorFactories should be done with SimulatorFactoryFactory NInject Factory", false)]
-		public static SimulatorFactory CreateSimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, IDeclarationReport declarationReport = null, IVTPReport vtpReport=null, bool validate = true)
+		public static ISimulatorFactory CreateSimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, IDeclarationReport declarationReport = null, IVTPReport vtpReport=null, bool validate = true)
 		{
-			switch (mode)
-			{
-				case ExecutionMode.Declaration:
-					ISimulatorFactoryFactory simFactoryFactory =
-						new StandardKernel(new VectoNinjectModule()).Get<ISimulatorFactoryFactory>();
-					return new SimulatorFactoryDeclaration(dataProvider, writer, declarationReport, vtpReport, validate);
-				case ExecutionMode.Engineering:
-					return new SimulatorFactoryEngineering(dataProvider, writer, validate);
-				default:
-					throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode);
-			}
+			return new StandardKernel(new VectoNinjectModule()).Get<ISimulatorFactoryFactory>().Factory(mode, dataProvider, writer, declarationReport, vtpReport, validate);
+			//switch (mode)
+			//{
+			//	case ExecutionMode.Declaration:
+
+			//		return new SimulatorFactoryDeclaration(dataProvider, writer, declarationReport, vtpReport, validate);
+			//	case ExecutionMode.Engineering:
+			//		return new SimulatorFactoryEngineering(dataProvider, writer, validate);
+			//	default:
+			//		throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode);
+			//}
 		}
 		[Obsolete("Creation of new SimulatorFactories should be done with SimulatorFactoryFactory NInject Factory", false)]
-		public static SimulatorFactory CreateSimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer)
+		public static ISimulatorFactory CreateSimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer)
 		{
 			return CreateSimulatorFactory(mode, dataProvider, writer, null, null, true);
 		}
-- 
GitLab