From c299d2a30f41a54264c5afffded54618271cb120 Mon Sep 17 00:00:00 2001 From: Harald Martini <harald.martini@student.tugraz.at> Date: Thu, 23 Jun 2022 13:02:54 +0200 Subject: [PATCH] exempted heavy and medium lorries now work in mockup mode --- .../CustomerInformationFile.cs | 1 - .../XML/XMLDeclarationReport_0_9.cs | 4 ++-- .../VectoMockup/Ninject/CIFMockupModule.cs | 2 +- .../VectoMockup/Ninject/MRFMockupModule.cs | 2 +- .../VectoMockup/Reports/IXMLMockupReport.cs | 1 + .../Reports/MockupCustomerReport.cs | 16 +++++++++---- .../Reports/MockupManufacturerReport.cs | 10 +++++++- .../Reports/MockupPrimaryReport.cs | 6 +++++ .../Reports/MockupReportFactory.cs | 3 ++- .../XMLDeclarationMockupPrimaryReport.cs | 23 ++++++++++--------- .../Reports/XMLDeclarationMockupReport.cs | 18 +++++++++++---- .../Simulation/MockupExemptedRun.cs | 20 ++++++++++++++++ .../MockupLorryVectoRunDataFactory.cs | 5 ++-- .../PrimaryBusMockupRunDataFactory.cs | 10 +++++++- .../MockupDeclarationSimulatorFactory.cs | 16 ++++++++----- .../MockupFollowUpSimulatorFactoryCreator.cs | 2 +- 16 files changed, 103 insertions(+), 36 deletions(-) create mode 100644 VectoMockup/VectoMockup/Simulation/MockupExemptedRun.cs diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs index 27077ebcb9..4c5d7cdce4 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs @@ -55,7 +55,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { - var vehicle = _cifFactory.GetHEV_PxLorryVehicleType(); Vehicle = _cifFactory.GetHEV_PxLorryVehicleType().GetElement(inputData); } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs index e8efa731f7..12dbf90118 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs @@ -102,9 +102,9 @@ namespace TUGraz.VectoCore.OutputData.XML protected override void InstantiateReports(VectoRunData modelData) { var vehicleData = modelData.VehicleData.InputData; - var iepc = vehicleData.Components.IEPC != null; + var iepc = vehicleData.Components?.IEPC != null; var ihpc = - vehicleData.Components.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0; + vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0; ManufacturerRpt = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory, vehicleData.VehicleType, diff --git a/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs index d42cc8c3d8..fb512e085e 100644 --- a/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs +++ b/VectoMockup/VectoMockup/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)); + return new MockupCustomerReport(_cifFactory.GetCustomerReport(vehicleType, jobType, archId, exempted, iepc, ihpc), exempted); } public IXmlTypeWriter GetConventionalLorryVehicleType() diff --git a/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs index 04732f6a61..747f08b7d3 100644 --- a/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs +++ b/VectoMockup/VectoMockup/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)); + return new MockupManufacturerReport(_manufacturerReportFactoryImplementation.GetManufacturerReport(vehicleType, jobType, archId, exempted, iepc, ihpc), exempted); } public IXmlTypeWriter GetConventionalLorryVehicleType() diff --git a/VectoMockup/VectoMockup/Reports/IXMLMockupReport.cs b/VectoMockup/VectoMockup/Reports/IXMLMockupReport.cs index 847d4573c3..f5d43b3673 100644 --- a/VectoMockup/VectoMockup/Reports/IXMLMockupReport.cs +++ b/VectoMockup/VectoMockup/Reports/IXMLMockupReport.cs @@ -6,5 +6,6 @@ namespace TUGraz.VectoMockup.Reports { void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue); void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue); + void WriteExemptedResults(); } } \ No newline at end of file diff --git a/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs b/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs index e365d2265f..fab9897b4d 100644 --- a/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs +++ b/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs @@ -14,11 +14,13 @@ namespace TUGraz.VectoMockup.Reports { public class MockupCustomerReport : IXMLCustomerReport, IXMLMockupReport { - private readonly AbstractCustomerReport _originalCustomerReport; + private readonly bool _exempted; + private readonly AbstractCustomerReport _originalCustomerReport; private XNamespace Cif = AbstractCustomerReport.Cif; - public MockupCustomerReport(IXMLCustomerReport originalReport) + public MockupCustomerReport(IXMLCustomerReport originalReport, bool exempted) { - _originalCustomerReport = originalReport as AbstractCustomerReport; + _exempted = exempted; + _originalCustomerReport = originalReport as AbstractCustomerReport; _outputDataType = _originalCustomerReport.OutputDataType; Results = new XElement(Cif + XMLNames.Report_Results); } @@ -74,6 +76,12 @@ namespace TUGraz.VectoMockup.Reports Results.Add(MockupResultReader.GetCIFMockupResult(_outputDataType, resultValue, Cif + "Summary", _modelData)); } - #endregion + 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/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs b/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs index f75d7e22e1..46309a0535 100644 --- a/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs +++ b/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs @@ -14,14 +14,16 @@ namespace TUGraz.VectoMockup.Reports { public class MockupManufacturerReport : IXMLManufacturerReport, IXMLMockupReport { + private readonly bool _exempted; private AbstractManufacturerReport _ixmlManufacturerReportImplementation; private VectoRunData _modelData; private XNamespace Mrf = AbstractManufacturerReport.Mrf; private readonly string _outputData; private XElement Results { get; set; } - public MockupManufacturerReport(IXMLManufacturerReport originalManufacturerReport) + public MockupManufacturerReport(IXMLManufacturerReport originalManufacturerReport, bool exempted) { + _exempted = exempted; _ixmlManufacturerReportImplementation = originalManufacturerReport as AbstractManufacturerReport; _outputData = _ixmlManufacturerReportImplementation.OutputDataType; @@ -44,6 +46,12 @@ namespace TUGraz.VectoMockup.Reports //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 diff --git a/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs b/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs index 7bd7c44d85..508f3a13e3 100644 --- a/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs +++ b/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs @@ -60,6 +60,12 @@ namespace TUGraz.VectoMockup.Reports 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) { diff --git a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs index 58884b2090..28e605c867 100644 --- a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs +++ b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs @@ -88,7 +88,7 @@ namespace TUGraz.VectoMockup.Reports var vehicleCategory = declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory; if (vehicleCategory.IsLorry()) { - return new XMLDeclarationMockupReport(outputDataWriter, _mrfFactory, _cifFactory); + return new XMLDeclarationMockupReport(outputDataWriter, _mrfFactory, _cifFactory, declarationInputDataProvider.JobInputData.Vehicle.ExemptedVehicle); } if (vehicleCategory.IsBus()) @@ -105,6 +105,7 @@ namespace TUGraz.VectoMockup.Reports }; case VehicleCategory.HeavyBusPrimaryVehicle: return new XMLDeclarationMockupPrimaryReport(outputDataWriter, _mrfFactory, _cifFactory, + declarationInputDataProvider.JobInputData.Vehicle.ExemptedVehicle, declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle); diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs index d3fd01c0c5..8bfa286065 100644 --- a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs +++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs @@ -12,22 +12,17 @@ namespace TUGraz.VectoMockup.Reports { public class XMLDeclarationMockupPrimaryReport : XMLDeclarationReportPrimaryVehicle_09 { + private readonly bool _exempted; + public XMLDeclarationMockupPrimaryReport(IReportWriter writer, IManufacturerReportFactory mrfFactory, - ICustomerInformationFileFactory cifFactory, + ICustomerInformationFileFactory cifFactory, bool exempted, bool writePIF = false) : base(writer, mrfFactory, cifFactory, writePIF) { - - - - - - - - + _exempted = exempted; } protected override void InstantiateReports(VectoRunData modelData) @@ -55,8 +50,14 @@ namespace TUGraz.VectoMockup.Reports protected override void GenerateReports() { - (ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First()); - (PrimaryReport as IXMLMockupReport).WriteMockupSummary(Results.First()); + if (!_exempted) { + (ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First()); + (PrimaryReport as IXMLMockupReport).WriteMockupSummary(Results.First()); + } else { + (ManufacturerRpt as IXMLMockupReport).WriteExemptedResults(); + (PrimaryReport as IXMLMockupReport).WriteExemptedResults(); + } + ManufacturerRpt.GenerateReport(); var fullReportHash = CreateDummySig(); //CustomerRpt.GenerateReport(fullReportHash); diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs index d34b57ebb6..c8bc7ce6c9 100644 --- a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs +++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs @@ -14,11 +14,13 @@ namespace TUGraz.VectoMockup.Reports { internal class XMLDeclarationMockupReport : XMLDeclarationReport09 { + private readonly bool _exempted; + public XMLDeclarationMockupReport(IReportWriter writer, IManufacturerReportFactory mrfFactory, - ICustomerInformationFileFactory cifFactory) : + ICustomerInformationFileFactory cifFactory, bool exempted) : base(writer, mrfFactory, cifFactory) { - + _exempted = exempted; } #region Overrides of XMLDeclarationReport09 @@ -36,8 +38,16 @@ namespace TUGraz.VectoMockup.Reports protected override void GenerateReports() { - (ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First()); - (CustomerRpt as IXMLMockupReport).WriteMockupSummary(Results.First()); + 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(); } diff --git a/VectoMockup/VectoMockup/Simulation/MockupExemptedRun.cs b/VectoMockup/VectoMockup/Simulation/MockupExemptedRun.cs new file mode 100644 index 0000000000..d6bc297a36 --- /dev/null +++ b/VectoMockup/VectoMockup/Simulation/MockupExemptedRun.cs @@ -0,0 +1,20 @@ +using System; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.OutputData; + +namespace TUGraz.VectoMockup.Simulation +{ + internal class MockupExemptedRun : ExemptedRun + { + public MockupExemptedRun(VehicleContainer data, Action<ModalDataContainer> writeSumData) : base(data, writeSumData) { } + + #region Overrides of ExemptedRun + + protected override void CheckValidInput() + { + return; + } + + #endregion + } +} \ No newline at end of file diff --git a/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs b/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs index e67ae4c20e..92205fc234 100644 --- a/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs +++ b/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs @@ -69,14 +69,15 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) { runData = new VectoRunData - { + { Exempted = true, Report = Report, Mission = new Mission() { MissionType = MissionType.ExemptedMission }, VehicleData = CreateMockupVehicleData(vehicle), InputDataHash = InputDataProvider.XMLHash }; - } + runData.VehicleData.InputData = vehicle; + } else { diff --git a/VectoMockup/VectoMockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs b/VectoMockup/VectoMockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs index c506b333c7..a67489d8ef 100644 --- a/VectoMockup/VectoMockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs +++ b/VectoMockup/VectoMockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs @@ -72,7 +72,15 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories VectoRunData runData; if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) { - throw new NotImplementedException(); + runData = new VectoRunData + { + Exempted = true, + Report = Report, + Mission = new Mission() { MissionType = MissionType.ExemptedMission }, + VehicleData = CreateMockupVehicleData(vehicle, _segment, loading), + InputDataHash = InputDataProvider.XMLHash + }; + runData.VehicleData.InputData = vehicle; } else { diff --git a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs index 4f4997bdbc..3ec5dd44da 100644 --- a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs +++ b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupDeclarationSimulatorFactory.cs @@ -38,12 +38,16 @@ namespace TUGraz.VectoMockup.Simulation.SimulatorFactory protected override IVectoRun GetExemptedRun(VectoRunData data) { - //var addReportResult = PrepareReport(data); - //return new MockupRun(new VehicleContainer(ExecutionMode.Declaration, - // new ModalDataContainer(data, ReportWriter, addReportResult)) - // { RunData = data }); - - return base.GetExemptedRun(data); + if (data.Report != null) + { + data.Report.PrepareResult(data.Loading, data.Mission, data.EngineData?.FuelMode ?? 0, data); + } + return new MockupExemptedRun(new ExemptedRunContainer(data.ExecutionMode) { RunData = data }, modData => { + if (data.Report != null) + { + data.Report.AddResult(data.Loading, data.Mission, data.EngineData?.FuelMode ?? 0, data, modData); + } + }); } protected override IVectoRun GetNonExemptedRun(VectoRunData data, int current, VectoRunData d, ref bool warning1Hz) diff --git a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs index 3cc29b8bf3..40f5aeccd5 100644 --- a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs +++ b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs @@ -23,7 +23,7 @@ namespace TUGraz.VectoMockup.Simulation.SimulatorFactory inputDataReader, validate) { _currentStageDeclarationReport = - new XMLDeclarationMockupPrimaryReport(_currentStageOutputDataWriter, mrfFactory, cifFactory, true); + new XMLDeclarationMockupPrimaryReport(_currentStageOutputDataWriter, mrfFactory, cifFactory, originalStageInputData.StageInputData.ExemptedVehicle,true); } #region Overrides of InterimAfterPrimaryFactoryCreator -- GitLab