From 2aa8bf433cd04e55f41133b94bbb07f88d696099 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 14 Apr 2020 18:23:30 +0200 Subject: [PATCH] started work on report for factor metod (completed bus) --- VECTO/MainModule.vb | 1 + VECTO3GUI/Helper/VehicleClassConverter.cs | 1 + .../InputData/DeclarationInputData.cs | 9 +- .../VectoCommon/Models}/VehicleClass.cs | 441 +++++++++++------- VectoCommon/VectoCommon/VectoCommon.csproj | 1 + ...ryVehicleBusResultsInputDataProviderV01.cs | 18 +- .../VectoCore/InputData/Impl/InputData.cs | 7 +- .../Models/Declaration/WeightingGroups.cs | 1 + .../Simulation/Impl/SimulatorFactory.cs | 18 +- .../VectoCore/OutputData/DeclarationReport.cs | 86 ++-- .../OutputData/XML/XMLCustomerReport.cs | 2 +- .../XML/XMLCustomerReportCompletedBus.cs | 19 + .../OutputData/XML/XMLDeclarationReport.cs | 104 ++--- .../XMLDeclarationReportCompletedVehicle.cs | 58 +++ .../XML/XMLDeclarationReportPrimaryVehicle.cs | 69 +++ .../XML/XMLManufacturerReportPrimaryBus.cs | 69 ++- .../OutputData/XML/XMLPrimaryVehicleReport.cs | 4 +- .../VectoCore/OutputData/XML/XMLVTPReport.cs | 15 + VectoCore/VectoCore/VectoCore.csproj | 4 +- .../Integration/XMLReportTest.cs | 4 +- 20 files changed, 611 insertions(+), 320 deletions(-) rename {VectoCore/VectoCore/Models/Declaration => VectoCommon/VectoCommon/Models}/VehicleClass.cs (54%) create mode 100644 VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs create mode 100644 VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs create mode 100644 VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs diff --git a/VECTO/MainModule.vb b/VECTO/MainModule.vb index fd355a7a26..f6a45397e3 100644 --- a/VECTO/MainModule.vb +++ b/VECTO/MainModule.vb @@ -14,6 +14,7 @@ Imports System.Reflection Imports System.Runtime.Remoting Imports TUGraz.VectoCommon Imports TUGraz.VectoCommon.InputData +Imports TUGraz.VectoCommon.Models Imports TUGraz.VectoCommon.OutputData Imports TUGraz.VectoCommon.Utils Imports TUGraz.VectoCore.InputData.Reader.DataObjectAdapter diff --git a/VECTO3GUI/Helper/VehicleClassConverter.cs b/VECTO3GUI/Helper/VehicleClassConverter.cs index b164b376b8..1911a04741 100644 --- a/VECTO3GUI/Helper/VehicleClassConverter.cs +++ b/VECTO3GUI/Helper/VehicleClassConverter.cs @@ -1,6 +1,7 @@ using System; using System.Globalization; using System.Windows.Data; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.Models.Declaration; namespace VECTO3GUI.Helper diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 67c68513b5..f8483fcb49 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -775,18 +775,21 @@ namespace TUGraz.VectoCommon.InputData { string ResultStatus { get; } - string VehicleGroup { get; } + VehicleClass VehicleGroup { get; } - string Mission { get; } + MissionType Mission { get; } ISimulationParameter SimulationParameter { get; } + + Dictionary<FuelType, JoulePerMeter> EnergyConsumption { get; } + } public interface ISimulationParameter { Kilogram TotalVehicleMass { get; } Kilogram Payload { get; } - int PassengerCount { get; } + double PassengerCount { get; } string FuelMode { get; } } diff --git a/VectoCore/VectoCore/Models/Declaration/VehicleClass.cs b/VectoCommon/VectoCommon/Models/VehicleClass.cs similarity index 54% rename from VectoCore/VectoCore/Models/Declaration/VehicleClass.cs rename to VectoCommon/VectoCommon/Models/VehicleClass.cs index 6249e4aa34..d8912836bc 100644 --- a/VectoCore/VectoCore/Models/Declaration/VehicleClass.cs +++ b/VectoCommon/VectoCommon/Models/VehicleClass.cs @@ -1,176 +1,267 @@ -/* -* This file is part of VECTO. -* -* Copyright © 2012-2019 European Union -* -* Developed by Graz University of Technology, -* Institute of Internal Combustion Engines and Thermodynamics, -* Institute of Technical Informatics -* -* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved -* by the European Commission - subsequent versions of the EUPL (the "Licence"); -* You may not use VECTO except in compliance with the Licence. -* You may obtain a copy of the Licence at: -* -* https://joinup.ec.europa.eu/community/eupl/og_page/eupl -* -* Unless required by applicable law or agreed to in writing, VECTO -* distributed under the Licence is distributed on an "AS IS" basis, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the Licence for the specific language governing permissions and -* limitations under the Licence. -* -* Authors: -* Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology -* Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology -* Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology -* Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology -* Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology -* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology -*/ - -using TUGraz.VectoCommon.Utils; - -namespace TUGraz.VectoCore.Models.Declaration -{ - public enum VehicleClass - { - Unknown, - ClassML2r, - ClassML2van, - ClassML3r, - ClassML3van, - ClassML4r, - ClassML4van, - Class1s, - Class0, - Class1, - Class2, - Class3, - Class4, - Class5, - Class6, - Class7, - Class8, - Class9, - Class10, - Class11, - Class12, - Class13, - Class14, - Class15, - Class16, - Class17, - ClassP31SD, - ClassP31DD, - ClassP32SD, - ClassP32DD, - ClassP33SD, - ClassP33DD, - ClassP34SD, - ClassP34DD, - ClassP35SD, - ClassP35DD, - ClassP36SD, - ClassP36DD, - ClassP37SD, - ClassP37DD, - ClassP38SD, - ClassP38DD, - ClassP39SD, - ClassP39DD, - ClassP40SD, - ClassP40DD, - ClassPB41, - ClassPB42, - ClassPB43, - ClassPB44, - ClassPB45, - - ClassCB31a, - ClassCB31b, - ClassCB31c, - ClassCB31d, - ClassCB31e, - ClassCB32a, - ClassCB32b, - ClassCB32c, - ClassCB32d, - ClassCB32e, - ClassCB32f, - - ClassCB33a, - ClassCB33b, - ClassCB33c, - ClassCB33d, - ClassCB33e, - ClassCB34a, - ClassCB34b, - ClassCB34c, - ClassCB34d, - ClassCB34e, - ClassCB34f, - - ClassCB35a, - ClassCB35b, - ClassCB35c, - ClassCB36a, - ClassCB36b, - ClassCB36c, - ClassCB36d, - ClassCB36e, - ClassCB36f, - - ClassCB37a, - ClassCB37b, - ClassCB37c, - ClassCB37d, - ClassCB37e, - ClassCB38a, - ClassCB38b, - ClassCB38c, - ClassCB38d, - ClassCB38e, - ClassCB38f, - - ClassCB39a, - ClassCB39b, - ClassCB39c, - ClassCB40a, - ClassCB40b, - ClassCB40c, - ClassCB40d, - ClassCB40e, - ClassCB40f, - } - - public static class VehicleClassHelper - { - private const string Prefix = "Class"; - - public static VehicleClass Parse(string text) - { - return (Prefix + text).ParseEnum<VehicleClass>(); - } - - public static string GetClassNumber(this VehicleClass hdvClass) - { - return hdvClass == VehicleClass.Unknown ? "-" : hdvClass.ToString().Substring(Prefix.Length); - } - - public static bool IsMediumLorry(this VehicleClass vehicleClass) - { - switch (vehicleClass) { - case VehicleClass.ClassML2r: - case VehicleClass.ClassML2van: - case VehicleClass.ClassML3r: - case VehicleClass.ClassML3van: - case VehicleClass.ClassML4r: - case VehicleClass.ClassML4van: - return true; - default: - return false; - } - } - } +/* +* This file is part of VECTO. +* +* Copyright © 2012-2019 European Union +* +* Developed by Graz University of Technology, +* Institute of Internal Combustion Engines and Thermodynamics, +* Institute of Technical Informatics +* +* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved +* by the European Commission - subsequent versions of the EUPL (the "Licence"); +* You may not use VECTO except in compliance with the Licence. +* You may obtain a copy of the Licence at: +* +* https://joinup.ec.europa.eu/community/eupl/og_page/eupl +* +* Unless required by applicable law or agreed to in writing, VECTO +* distributed under the Licence is distributed on an "AS IS" basis, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the Licence for the specific language governing permissions and +* limitations under the Licence. +* +* Authors: +* Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology +* Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology +* Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology +* Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology +* Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology +* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology +*/ + +using TUGraz.VectoCommon.Utils; + +namespace TUGraz.VectoCommon.Models +{ + public enum VehicleClass + { + Unknown, + ClassML2r, + ClassML2van, + ClassML3r, + ClassML3van, + ClassML4r, + ClassML4van, + Class1s, + Class0, + Class1, + Class2, + Class3, + Class4, + Class5, + Class6, + Class7, + Class8, + Class9, + Class10, + Class11, + Class12, + Class13, + Class14, + Class15, + Class16, + Class17, + ClassP31SD, + ClassP31DD, + ClassP32SD, + ClassP32DD, + ClassP33SD, + ClassP33DD, + ClassP34SD, + ClassP34DD, + ClassP35SD, + ClassP35DD, + ClassP36SD, + ClassP36DD, + ClassP37SD, + ClassP37DD, + ClassP38SD, + ClassP38DD, + ClassP39SD, + ClassP39DD, + ClassP40SD, + ClassP40DD, + ClassPB41, + ClassPB42, + ClassPB43, + ClassPB44, + ClassPB45, + + ClassCB31a, + ClassCB31b, + ClassCB31c, + ClassCB31d, + ClassCB31e, + ClassCB32a, + ClassCB32b, + ClassCB32c, + ClassCB32d, + ClassCB32e, + ClassCB32f, + + ClassCB33a, + ClassCB33b, + ClassCB33c, + ClassCB33d, + ClassCB33e, + ClassCB34a, + ClassCB34b, + ClassCB34c, + ClassCB34d, + ClassCB34e, + ClassCB34f, + + ClassCB35a, + ClassCB35b, + ClassCB35c, + ClassCB36a, + ClassCB36b, + ClassCB36c, + ClassCB36d, + ClassCB36e, + ClassCB36f, + + ClassCB37a, + ClassCB37b, + ClassCB37c, + ClassCB37d, + ClassCB37e, + ClassCB38a, + ClassCB38b, + ClassCB38c, + ClassCB38d, + ClassCB38e, + ClassCB38f, + + ClassCB39a, + ClassCB39b, + ClassCB39c, + ClassCB40a, + ClassCB40b, + ClassCB40c, + ClassCB40d, + ClassCB40e, + ClassCB40f, + } + + public static class VehicleClassHelper + { + private const string Prefix = "Class"; + + public static VehicleClass Parse(string text) + { + return (Prefix + text).ParseEnum<VehicleClass>(); + } + + public static string GetClassNumber(this VehicleClass hdvClass) + { + return hdvClass == VehicleClass.Unknown ? "-" : hdvClass.ToString().Substring(Prefix.Length); + } + + public static bool IsMediumLorry(this VehicleClass vehicleClass) + { + switch (vehicleClass) { + case VehicleClass.ClassML2r: + case VehicleClass.ClassML2van: + case VehicleClass.ClassML3r: + case VehicleClass.ClassML3van: + case VehicleClass.ClassML4r: + case VehicleClass.ClassML4van: + return true; + default: + return false; + } + } + + public static bool IsPrimaryBus(this VehicleClass vehicleClass) + { + switch (vehicleClass) { + case VehicleClass.ClassP31SD: + case VehicleClass.ClassP31DD: + case VehicleClass.ClassP32SD: + case VehicleClass.ClassP32DD: + case VehicleClass.ClassP33SD: + case VehicleClass.ClassP33DD: + case VehicleClass.ClassP34SD: + case VehicleClass.ClassP34DD: + case VehicleClass.ClassP35SD: + case VehicleClass.ClassP35DD: + case VehicleClass.ClassP36SD: + case VehicleClass.ClassP36DD: + case VehicleClass.ClassP37SD: + case VehicleClass.ClassP37DD: + case VehicleClass.ClassP38SD: + case VehicleClass.ClassP38DD: + case VehicleClass.ClassP39SD: + case VehicleClass.ClassP39DD: + case VehicleClass.ClassP40SD: + case VehicleClass.ClassP40DD: + case VehicleClass.ClassPB41: + case VehicleClass.ClassPB42: + case VehicleClass.ClassPB43: + case VehicleClass.ClassPB44: + case VehicleClass.ClassPB45: return true; + default: return false; + + } + } + + public static bool IsCompletedBus(this VehicleClass vehicleClass) + { + switch (vehicleClass) { + case VehicleClass.ClassCB31a: + case VehicleClass.ClassCB31b: + case VehicleClass.ClassCB31c: + case VehicleClass.ClassCB31d: + case VehicleClass.ClassCB31e: + case VehicleClass.ClassCB32a: + case VehicleClass.ClassCB32b: + case VehicleClass.ClassCB32c: + case VehicleClass.ClassCB32d: + case VehicleClass.ClassCB32e: + case VehicleClass.ClassCB32f: + case VehicleClass.ClassCB33a: + case VehicleClass.ClassCB33b: + case VehicleClass.ClassCB33c: + case VehicleClass.ClassCB33d: + case VehicleClass.ClassCB33e: + case VehicleClass.ClassCB34a: + case VehicleClass.ClassCB34b: + case VehicleClass.ClassCB34c: + case VehicleClass.ClassCB34d: + case VehicleClass.ClassCB34e: + case VehicleClass.ClassCB34f: + case VehicleClass.ClassCB35a: + case VehicleClass.ClassCB35b: + case VehicleClass.ClassCB35c: + case VehicleClass.ClassCB36a: + case VehicleClass.ClassCB36b: + case VehicleClass.ClassCB36c: + case VehicleClass.ClassCB36d: + case VehicleClass.ClassCB36e: + case VehicleClass.ClassCB36f: + case VehicleClass.ClassCB37a: + case VehicleClass.ClassCB37b: + case VehicleClass.ClassCB37c: + case VehicleClass.ClassCB37d: + case VehicleClass.ClassCB37e: + case VehicleClass.ClassCB38a: + case VehicleClass.ClassCB38b: + case VehicleClass.ClassCB38c: + case VehicleClass.ClassCB38d: + case VehicleClass.ClassCB38e: + case VehicleClass.ClassCB38f: + case VehicleClass.ClassCB39a: + case VehicleClass.ClassCB39b: + case VehicleClass.ClassCB39c: + case VehicleClass.ClassCB40a: + case VehicleClass.ClassCB40b: + case VehicleClass.ClassCB40c: + case VehicleClass.ClassCB40d: + case VehicleClass.ClassCB40e: + case VehicleClass.ClassCB40f: return true; + default: return false; + } + } + } } \ No newline at end of file diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj index b562b4b244..e91e7e53c7 100644 --- a/VectoCommon/VectoCommon/VectoCommon.csproj +++ b/VectoCommon/VectoCommon/VectoCommon.csproj @@ -112,6 +112,7 @@ <Compile Include="Models\RetarderType.cs" /> <Compile Include="Models\SimulationType.cs" /> <Compile Include="Models\VehicleCategory.cs" /> + <Compile Include="Models\VehicleClass.cs" /> <Compile Include="Models\VehicleCode.cs" /> <Compile Include="Models\WHRType.cs" /> <Compile Include="OutputData\IOutputFileWriter.cs" /> diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs index 39f4078eb1..867b590ef4 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs @@ -7,11 +7,13 @@ using System.Xml; using System.Xml.Linq; using Castle.Components.DictionaryAdapter.Xml; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Common; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using TUGraz.VectoCore.InputData.Impl; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider @@ -60,15 +62,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { var resultStatus = GetAttribute(xmlNode, XMLNames.Result_Status); var vehicleGroup = GetString(XMLNames.Report_Vehicle_VehicleGroup, xmlNode); - var mission = GetString(XMLNames.Report_Result_Mission, xmlNode); + var mission = GetString(XMLNames.Report_Result_Mission, xmlNode).ParseEnum<MissionType>(); var simulationNode = GetNode(XMLNames.Report_ResultEntry_SimulationParameters, xmlNode); var simulationParams = GetSimulationParameter(simulationNode); + var energyConsumption = GetNodes(XMLNames.Report_Results_Fuel, xmlNode) + .Cast<XmlNode>().Select(x => new KeyValuePair<FuelType, JoulePerMeter>( + GetAttribute(x, XMLNames.Report_Results_Fuel_Type_Attr).ParseEnum<FuelType>(), + x.SelectSingleNode( + string.Format(".//*[local-name()='{0}' and @unit='MJ/km']", XMLNames.Report_Result_EnergyConsumption))?.InnerText + .ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>())).ToDictionary(x => x.Key, x => x.Value); + return new Result { ResultStatus = resultStatus, Mission = mission, - VehicleGroup = vehicleGroup, - SimulationParameter = simulationParams + VehicleGroup = VehicleClassHelper.Parse(vehicleGroup), + SimulationParameter = simulationParams, + EnergyConsumption = energyConsumption }; } @@ -79,7 +89,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { TotalVehicleMass = GetString(XMLNames.Report_ResultEntry_TotalVehicleMass, xmlNode).ToDouble().SI<Kilogram>(), Payload = GetString(XMLNames.Report_Result_Payload, xmlNode).ToDouble().SI<Kilogram>(), - PassengerCount = GetString(XMLNames.Bus_PassengerCount, xmlNode).ToInt(), + PassengerCount = GetString(XMLNames.Bus_PassengerCount, xmlNode).ToDouble(), FuelMode = GetString(XMLNames.Report_Result_FuelMode, xmlNode) }; } diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index f2562c63d0..ae876007a7 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -215,16 +215,17 @@ namespace TUGraz.VectoCore.InputData.Impl public class Result : IResult { public string ResultStatus { get; internal set; } - public string VehicleGroup { get; internal set; } - public string Mission { get; internal set; } + public VehicleClass VehicleGroup { get; internal set; } + public MissionType Mission { get; internal set; } public ISimulationParameter SimulationParameter { get; internal set; } + public Dictionary<FuelType, JoulePerMeter> EnergyConsumption { get; set; } } public class SimulationParameter : ISimulationParameter { public Kilogram TotalVehicleMass { get; internal set; } public Kilogram Payload { get; internal set; } - public int PassengerCount { get; internal set; } + public double PassengerCount { get; internal set; } public string FuelMode { get; internal set; } } diff --git a/VectoCore/VectoCore/Models/Declaration/WeightingGroups.cs b/VectoCore/VectoCore/Models/Declaration/WeightingGroups.cs index 302da1d4cc..9d77b385b3 100644 --- a/VectoCore/VectoCore/Models/Declaration/WeightingGroups.cs +++ b/VectoCore/VectoCore/Models/Declaration/WeightingGroups.cs @@ -33,6 +33,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Linq; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Utils; diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index dfdb6ccfc2..5232565aff 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -59,6 +59,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl private readonly ExecutionMode _mode; private bool _engineOnlyMode; + public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer) : this(mode, dataProvider, writer, null, null, true) + { + + } + public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, IDeclarationReport declarationReport = null, IVTPReport vtpReport = null, bool validate = true) { @@ -99,25 +104,28 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl if (dataProvider is ISingleBusInputDataProvider) { var singleBus = dataProvider as ISingleBusInputDataProvider; - var report = declarationReport ?? new XMLDeclarationReport(ModWriter, false); + var report = declarationReport ?? new XMLDeclarationReport(ModWriter); DataReader = new DeclarationModeSingleBusVectoRunDataFactory(singleBus, report); return; } if (dataProvider is IDeclarationInputDataProvider) { var declDataProvider = dataProvider as IDeclarationInputDataProvider; - var report = declarationReport ?? new XMLDeclarationReport(ModWriter, declDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle); if (declDataProvider.JobInputData.Vehicle.VehicleCategory.IsTruck()) { + var report = declarationReport ?? new XMLDeclarationReport(ModWriter); DataReader = new DeclarationModeTruckVectoRunDataFactory(declDataProvider, report); return; } switch (declDataProvider.JobInputData.Vehicle.VehicleCategory) { case VehicleCategory.HeavyBusCompletedVehicle: - DataReader = new DeclarationModeCompletedBusVectoRunDataFactory(declDataProvider, report); - report.PrimaryResults = declDataProvider.PrimaryVehicleData; + var reportCompleted = declarationReport ?? new XMLDeclarationReportCompletedVehicle(ModWriter, declDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle) { + PrimaryResults = declDataProvider.PrimaryVehicleData, + }; + DataReader = new DeclarationModeCompletedBusVectoRunDataFactory(declDataProvider, reportCompleted); return; case VehicleCategory.HeavyBusPrimaryVehicle: - DataReader = new DeclarationModePrimaryBusVectoRunDataFactory(declDataProvider, report); + var reportPrimary = declarationReport ?? new XMLDeclarationReportPrimaryVehicle(ModWriter, declDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle); + DataReader = new DeclarationModePrimaryBusVectoRunDataFactory(declDataProvider, reportPrimary); return; } } diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs index add3078325..955c751c5e 100644 --- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs @@ -67,7 +67,6 @@ namespace TUGraz.VectoCore.OutputData void AddResult( LoadingType loadingType, Mission mission, int fuelMode, VectoRunData runData, IModalDataContainer modData); - IPrimaryVehicleInformationInputDataProvider PrimaryResults { get; set; } } public interface IResultEntry @@ -135,29 +134,6 @@ namespace TUGraz.VectoCore.OutputData [MethodImpl(MethodImplOptions.Synchronized)] public void PrepareResult(LoadingType loading, Mission mission, int fuelMode, VectoRunData runData) { - //if (!Missions.ContainsKey(fuelMode)) { - // Missions[fuelMode] = new Dictionary<MissionType, ResultContainer<T>>(); - //} - //var missions = Missions[fuelMode]; - - //var missionType = mission.MissionType; - //if (!missions.ContainsKey(missionType)) { - // missions[missionType] = new ResultContainer<T>() { - // Mission = missionType, - // ResultEntry = new Dictionary<LoadingType, T>(), - // }; - //} - //if (missionType != MissionType.ExemptedMission) { - // var entry = new T(); - // entry.FuelData = runData.EngineData.Fuels.Select(x => x.FuelData).ToList(); - // entry.Payload = runData.VehicleData.Loading; - // entry.TotalVehicleWeight = runData.VehicleData.TotalVehicleMass; - // entry.CargoVolume = runData.VehicleData.CargoVolume; - // // subtract driver! - // entry.PassengerCount = runData.BusAuxiliaries?.SSMInputs.NumberOfPassengers ?? 0 - 1; - - // missions[mission.MissionType].ResultEntry[loading] = entry; - //} _resultCount++; } @@ -168,8 +144,6 @@ namespace TUGraz.VectoCore.OutputData _resultCount--; if (_resultCount == 0) { DoWriteReport(); - - //Flc = null; } } @@ -177,32 +151,20 @@ namespace TUGraz.VectoCore.OutputData LoadingType loadingType, Mission mission, int fuelMode, VectoRunData runData, IModalDataContainer modData) { - //if (!Missions.ContainsKey(fuelMode)) { - // throw new VectoException("Unknown fuel mode {0} for generating declaration report", fuelMode); - //} - //if (!Missions[fuelMode].ContainsKey(mission.MissionType)) { - // throw new VectoException("Unknown mission type {0} for generating declaration report", mission.MissionType); - //} - //if (mission.MissionType != MissionType.ExemptedMission && !Missions[fuelMode][mission.MissionType].ResultEntry.ContainsKey(loadingType)) { - // throw new VectoException("Unknown loading type {0} for mission {1}", loadingType, mission.MissionType); - //} - - //if (mission.MissionType != MissionType.ExemptedMission) { - // DoAddResult(Missions[fuelMode][mission.MissionType].ResultEntry[loadingType], runData, modData); - //} - if (mission.MissionType != MissionType.ExemptedMission) { - var entry = new T(); - entry.Mission = mission.MissionType; - entry.LoadingType = loadingType; - entry.FuelMode = fuelMode; - entry.FuelData = runData.EngineData.Fuels.Select(x => x.FuelData).ToList(); - entry.Payload = runData.VehicleData.Loading; - entry.TotalVehicleWeight = runData.VehicleData.TotalVehicleMass; - entry.CargoVolume = runData.VehicleData.CargoVolume; - entry.VehicleClass = runData.VehicleData.VehicleClass; - - entry.PassengerCount = runData.VehicleData.PassengerCount; + var entry = new T { + Mission = mission.MissionType, + LoadingType = loadingType, + FuelMode = fuelMode, + FuelData = runData.EngineData.Fuels.Select(x => x.FuelData).ToList(), + Payload = runData.VehicleData.Loading, + TotalVehicleWeight = runData.VehicleData.TotalVehicleMass, + CargoVolume = runData.VehicleData.CargoVolume, + VehicleClass = runData.Mission?.BusParameter?.BusGroup ?? runData.VehicleData.VehicleClass, + //runData.VehicleData.VehicleClass, + PassengerCount = runData.VehicleData.PassengerCount + }; + Results.Add(entry); DoStoreResult(entry, runData, modData); } @@ -210,9 +172,7 @@ namespace TUGraz.VectoCore.OutputData WriteResults(); } - public IPrimaryVehicleInformationInputDataProvider PrimaryResults { get; set; } - - protected IEnumerable<T> OrderedResults + protected virtual IEnumerable<T> OrderedResults { get { return Results.OrderBy(x => x.VehicleClass).ThenBy(x => x.FuelMode).ThenBy(x => x.Mission) @@ -230,8 +190,24 @@ namespace TUGraz.VectoCore.OutputData protected abstract void DoStoreResult(T entry, VectoRunData runData, IModalDataContainer modData); - protected internal abstract void DoWriteReport(); + protected internal virtual void DoWriteReport() + { + foreach (var result in OrderedResults) { + WriteResult(result); + } + + GenerateReports(); + + if (Writer != null) { + OutputReports(); + } + } + + protected abstract void OutputReports(); + + protected abstract void GenerateReports(); + protected abstract void WriteResult(T result); public abstract void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes); } diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs index 585a562d61..d6905a4914 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs @@ -171,7 +171,7 @@ namespace TUGraz.VectoCore.OutputData.XML ); } - public void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) + public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) { //foreach (var resultEntry in entry.ResultEntry) { _allSuccess &= resultEntry.Status == VectoRun.Status.Success; diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs new file mode 100644 index 0000000000..8a1857d5c7 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs @@ -0,0 +1,19 @@ +using System; +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.OutputData.XML { + public class XMLCustomerReportCompletedBus : XMLCustomerReport + { + internal void WriteResult(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult) + { + foreach (var entry in primaryResult.EnergyConsumption) { + // TODO! + } + } + + public override void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) + { + throw new NotSupportedException(); + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index c13e1a3fa9..f92b0737aa 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -34,10 +34,10 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; +using System.Xml; using System.Xml.Linq; using System.Xml.XPath; using TUGraz.VectoCommon.BusAuxiliaries; -using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; @@ -49,23 +49,16 @@ namespace TUGraz.VectoCore.OutputData.XML { public class XMLDeclarationReport : DeclarationReport<XMLDeclarationReport.ResultEntry> { - private IXMLManufacturerReport _manufacturerReport; - private XMLCustomerReport _customerReport; - private XMLMonitoringReport _monitoringReport; - - private XMLPrimaryVehicleReport _primaryReport; + protected IXMLManufacturerReport ManufacturerRpt; + protected XMLCustomerReport CustomerRpt; + private IDictionary<Tuple<MissionType, LoadingType>, double> _weightingFactors; - public XMLDeclarationReport(IReportWriter writer = null, bool writePIF = false) : base(writer) + public XMLDeclarationReport(IReportWriter writer) : base(writer) { - //_manufacturerReport = new XMLManufacturerReport(); - //_customerReport = new XMLCustomerReport(); - //_monitoringReport = new XMLMonitoringReport(_manufacturerReport); - //if (writePIF) { - // _primaryReport = new XMLPrimaryVehicleReport(); - //} + } public class ResultEntry : IResultEntry @@ -247,24 +240,19 @@ namespace TUGraz.VectoCore.OutputData.XML - public XDocument FullReport - { - get { return _manufacturerReport.Report; } - } - - public XDocument CustomerReport + public virtual XDocument FullReport { - get { return _customerReport.Report; } + get { return ManufacturerRpt.Report; } } - public XDocument MonitoringReport + public virtual XDocument CustomerReport { - get { return _monitoringReport.Report; } + get { return CustomerRpt.Report; } } - public XDocument PrimaryVehicleReport + public virtual XDocument PrimaryVehicleReport { - get { return _primaryReport?.Report; } + get { return null; } } @@ -274,39 +262,28 @@ namespace TUGraz.VectoCore.OutputData.XML entry.SetResultData(runData, modData, factor); } - protected internal override void DoWriteReport() + protected override void WriteResult(ResultEntry result) { - foreach (var result in OrderedResults) { - _manufacturerReport.WriteResult(result); - _customerReport.WriteResult(result); - if (_primaryReport != null) { - _primaryReport.WriteResult(result); - } - } + ManufacturerRpt.WriteResult(result); + CustomerRpt.WriteResult(result); + } - //foreach (var fuelMode in Missions.OrderBy(f => f.Key)) { - // foreach (var result in fuelMode.Value.OrderBy(m => m.Key)) { - // _manufacturerReport.WriteResult(result.Value); - // _customerReport.WriteResult(result.Value); - // } - //} - - _manufacturerReport.GenerateReport(); - var fullReportHash = GetSignature(_manufacturerReport.Report); - _customerReport.GenerateReport(fullReportHash); - _primaryReport?.GenerateReport(fullReportHash); - - if (Writer != null) { - Writer.WriteReport(ReportType.DeclarationReportCustomerXML, _customerReport.Report); - Writer.WriteReport(ReportType.DeclarationReportManufacturerXML, _manufacturerReport.Report); - //Writer.WriteReport(ReportType.DeclarationReportMonitoringXML, _monitoringReport.Report); - if (_primaryReport != null) { - Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, _primaryReport.Report); - } - } + protected override void GenerateReports() + { + ManufacturerRpt.GenerateReport(); + var fullReportHash = GetSignature(ManufacturerRpt.Report); + CustomerRpt.GenerateReport(fullReportHash); + } + + + protected override void OutputReports() + { + Writer.WriteReport(ReportType.DeclarationReportCustomerXML, CustomerRpt.Report); + Writer.WriteReport(ReportType.DeclarationReportManufacturerXML, ManufacturerRpt.Report); } - private XElement GetSignature(XDocument report) + + protected XElement GetSignature(XDocument report) { return report.XPathSelectElement("/*[local-name()='VectoOutput']/*[local-name()='Signature']/*"); } @@ -325,27 +302,18 @@ namespace TUGraz.VectoCore.OutputData.XML InstantiateReports(modelData); - _manufacturerReport.Initialize(modelData, fuelModes); - _customerReport.Initialize(modelData, fuelModes); - _primaryReport?.Initialize(modelData, fuelModes); - _monitoringReport.Initialize(modelData); + ManufacturerRpt.Initialize(modelData, fuelModes); + CustomerRpt.Initialize(modelData, fuelModes); } - private void InstantiateReports(VectoRunData modelData) + protected virtual void InstantiateReports(VectoRunData modelData) { if (modelData.Exempted) { - _manufacturerReport = new XMLManufacturerReportExemptedTruck(); + ManufacturerRpt = new XMLManufacturerReportExemptedTruck(); } else { - if (modelData.VehicleData.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle) { - _manufacturerReport = new XMLManufacturerReportPrimaryBus(); - _primaryReport = new XMLPrimaryVehicleReport(); - } else { - _manufacturerReport = new XMLManufacturerReportTruck(); - } + ManufacturerRpt = new XMLManufacturerReportTruck(); } - _customerReport = new XMLCustomerReport(); - _monitoringReport = new XMLMonitoringReport(_manufacturerReport); - + CustomerRpt = new XMLCustomerReport(); } private static IDictionary<Tuple<MissionType, LoadingType>, double> ZeroWeighting diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs new file mode 100644 index 0000000000..aae61d59a9 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs @@ -0,0 +1,58 @@ +using System; +using System.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; + +namespace TUGraz.VectoCore.OutputData.XML { + public class XMLDeclarationReportCompletedVehicle : XMLDeclarationReport + { + public XMLDeclarationReportCompletedVehicle(IReportWriter writer, bool writePIF = false) : base(writer) { } + + public IPrimaryVehicleInformationInputDataProvider PrimaryResults { get; set; } + + #region Overrides of XMLDeclarationReport + + protected override void InstantiateReports(VectoRunData modelData) + { + ManufacturerRpt = new XMLManufacturerReportCompletedBus(); + CustomerRpt = new XMLCustomerReportCompletedBus(); + } + + #endregion + + protected internal override void DoWriteReport() + { + foreach (var specificResult in Results.Where(x => VehicleClassHelper.IsCompletedBus(x.VehicleClass)).OrderBy(x => x.VehicleClass) + .ThenBy(x => x.FuelMode).ThenBy(x => x.Mission)) { + + var genericResult = Results.First(x => x.VehicleClass.IsPrimaryBus() && x.FuelMode == specificResult.FuelMode && + x.Mission == specificResult.Mission && x.LoadingType == specificResult.LoadingType); + var primaryResult = SelectPrimaryResult(genericResult); + + (ManufacturerRpt as XMLManufacturerReportCompletedBus).WriteResult(genericResult, specificResult, primaryResult); + (CustomerRpt as XMLCustomerReportCompletedBus).WriteResult(genericResult, specificResult, primaryResult); + } + + GenerateReports(); + + if (Writer != null) { + OutputReports(); + } + } + + private IResult SelectPrimaryResult(ResultEntry genericResult) + { + var isDualModeEngine = Results.Select(x => x.FuelMode).Distinct().Count() > 1; + var fuelMode = "single fuel mode"; + if (isDualModeEngine && genericResult.FuelMode > 0) { + fuelMode = "dual fuel mode"; + } + return PrimaryResults.ResultsInputData.Results.First( + x => x.VehicleGroup == genericResult.VehicleClass && + (x.SimulationParameter.Payload - genericResult.Payload).IsEqual(0, 1) && x.Mission == genericResult.Mission && + x.SimulationParameter.FuelMode.Equals(fuelMode, StringComparison.InvariantCultureIgnoreCase)); + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs new file mode 100644 index 0000000000..916452a050 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Xml.Linq; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; + +namespace TUGraz.VectoCore.OutputData.XML { + public class XMLDeclarationReportPrimaryVehicle : XMLDeclarationReport + { + private XMLPrimaryVehicleReport _primaryReport; + + + public XMLDeclarationReportPrimaryVehicle(IReportWriter writer, bool writePIF = false) : base(writer) + { + _primaryReport = new XMLPrimaryVehicleReport(); + } + + public override XDocument CustomerReport + { + get { return null; } + } + + public override XDocument PrimaryVehicleReport + { + get { return _primaryReport?.Report; } + } + + + #region Overrides of XMLDeclarationReport + + protected override void InstantiateReports(VectoRunData modelData) + { + ManufacturerRpt = new XMLManufacturerReportPrimaryBus(); + CustomerRpt = new XMLCustomerReport(); + } + + public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) + { + base.InitializeReport(modelData, fuelModes); + _primaryReport.Initialize(modelData,fuelModes); + } + + + + protected override void WriteResult(ResultEntry result) + { + base.WriteResult(result); + _primaryReport.WriteResult(result); + } + + protected override void GenerateReports() + { + ManufacturerRpt.GenerateReport(); + var fullReportHash = GetSignature(ManufacturerRpt.Report); + CustomerRpt.GenerateReport(fullReportHash); + _primaryReport.GenerateReport(fullReportHash); + } + + + + protected override void OutputReports() + { + base.OutputReports(); + Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, _primaryReport.Report); + } + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportPrimaryBus.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportPrimaryBus.cs index e3562a4f66..679a0c0f21 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportPrimaryBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportPrimaryBus.cs @@ -1,5 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Models.Declaration; @@ -7,6 +9,71 @@ using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML { + + public class XMLManufacturerReportCompletedBus : AbstractXMLManufacturerReport + { + #region Overrides of AbstractXMLManufacturerReport + + public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) + { + VehiclePart.Add( + new XAttribute(xsi + "type", "VehiclePrimaryBusType"), + new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName), + new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer), + new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress), + new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN), + new XElement( + tns + XMLNames.Vehicle_GrossVehicleMass, + XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 1)), + new XElement( + tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)), + new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle), + new XElement(tns + XMLNames.Vehicle_HybridElectricHDV, modelData.VehicleData.HybridElectricHDV), + new XElement(tns + XMLNames.Vehicle_DualFuelVehicle, modelData.VehicleData.DualFuelVehicle), + new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()), + new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()), + + GetADAS(modelData.VehicleData.ADAS), + GetTorqueLimits(modelData.EngineData), + VehicleComponents(modelData, fuelModes) + + ); + + InputDataIntegrity = GetInputDataSignature(modelData); + } + + public virtual void WriteResult(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult) + { + foreach (var entry in primaryResult.EnergyConsumption) { + + } + } + + protected override XElement VehicleComponents(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) + { + return new XElement( + tns + XMLNames.Vehicle_Components, + new XAttribute(xsi + "type", "ComponentsPrimaryBusType"), + GetEngineDescription(modelData.EngineData, fuelModes), + GetGearboxDescription(modelData.GearboxData), + GetTorqueConverterDescription(modelData.GearboxData.TorqueConverterData), + GetRetarderDescription(modelData.Retarder), + GetAngledriveDescription(modelData.AngledriveData), + GetAxlegearDescription(modelData.AxleGearData), + GetAxleWheelsDescription(modelData.VehicleData), + GetAuxiliariesDescription(modelData) + ); + } + + #endregion + + public override void WriteResult(XMLDeclarationReport.ResultEntry resultEntry) + { + throw new NotSupportedException(); + } + + } + public class XMLManufacturerReportPrimaryBus : AbstractXMLManufacturerReport { public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) diff --git a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs index 644b7bf941..64a8a72b08 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs @@ -383,7 +383,7 @@ namespace TUGraz.VectoCore.OutputData.XML tns + XMLNames.Report_ResultEntry_TotalVehicleMass, XMLHelper.ValueAsUnit(resultEntry.Payload, XMLNames.Unit_kg, 0)), new XElement( - tns + XMLNames.Report_Result_Payload, XMLHelper.ValueAsUnit(resultEntry.Payload, XMLNames.Unit_kg, 0)), + tns + XMLNames.Report_Result_Payload, XMLHelper.ValueAsUnit(resultEntry.Payload, XMLNames.Unit_kg, 2)), new XElement( tns + XMLNames.Report_ResultEntry_PassengerCount, resultEntry.PassengerCount), @@ -425,7 +425,7 @@ namespace TUGraz.VectoCore.OutputData.XML new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/km"), (result.FuelConsumptionFinal[fuel.FuelType] * fuel.LowerHeatingValueVecto / result.Distance.ConvertToKiloMeter() / 1e6) - .Value().ToMinSignificantDigits(3, 1))); + .Value().ToMinSignificantDigits(3, 3))); retVal.Add(fcResult); } diff --git a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs index 0c02b536af..474e3b4636 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs @@ -179,6 +179,21 @@ namespace TUGraz.VectoCore.OutputData.XML } } + protected override void OutputReports() + { + throw new NotImplementedException(); + } + + protected override void GenerateReports() + { + throw new NotImplementedException(); + } + + protected override void WriteResult(ResultEntry result) + { + throw new NotImplementedException(); + } + private void GenerateResults() { //var vtpResult = Missions.First().Value.FirstOrDefault(x => x.Key == MissionType.VerificationTest).Value.ResultEntry diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 4957a25a89..232cc3e90b 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -421,6 +421,9 @@ <Compile Include="OutputData\XML\Engineering\XMLEngineeringWriter.cs" /> <Compile Include="OutputData\XML\Engineering\XMLEngineeringWriterInjectModule.cs" /> <Compile Include="OutputData\XML\Engineering\XMLWriterMapping.cs" /> + <Compile Include="OutputData\XML\XMLCustomerReportCompletedBus.cs" /> + <Compile Include="OutputData\XML\XMLDeclarationReportCompletedVehicle.cs" /> + <Compile Include="OutputData\XML\XMLDeclarationReportPrimaryVehicle.cs" /> <Compile Include="OutputData\XML\XMLManufacturerReportExemptedTruck.cs" /> <Compile Include="OutputData\XML\XMLManufacturerReportPrimaryBus.cs" /> <Compile Include="OutputData\XML\XMLPrimaryVehicleReport.cs" /> @@ -545,7 +548,6 @@ <Compile Include="Models\Declaration\TruckSegments.cs" /> <Compile Include="Models\Declaration\StandardBodies.cs" /> <Compile Include="Models\Declaration\SteeringPump.cs" /> - <Compile Include="Models\Declaration\VehicleClass.cs" /> <Compile Include="Models\Declaration\Wheels.cs" /> <Compile Include="Models\Declaration\WHTCCorrection.cs" /> <Compile Include="Models\SimulationComponent\Data\CrosswindCorrectionCdxALookup.cs" /> diff --git a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs index 0c056f2f75..1f9f8359fb 100644 --- a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs +++ b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs @@ -183,8 +183,8 @@ namespace TUGraz.VectoCore.Tests.Integration var cifValidator = GetValidator(xmlReport.CustomerReport); cifValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport); - var monitoringValidator = GetValidator(xmlReport.MonitoringReport); - monitoringValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport); + //var monitoringValidator = GetValidator(xmlReport.MonitoringReport); + //monitoringValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport); } private static XMLValidator GetValidator(XDocument xmlReport) -- GitLab