From 6bbcf9bd2a33fe458325ec5c039e7be3a567afd0 Mon Sep 17 00:00:00 2001
From: Harald Martini <harald.martini@student.tugraz.at>
Date: Wed, 1 Jun 2022 15:29:40 +0200
Subject: [PATCH] override CreateFollowUpSimulatorFactoryCreator in
 MockupDeclarationSimulatorFactory

---
 .../MockupDeclarationSimulatorFactory.cs      | 60 +++++++++++++++++--
 1 file changed, 56 insertions(+), 4 deletions(-)

diff --git a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs
index da21bd6941..ff38379ff0 100644
--- a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs
+++ b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs
@@ -10,23 +10,39 @@ using TUGraz.VectoCore.InputData.FileIO.XML;
 using TUGraz.VectoCore.Models.Simulation;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
-using TUGraz.VectoCore.Models.Simulation.Impl.Mockup;
 using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoMockup.Reports;
 
 namespace TUGraz.VectoMockup.Simulation.SimulatorFactory
 {
     internal class MockupDeclarationSimulatorFactory : SimulatorFactoryDeclaration
     {
-		public MockupDeclarationSimulatorFactory(IInputDataProvider dataProvider, IOutputDataWriter writer, IDeclarationReport declarationReport, IVTPReport vtpReport, bool validate, IXMLInputDataReader xmlInputDataReader, ISimulatorFactoryFactory simulatorFactoryFactory, IXMLDeclarationReportFactory xmlDeclarationReportFactory, IVectoRunDataFactoryFactory runDataFactoryFactory) : base(dataProvider, writer, declarationReport, vtpReport, validate, xmlInputDataReader, simulatorFactoryFactory, xmlDeclarationReportFactory, runDataFactoryFactory) { }
-		public MockupDeclarationSimulatorFactory(IInputDataProvider dataProvider, IOutputDataWriter writer, bool validate, IXMLInputDataReader xmlInputDataReader, ISimulatorFactoryFactory simulatorFactoryFactory, IXMLDeclarationReportFactory xmlDeclarationReportFactory, IVectoRunDataFactoryFactory runDataFactoryFactory) : base(dataProvider, writer, validate, xmlInputDataReader, simulatorFactoryFactory, xmlDeclarationReportFactory, runDataFactoryFactory) { }
+		public MockupDeclarationSimulatorFactory(IInputDataProvider dataProvider, IOutputDataWriter writer,
+			IDeclarationReport declarationReport, IVTPReport vtpReport, bool validate,
+			IXMLInputDataReader xmlInputDataReader, ISimulatorFactoryFactory simulatorFactoryFactory,
+			IXMLDeclarationReportFactory xmlDeclarationReportFactory, IVectoRunDataFactoryFactory runDataFactoryFactory)
+			: base(dataProvider, writer, declarationReport, vtpReport, validate, xmlInputDataReader,
+				simulatorFactoryFactory, xmlDeclarationReportFactory, runDataFactoryFactory) { }
+		public MockupDeclarationSimulatorFactory(IInputDataProvider dataProvider, 
+			IOutputDataWriter writer, bool validate, 
+			IXMLInputDataReader xmlInputDataReader, 
+			ISimulatorFactoryFactory simulatorFactoryFactory, 
+			IXMLDeclarationReportFactory xmlDeclarationReportFactory, 
+			IVectoRunDataFactoryFactory runDataFactoryFactory) : base(dataProvider, writer, validate, xmlInputDataReader, simulatorFactoryFactory, xmlDeclarationReportFactory, runDataFactoryFactory) { }
 
 		#region Overrides of SimulatorFactory
 
+
 		protected override IVectoRun GetExemptedRun(VectoRunData data)
 		{
-			throw new NotImplementedException("Exempted Mockup not implemented");
+
+			//var addReportResult = PrepareReport(data);
+			//return new MockupRun(new VehicleContainer(ExecutionMode.Declaration,
+			//		new ModalDataContainer(data, ReportWriter, addReportResult))
+			//	{ RunData = data });
+
 			return base.GetExemptedRun(data);
 		}
 
@@ -39,6 +55,42 @@ namespace TUGraz.VectoMockup.Simulation.SimulatorFactory
 			
 		}
 
+		#region Overrides of SimulatorFactoryDeclaration
+
+		protected override IFollowUpSimulatorFactoryCreator CreateFollowUpFactoryCreator(IInputDataProvider currentStageInputData,
+			IDeclarationReport currentStageDeclarationReport)
+		{
+			switch (currentStageInputData)
+			{
+				case IMultistagePrimaryAndStageInputDataProvider multistagePrimaryAndStageInputDataProvider:
+					return new MockupInterimAfterPrimaryFactoryCreator(
+						multistagePrimaryAndStageInputDataProvider,
+						ReportWriter,
+						currentStageDeclarationReport,
+						_simFactoryFactory, 
+						((IMockupDeclarationReportFactory)_xmlDeclarationReportFactory).MrfFactory,
+						((IMockupDeclarationReportFactory)_xmlDeclarationReportFactory).CifFactory, 
+						_xmlInputDataReader, 
+						Validate);
+				case IMultistageVIFInputData multistageVifInputData:
+					if (multistageVifInputData.VehicleInputData != null)
+					{
+						return new MockupCompletedAfterPrimaryFactoryCreator(
+							multistageVifInputData,
+							ReportWriter,
+							currentStageDeclarationReport,
+							_xmlInputDataReader,
+							_simFactoryFactory, Validate);
+					}
+					break;
+				default:
+					return null;
+			}
+			return null;
+		}
+
+		#endregion
+
 		#endregion
 	}
 }
-- 
GitLab