From 5dc5eb1ade81b1c0245ad77bbc95652cd5f5f42a Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <quaritsch@ivt.tugraz.at> Date: Wed, 7 Dec 2022 16:28:20 +0100 Subject: [PATCH] using IResultEntry interface --- .../VectoCore/OutputData/DeclarationReport.cs | 30 ++++ .../AbstractCustomerReport.cs | 12 +- .../CIFNinjectModule.cs | 13 +- .../CustomerInformationFile.cs | 57 +++++--- .../ResultWriter/IResultWriter.cs | 7 - .../ResultWriter/IResultsWriter.cs | 34 +++++ .../IXMLCustomerReport.cs | 9 +- .../XMLCustomerReport.cs | 8 +- .../XMLCustomerReportCompletedBus.cs | 2 +- .../AbstractXMLManufacturerReport.cs | 10 +- .../IXMLManufacturerReport.cs | 2 +- .../AbstractManufacturerReport.cs | 7 +- .../XMLManufacturerReportCompletedBus.cs | 4 +- .../XMLPrimaryBusVehicleReport.cs | 2 +- .../OutputData/XML/XMLDeclarationReport.cs | 15 +- .../VehicleTypeAndArchitectureStringHelper.cs | 129 ++++++++++++------ .../Reports/MockupCustomerReport.cs | 3 +- .../Reports/MockupManufacturerReport.cs | 3 +- 18 files changed, 248 insertions(+), 99 deletions(-) delete mode 100644 VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultWriter.cs create mode 100644 VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultsWriter.cs diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs index 98478bd345..9e37707518 100644 --- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs @@ -39,6 +39,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; namespace TUGraz.VectoCore.OutputData @@ -71,12 +72,35 @@ namespace TUGraz.VectoCore.OutputData public interface IResultEntry { + VectoRun.Status Status { get; } MissionType Mission { get; set; } LoadingType LoadingType { get; set; } int FuelMode { get; set; } IList<IFuelProperties> FuelData { get; set; } + + MeterPerSecond AverageSpeed { get; } + + MeterPerSecond AverageDrivingSpeed { get; } + MeterPerSecond MaxSpeed { get; } + MeterPerSecond MinSpeed { get; } + MeterPerSquareSecond MaxDeceleration { get; } + MeterPerSquareSecond MaxAcceleration { get; } + + PerSecond EngineSpeedDrivingMin { get; } + PerSecond EngineSpeedDrivingAvg { get;} + PerSecond EngineSpeedDrivingMax { get; } + double AverageGearboxEfficiency { get; } + + double AverageAxlegearEfficiency { get; } + Scalar FullLoadPercentage { get; } + Scalar GearshiftCount { get; } + Meter Distance { get; } + + IFuelConsumptionCorrection FuelConsumptionFinal(FuelType fuelType); + + Kilogram CO2Total { get; } Kilogram Payload { get; set; } Kilogram TotalVehicleMass { get; set; } CubicMeter CargoVolume { get; set; } @@ -84,7 +108,13 @@ namespace TUGraz.VectoCore.OutputData double? PassengerCount { get; set; } VehicleClass VehicleClass { get; set; } + double WeightingFactor { get; } + void SetResultData(VectoRunData runData, IModalDataContainer data, double weightingFactor); + + string Error { get; } + + string StackTrace { get; } } /// <summary> diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs index 4fdb8ea082..0ea4d01fea 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs @@ -8,7 +8,6 @@ using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9.ResultWriter; @@ -33,7 +32,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation protected XElement Vehicle { get; set; } - protected IResultWriter Results { get; set; } + protected IResultsWriter Results { get; set; } protected XElement InputDataIntegrity { get; set; } @@ -51,7 +50,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation #region Implementation of IXMLCustomerReport - public virtual void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) + public virtual void Initialize(VectoRunData modelData) { InitializeVehicleData(modelData.InputData); _ovc = modelData.VehicleData.OffVehicleCharging; @@ -102,11 +101,16 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation Vehicle, InputDataIntegrity, new XElement(Cif_0_9 + XMLNames.Report_ManufacturerRecord_Signature, resultSignature), - Results.GenerateResults(results), + GetResultsXML(), XMLHelper.GetApplicationInfo(Cif_0_9) }; } + protected XElement GetResultsXML() + { + return Results.GenerateResults(results); + } + #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs index a2146d021a..f4a852466e 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs @@ -403,19 +403,24 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation internal class CIFResultsNinjectModule : NinjectModule { + private VehicleTypeAndArchitectureStringHelperResults _namingHelper = + new VehicleTypeAndArchitectureStringHelperResults(); + public override void Load() { Bind<IResultWriterFactory>().ToFactory(() => new CombineArgumentsToNameInstanceProvider( new CombineArgumentsToNameInstanceProvider.MethodSettings() { - combineToNameDelegate = , - skipArguments = 6, - takeArguments = 6, + combineToNameDelegate = _namingHelper.CreateName, + skipArguments = 1, + takeArguments = 1, methods = new[] { typeof(IResultWriterFactory).GetMethod(nameof(IResultWriterFactory.GetCIFResultWriter)) } })); - Bind<IResultWriter>().To<ExemptedResultsWriter>(); + Bind<IResultsWriter>().To<ExemptedResultsWriter>().Named( + _namingHelper.GetName(VehicleCategoryHelper.Lorry, true)); + } } } 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 4421f56fcf..1670285a51 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 @@ -7,8 +7,8 @@ using System.Xml.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9.ResultWriter; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; @@ -198,16 +198,19 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation #region CompletedBus - public abstract class CustomerInformationFileCompletedBus : CustomerInformationFile + public abstract class CustomerInformationFileCompletedBus : CustomerInformationFile, IXMLCustomerReportCompletedBus { + private bool _allSuccess; + private int _resultCount; + protected XElement InputDataIntegrityPrimaryVehicle { get; set; } protected XElement ManufacturerReportIntegrityPrimaryVehicle { get; set; } - protected CustomerInformationFileCompletedBus(ICustomerInformationFileFactory cifFactory) : - base(cifFactory) { } + protected CustomerInformationFileCompletedBus(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : + base(cifFactory, resultWriterFactory) { } - public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) + public override void Initialize(VectoRunData modelData) { InitializeVehicleData(modelData.InputData); _ovc = modelData.VehicleData.OffVehicleCharging; @@ -216,7 +219,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation if (inputData == null) { throw new VectoException("CompletedBus CustomerInformationFile requires MultistepBusInputData"); } - Results = new XElement(Cif_0_9 + "Results"); + Results = _resultFactory.GetCIFResultWriter(modelData.VehicleData.VehicleCategory, + modelData.JobType, modelData.VehicleData.OffVehicleCharging, modelData.Exempted); InputDataIntegrity = new XElement(Cif_0_9 + XMLNames.Report_InputDataSignature, inputData.JobInputData.ConsolidateManufacturingStage.Signature == null ? XMLHelper.CreateDummySig(_di) @@ -236,17 +240,32 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation ManufacturerReportIntegrityPrimaryVehicle, InputDataIntegrity, new XElement(Cif_0_9 + XMLNames.Report_ManufacturerRecord_Signature, resultSignature), - Results, + GetResultsXML(), XMLHelper.GetApplicationInfo(Cif_0_9) }; } + + #region Implementation of IXMLCustomerReportCompletedBus + + public void WriteResult(IResultEntry genericResult, IResultEntry specificResult, IResult primaryResult) + { + _allSuccess &= genericResult.Status == VectoRun.Status.Success; + _allSuccess &= specificResult.Status == VectoRun.Status.Success; + _resultCount++; + //Results.Add( + // genericResult.Status == VectoRun.Status.Success && specificResult.Status == VectoRun.Status.Success + // ? GetSuccessResultEntry(genericResult, specificResult, primaryResult) + // : GetErrorResultEntry(genericResult, specificResult, primaryResult)); + } + + #endregion } public class Conventional_CompletedBusCIF : CustomerInformationFileCompletedBus { public override string OutputDataType => "Conventional_CompletedBusOutputType"; - public Conventional_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public Conventional_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -260,7 +279,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "HEV_CompletedBusOutputType"; - public HEV_Px_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public HEV_Px_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -274,7 +293,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "HEV_CompletedBusOutputType"; - public HEV_IHPC_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public HEV_IHPC_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -288,7 +307,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "HEV_CompletedBusOutputType"; - public HEV_S2_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public HEV_S2_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -302,7 +321,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "HEV_CompletedBusOutputType"; - public HEV_S3_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public HEV_S3_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -316,7 +335,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "HEV_CompletedBusOutputType"; - public HEV_S4_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public HEV_S4_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -330,7 +349,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "HEV_CompletedBusOutputType"; - public HEV_IEPC_S_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public HEV_IEPC_S_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -344,7 +363,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "PEV_CompletedBusOutputType"; - public PEV_E2_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public PEV_E2_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -358,7 +377,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "PEV_CompletedBusOutputType"; - public PEV_E3_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public PEV_E3_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -372,7 +391,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "PEV_CompletedBusOutputType"; - public PEV_E4_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public PEV_E4_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -386,7 +405,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public override string OutputDataType => "PEV_CompletedBusOutputType"; - public PEV_IEPC_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + public PEV_IEPC_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } @@ -399,7 +418,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class Exempted_CompletedBusCIF : CustomerInformationFileCompletedBus { - public Exempted_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } + public Exempted_CompletedBusCIF(ICustomerInformationFileFactory cifFactory, IResultWriterFactory resultWriterFactory) : base(cifFactory, resultWriterFactory) { } #region Overrides of AbstractCustomerReport diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultWriter.cs deleted file mode 100644 index 0c297fb6b6..0000000000 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultWriter.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9.ResultWriter -{ - public class IResultWriter - { - - } -} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultsWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultsWriter.cs new file mode 100644 index 0000000000..e36d9d7ef7 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ResultWriter/IResultsWriter.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; + +namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9.ResultWriter +{ + public interface IResultWriterFactory + { + IResultsWriter GetCIFResultWriter(VehicleCategory vehicleCategory, VectoSimulationJobType jobType, bool ovc, + bool exempted); + } + + public interface IResultsWriter + { + XElement GenerateResults(List<IResultEntry> results); + } + + public class ExemptedResultsWriter : IResultsWriter + { + protected XNamespace XmlNS => XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.9"); + + #region Implementation of IResultsWriter + + public XElement GenerateResults(List<IResultEntry> results) + { + return new XElement(XmlNS + "Results", + new XElement(XmlNS + "Status", "success"), + new XElement(XmlNS + "ExemptedVehicle")); + } + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/IXMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/IXMLCustomerReport.cs index b255e68761..48316e9377 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/IXMLCustomerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/IXMLCustomerReport.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; @@ -7,9 +8,15 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { public interface IXMLCustomerReport { - void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes); + void Initialize(VectoRunData modelData); XDocument Report { get; } void WriteResult(IResultEntry resultValue); void GenerateReport(XElement resultSignature); } + + public interface IXMLCustomerReportCompletedBus + { + void WriteResult(IResultEntry genericResult, + IResultEntry specificResult, IResult primaryResult); + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReport.cs index 5f032fc674..de2e6cb785 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReport.cs @@ -176,7 +176,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation - public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) + public virtual void WriteResult(IResultEntry resultEntry) { //foreach (var resultEntry in entry.ResultEntry) { _allSuccess &= resultEntry.Status == VectoRun.Status.Success; @@ -188,7 +188,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation Results.Add(resultEntry.Status == VectoRun.Status.Success ? GetSuccessResult(resultEntry) : GetErrorResult(resultEntry)); } - private XElement GetErrorResult(XMLDeclarationReport.ResultEntry resultEntry) + private XElement GetErrorResult(IResultEntry resultEntry) { var content = new object[] { }; switch (resultEntry.Status) { @@ -213,7 +213,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation content); } - private XElement GetSuccessResult(XMLDeclarationReport.ResultEntry result) + private XElement GetSuccessResult(IResultEntry result) { return new XElement( tns + XMLNames.Report_Result_Result, @@ -308,7 +308,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation } public XDocument Report { get; } - public void WriteResult(XMLDeclarationReport.ResultEntry resultValue) + public void WriteResult(IResultEntry resultValue) { // MQ 2021-06-14 TODO: fill with meat } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs index b74e614058..fe1be78911 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs @@ -306,7 +306,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation Report = h.AddHash(); } - public override void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) + public override void WriteResult(IResultEntry resultEntry) { throw new NotSupportedException(); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs index c2a9c329f7..9997935a93 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs @@ -108,14 +108,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport } - public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) + public virtual void WriteResult(IResultEntry resultEntry) { _allSuccess &= resultEntry.Status == VectoRun.Status.Success; Results.Add( resultEntry.Status == VectoRun.Status.Success ? GetSuccessResult(resultEntry) : GetErrorResult(resultEntry)); } - protected virtual XElement GetErrorResult( XMLDeclarationReport.ResultEntry resultEntry) + protected virtual XElement GetErrorResult(IResultEntry resultEntry) { var content = new object[] {}; switch (resultEntry.Status) { @@ -149,7 +149,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport content); } - protected virtual XElement GetSuccessResult(XMLDeclarationReport.ResultEntry result) + protected virtual XElement GetSuccessResult(IResultEntry result) { return new XElement( tns + XMLNames.Report_Result_Result, @@ -167,7 +167,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport ); } - private XElement GetVehiclePerformance(XMLDeclarationReport.ResultEntry result) + private XElement GetVehiclePerformance(IResultEntry result) { return new XElement( tns + XMLNames.Report_ResultEntry_VehiclePerformance, @@ -212,7 +212,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport ); } - protected virtual XElement GetSimulationParameters(XMLDeclarationReport.ResultEntry result) + protected virtual XElement GetSimulationParameters(IResultEntry result) { return new XElement( tns + XMLNames.Report_ResultEntry_SimulationParameters, diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/IXMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/IXMLManufacturerReport.cs index f6507d5c7f..31f77a85b8 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/IXMLManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/IXMLManufacturerReport.cs @@ -9,7 +9,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport //void InitializeVehicleData(IDeclarationInputDataProvider inputData); void Initialize(VectoRunData modelData); XDocument Report { get; } - void WriteResult(XMLDeclarationReport.ResultEntry resultValue); + void WriteResult(IResultEntry resultValue); void GenerateReport(); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs index 9a6e487b85..6e9db8bad1 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs @@ -9,7 +9,6 @@ using System.Xml.Linq; using System.Xml.XPath; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; using TUGraz.VectoCore.Utils; @@ -52,9 +51,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Implementation of IXMLManufacturerReport - public abstract void InitializeVehicleData(IDeclarationInputDataProvider inputData); + protected abstract void InitializeVehicleData(IDeclarationInputDataProvider inputData); - public virtual void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) + public virtual void Initialize(VectoRunData modelData) { InitializeVehicleData(modelData.InputData); _ovc = modelData.VehicleData.OffVehicleCharging; @@ -68,7 +67,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. private List<XMLDeclarationReport.ResultEntry> results = new List<XMLDeclarationReport.ResultEntry>(); - public void WriteResult(XMLDeclarationReport.ResultEntry resultValue) + public void WriteResult(IResultEntry resultValue) { diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs index b0ec127657..f9fcdad04e 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs @@ -195,7 +195,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport ); } - protected override XElement GetSimulationParameters(XMLDeclarationReport.ResultEntry result) + protected override XElement GetSimulationParameters(IResultEntry result) { return new XElement( tns + "SimulationParametersCompletedVehicle", @@ -397,7 +397,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport #endregion - public override void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) + public override void WriteResult(IResultEntry resultEntry) { throw new NotSupportedException(); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs index 9222baa24b..5663b85f1a 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs @@ -594,7 +594,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement( tns + XMLNames.Report_Result_EnergyConsumption, new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/km"), - (result.FuelConsumptionFinal[fuel.FuelType].EnergyDemand / + (result.FuelConsumptionFinal(fuel.FuelType).EnergyDemand / result.Distance.ConvertToKiloMeter() / 1e6) .Value().ToMinSignificantDigits(5, 5))); retVal.Add(fcResult); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 20604bce05..5062105983 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -95,9 +95,14 @@ namespace TUGraz.VectoCore.OutputData.XML public Joule EnergyConsumptionTotal { get; private set; } - public Kilogram CO2Total { get; private set; } + public IFuelConsumptionCorrection FuelConsumptionFinal(FuelType fuelType) + { + return CorrectedFinalFuelConsumption[fuelType]; + } + + public Kilogram CO2Total { get; private set; } - public Dictionary<FuelType, IFuelConsumptionCorrection> FuelConsumptionFinal { get; private set; } + public Dictionary<FuelType, IFuelConsumptionCorrection> CorrectedFinalFuelConsumption { get; private set; } public Meter Distance { get; private set; } @@ -161,7 +166,7 @@ namespace TUGraz.VectoCore.OutputData.XML EngineSpeedDrivingMax = entriesDriving.Max(x => x.nEng); Distance = data.Distance; - FuelConsumptionFinal = data.CorrectedModalData.FuelCorrection; + CorrectedFinalFuelConsumption = data.CorrectedModalData.FuelCorrection; CO2Total = data.CorrectedModalData.CO2Total; EnergyConsumptionTotal = data.CorrectedModalData.EnergyConsumptionTotal; @@ -298,13 +303,13 @@ namespace TUGraz.VectoCore.OutputData.XML }); - public static IEnumerable<XElement> GetResults(ResultEntry result, XNamespace tns, bool fullOutput) + public static IEnumerable<XElement> GetResults(IResultEntry result, XNamespace tns, bool fullOutput) { //var fuel = result.FuelData; var retVal = new List<XElement>(); foreach (var fuel in result.FuelData) { - var entry = result.FuelConsumptionFinal[fuel.FuelType]; + var entry = result.FuelConsumptionFinal(fuel.FuelType); var fcResult = new XElement(tns + XMLNames.Report_Results_Fuel, new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, fuel.FuelType.ToXMLFormat())); fcResult.Add( new XElement( diff --git a/VectoCore/VectoCore/Utils/Ninject/VehicleTypeAndArchitectureStringHelper.cs b/VectoCore/VectoCore/Utils/Ninject/VehicleTypeAndArchitectureStringHelper.cs index a690fd9ea9..916d79e655 100644 --- a/VectoCore/VectoCore/Utils/Ninject/VehicleTypeAndArchitectureStringHelper.cs +++ b/VectoCore/VectoCore/Utils/Ninject/VehicleTypeAndArchitectureStringHelper.cs @@ -127,56 +127,28 @@ namespace TUGraz.VectoCore.Utils.Ninject #endregion public struct VehicleClassification { - private readonly VectoSimulationJobType _jobType; - - private VectoSimulationJobType JobType - { - get - { - if (Exempted) { - return VectoSimulationJobType.ConventionalVehicle; //ignored for exempted vehicles - } - return _jobType; - } - } + private const string _singlebus = "SingleBus"; + private readonly VectoSimulationJobType _jobType; + private readonly bool _exempted; private readonly ArchitectureID _archId; - - private ArchitectureID ArchId - { - get - { - if (Exempted) { - return ArchitectureID.UNKNOWN; //ignored for exempted vehicles - } - return _archId; - } - } - private readonly string _vehicleType; + private readonly bool _iepc; + private readonly bool _ihpc; + private readonly bool _isSingleBus; - private string VehicleType => _vehicleType; - - private readonly bool _exempted; + private VectoSimulationJobType JobType => Exempted ? VectoSimulationJobType.ConventionalVehicle : _jobType; //ignored for exempted vehicles - private bool Exempted - { - get - { - return _exempted; - } - } + private ArchitectureID ArchId => Exempted ? ArchitectureID.UNKNOWN : _archId;//ignored for exempted vehicles + + private string VehicleType => _vehicleType; - private readonly bool _iepc; + private bool Exempted => _exempted; private bool Iepc => _iepc; - private readonly bool _ihpc; - private bool Ihpc => _ihpc; - private readonly bool _isSingleBus; - private const string _singlebus = "SingleBus"; private bool IsSingleBus => _isSingleBus; public VehicleClassification(VectoSimulationJobType jobType, ArchitectureID archId, string vehicleType, bool exempted, bool iepc, bool ihpc, bool singleBus = false) @@ -258,6 +230,85 @@ namespace TUGraz.VectoCore.Utils.Ninject IsSingleBus ? "Single Bus" : ""); } + #endregion + } + + } + + public class VehicleTypeAndArchitectureStringHelperResults + { + public CombineArgumentsToNameInstanceProvider.CombineToName CreateName { get; } = arguments => { + if (arguments[0] is ResultsVehicleClassification classification) { + return GetName(classification); + } else { + throw new ArgumentException($"{nameof(arguments)}[0] must be of type {typeof(ResultsVehicleClassification)}"); + } + }; + + private static string GetName(ResultsVehicleClassification classification) + { + return classification.GetHashCode().ToString(); + } + + public string GetName(string vehicleCategory, VectoSimulationJobType jobType, bool ovc = false, + bool exempted = false) + { + return GetName(new ResultsVehicleClassification(vehicleCategory, jobType, ovc, exempted)); + } + + public string GetName(string vehicleType, bool exempted) + { + return GetName(vehicleType, VectoSimulationJobType.ConventionalVehicle, exempted: exempted); + } + + public struct ResultsVehicleClassification + { + private readonly string _vehicleCategory; + private readonly VectoSimulationJobType _jobType; + private readonly bool _ovc; + private readonly bool _exempted; + + public ResultsVehicleClassification(string vehicleCategory, VectoSimulationJobType jobType, bool ovc, bool exempted) + { + _vehicleCategory = vehicleCategory; + _jobType = jobType; + _ovc = ovc; + _exempted = exempted; + + } + + public bool Exempted => _exempted; + public VectoSimulationJobType JobType => Exempted ? VectoSimulationJobType.ConventionalVehicle : _jobType; + + public string VehicleCategory => _vehicleCategory; + public bool OVC => _ovc; + + #region Overrides of ValueType + + public override bool Equals(object obj) + { + return obj is ResultsVehicleClassification other && Equals(other); + } + + public bool Equals(ResultsVehicleClassification other) + { + return VehicleCategory == other.VehicleCategory + && JobType == other.JobType + && OVC == other.OVC + && Exempted == other.Exempted; + } + + public override int GetHashCode() + { + unchecked { + var hashCode = VehicleCategory != null ? VehicleCategory.GetHashCode() : 0; + hashCode = (hashCode * 397) ^ (int)JobType; + hashCode = (hashCode * 397) ^ OVC.GetHashCode(); + hashCode = (hashCode * 397) ^ Exempted.GetHashCode(); + return hashCode; + } + } + #endregion } } diff --git a/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs b/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs index f9829c3707..9b12db161f 100644 --- a/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs +++ b/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs @@ -3,6 +3,7 @@ using System.Xml.Linq; using System.Xml.XPath; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.XML; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9; @@ -48,7 +49,7 @@ namespace TUGraz.VectoMockup.Reports } } - public void WriteResult(XMLDeclarationReport.ResultEntry resultValue) + public void WriteResult(IResultEntry resultValue) { _originalCustomerReport.WriteResult(resultValue); } diff --git a/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs b/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs index 5e6c801918..5bd1b7db6f 100644 --- a/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs +++ b/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs @@ -5,6 +5,7 @@ using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.XML; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9; @@ -29,7 +30,7 @@ namespace TUGraz.VectoMockup.Reports Results = new XElement(Mrf + XMLNames.Report_Results); } - public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue) + public void WriteMockupResult(IResultEntry resultValue) { Results.Add(MockupResultReader.GetMRFMockupResult(_outputData, resultValue, Mrf + "Result", _modelData)); -- GitLab