From b020dee04a9a281da0ace088e01be40633e0e626 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Thu, 14 Jul 2022 16:17:08 +0200 Subject: [PATCH] removing "fuel mode" in VIF results copying tyre data from input to vif to preserve original information MRF / CIF: results initially contain dummy values so that testcases run through and generate syntactically valid xml update VIF schema: component data does not contain signature, no id attribute extend dummy run data factory primary bus for PEV remove fuelmode in mockup results --- .../InputData/DeclarationInputData.cs | 2 +- .../VectoCommon/Models/AxleConfiguration.cs | 15 + .../InputData/FileIO/JSON/JSONInputData.cs | 2 +- .../XMLDeclarationMultistageInputData.cs | 5 +- ...ryVehicleBusResultsInputDataProviderV01.cs | 2 +- .../XMLDeclarationTyreDataProvider.cs | 6 + .../IXMLTyreDeclarationInputData.cs | 6 +- .../XMLDeclarationMultistageInputReader.cs | 16 +- .../VectoCore/InputData/Impl/InputData.cs | 2 +- ...rationModePrimaryBusVectoRunDataFactory.cs | 32 ++ .../AbstractCustomerReport.cs | 5 + .../CIFNinjectModule.cs | 2 + .../CustomerInformationFile.cs | 1 + .../XMLCustomerReportCompletedBus.cs | 2 +- .../AbstractManufacturerReport.cs | 5 + .../XMLManufacturerReportCompletedBus.cs | 4 +- .../AbstractVIFXmlType.cs | 14 - .../ComponentGroup.cs | 8 +- .../Components/VIFAdasType.cs | 20 + .../Components/VIFAuxiliaryType.cs | 62 ++- .../Components/VIFAxleWheelsType.cs | 62 +-- .../Components/VIFBoostingLimitationsType.cs | 4 +- .../VIFElectricEnergyStorageType.cs | 96 ++--- .../Components/VIFElectricMachineGENType.cs | 7 +- .../VIFElectricMachineSystemMeasuredType.cs | 14 +- .../Components/VIFElectricMachineType.cs | 2 +- .../VIFElectricMotorTorqueLimitsType.cs | 10 +- .../Components/VIFIepcType.cs | 36 +- .../Components/VIFTorqueConverterType.cs | 21 +- .../IVIFReportFactory.cs | 11 +- .../VIFNinjectModule.cs | 96 ++++- .../VehicleInformationFile.cs | 108 +++++- .../VehicleParameterGroup.cs | 60 ++- .../VehicleWriter.cs | 21 +- .../XSD/VectoOutputMultistep.0.1.xsd | 63 +-- ...entional_primaryBus_AMT_DifferentTyres.xml | 362 ++++++++++++++++++ .../exempted_completed.VIF_Report_2.xml | 2 +- .../CustomerInformationFileWriterTest.cs | 66 ++-- .../Reports/ManufacturerReportWriterTest.cs | 67 ++-- .../XML/XMLMultistageBusDataTest.cs | 2 +- .../MRF_MockupResults_PEV_Lorry.xml | 1 - .../VIF_MockupResults_Conv_Bus.xml | 1 - .../VIF_MockupResults_OVC-HEV_Bus.xml | 1 - .../VIF_MockupResults_PEV_Bus.xml | 1 - .../VIF_MockupResults_non-OVC-HEV_Bus.xml | 1 - .../VectoMockup/Ninject/VIFMockupModule.cs | 29 +- .../VectoMockupTest/MockUpVectoTest.cs | 32 +- 47 files changed, 1082 insertions(+), 305 deletions(-) create mode 100644 VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 022b8d0570..beec70895a 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -1091,7 +1091,7 @@ namespace TUGraz.VectoCommon.InputData Kilogram TotalVehicleMass { get; } Kilogram Payload { get; } double PassengerCount { get; } - string FuelMode { get; } + //string FuelMode { get; } } diff --git a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs index 4de78fb9e5..fb5868430d 100644 --- a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs +++ b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs @@ -31,6 +31,7 @@ using System; using System.Diagnostics.CodeAnalysis; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCommon.Models @@ -73,6 +74,20 @@ namespace TUGraz.VectoCommon.Models throw new ArgumentOutOfRangeException("self", self, null); } } + + public static string ToXMLFormat(this AxleType self) + { + switch (self) { + case AxleType.VehicleDriven: + return "VehicleDriven"; + case AxleType.VehicleNonDriven: + return "VehicleNonDriven"; + case AxleType.Trailer: + return "Trailer"; + default: + throw new ArgumentOutOfRangeException(nameof(self), self, null); + } + } } public static class AxleConfigurationHelper diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs index 04cea2dbe1..2be61cbf0f 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs @@ -836,7 +836,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON TotalVehicleMass = (node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_ResultEntry_TotalVehicleMass}']")?.InnerText.ToDouble() ?? 0).SI<Kilogram>(), Payload = (node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_Payload}']")?.InnerText.ToDouble() ?? 0).SI<Kilogram>(), PassengerCount = node.SelectSingleNode($"./*[local-name()='{XMLNames.Bus_PassengerCount}']")?.InnerText.ToDouble() ?? 0, - FuelMode = "" //node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_FuelMode}']").InnerText + //FuelMode = "" //node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_FuelMode}']").InnerText }; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs index 14c1eaecd0..fff8cb9b01 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs @@ -153,8 +153,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { return ResultsInputData.Results.FirstOrDefault( x => x.VehicleGroup == vehicleClass && - (x.SimulationParameter.Payload - payload).IsEqual(0, 1) && x.Mission == mission && - x.SimulationParameter.FuelMode.Equals(fuelMode, StringComparison.InvariantCultureIgnoreCase)); + (x.SimulationParameter.Payload - payload).IsEqual(0, 1) && x.Mission == mission + // && x.SimulationParameter.FuelMode.Equals(fuelMode, StringComparison.InvariantCultureIgnoreCase) + ); } public XmlNode ResultsNode => GetNode(XMLNames.Report_Results); diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs index 21ae0bdaed..0679d48964 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs @@ -84,7 +84,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).ToDouble(), - FuelMode = GetString(XMLNames.Report_Result_FuelMode, xmlNode) + //FuelMode = GetString(XMLNames.Report_Result_FuelMode, xmlNode) }; } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs index f02cc722c8..ab19c6b897 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs @@ -78,6 +78,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual string FuelEfficiencyClass => DeclarationData.Wheels.TyreClass.Lookup(RollResistanceCoefficient); #endregion + + #region Implementation of IXMLTyreDeclarationInputData + + public XmlNode GetXmlNode => BaseNode; + + #endregion } // --------------------------------------------------------------------------------------- diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs index b31986822a..79ed20d1a6 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs @@ -29,9 +29,13 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System.Xml; using TUGraz.VectoCommon.InputData; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces { - public interface IXMLTyreDeclarationInputData : ITyreDeclarationInputData, IXMLResource { } + public interface IXMLTyreDeclarationInputData : ITyreDeclarationInputData, IXMLResource + { + XmlNode GetXmlNode { get; } + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs index b30e181990..c68a007daf 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs @@ -592,7 +592,21 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl ////return _manufacturingStages.Any(x => x.Vehicle.ExemptedVehicle); } } - public VehicleCategory VehicleCategory { get => VehicleDeclarationType == VehicleDeclarationType.final ? VehicleCategory.HeavyBusCompletedVehicle : VehicleCategory.HeavyBusInterimVehicle; } + public VehicleCategory VehicleCategory + { + get + { + if (ExemptedVehicle) { + return IsInputDataCompleteExempted(VectoSimulationJobType.ConventionalVehicle, false) + ? VehicleCategory.HeavyBusCompletedVehicle + : VehicleCategory.HeavyBusInterimVehicle; + } + return VehicleDeclarationType == VehicleDeclarationType.final + ? VehicleCategory.HeavyBusCompletedVehicle + : VehicleCategory.HeavyBusInterimVehicle; + } + } + public AxleConfiguration AxleConfiguration { get; } public IList<ITorqueLimitInputData> TorqueLimits { get; } diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index e3a7d4c85d..903a0d7ffe 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -284,7 +284,7 @@ namespace TUGraz.VectoCore.InputData.Impl public Kilogram TotalVehicleMass { get; internal set; } public Kilogram Payload { get; internal set; } public double PassengerCount { get; internal set; } - public string FuelMode { get; internal set; } + //public string FuelMode { get; internal set; } } public class ApplicationInformation : IApplicationInformation diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs index 09465baf9c..5e162563ef 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs @@ -66,6 +66,38 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl } private IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary() + { + switch (InputDataProvider.JobInputData.JobType) { + case VectoSimulationJobType.ConventionalVehicle: + case VectoSimulationJobType.ParallelHybridVehicle: + case VectoSimulationJobType.SerialHybridVehicle: + return VectoRunDataConventionalHeavyBusPrimaryNonExempted(); + case VectoSimulationJobType.BatteryElectricVehicle: + return VectoRunDataBatteryElectricHeavyBusPrimaryNonExempted(); + case VectoSimulationJobType.EngineOnlySimulation: + break; + default: + throw new ArgumentOutOfRangeException(); + } + return VectoRunDataConventionalHeavyBusPrimaryNonExempted(); + } + + private IEnumerable<VectoRunData> VectoRunDataBatteryElectricHeavyBusPrimaryNonExempted() + { + var vehicle = InputDataProvider.JobInputData.Vehicle; + foreach (var mission in _segment.Missions) { + foreach (var loading in mission.Loadings) { + var simulationRunData = CreateVectoRunData(vehicle, 0, mission, loading); + if (simulationRunData == null) { + continue; + } + yield return simulationRunData; + } + + } + } + + private IEnumerable<VectoRunData> VectoRunDataConventionalHeavyBusPrimaryNonExempted() { var vehicle = InputDataProvider.JobInputData.Vehicle; var engine = vehicle.Components.EngineInputData; 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 a39d6028fb..eba4c7d321 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 @@ -35,6 +35,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation protected AbstractCustomerReport(ICustomerInformationFileFactory cifFactory) { _cifFactory = cifFactory; + + // MQ: write dummy result element for testcases (2022-07-13) + Results = new XElement(Cif_0_9 + "Results", + new XElement(Cif_0_9 + "Status", "success"), + new XElement(Cif_0_9 + "ExemptedVehicle")); } 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 f8597ae7b9..e944a51702 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 @@ -97,7 +97,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation true, false, false))); + #region MediumLorryCIF + Bind<IXMLCustomerReport>().To<ConventionalLorry_CIF>().Named(nameCombinationMethod( ToParams(VehicleCategoryHelper.Van, VectoSimulationJobType.ConventionalVehicle, ArchitectureID.UNKNOWN, false, false, false))); 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 e29f62db5f..0def98c7b2 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 @@ -19,6 +19,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation protected CustomerInformationFile(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } } + #region LorryCIF public class ConventionalLorry_CIF : CustomerInformationFile { diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs index 49e0c3f6a8..c604214d7c 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs @@ -149,7 +149,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation XMLHelper.ValueAsUnit(result.TotalVehicleMass, XMLNames.Unit_kg)), new XElement(tns + XMLNames.Report_Result_MassPassengers, XMLHelper.ValueAsUnit(result.Payload, XMLNames.Unit_kg)), result.PassengerCount.HasValue && result.PassengerCount.Value > 0 ? new XElement(tns + XMLNames.Report_Result_PassengerCount, result.PassengerCount.Value.ToMinSignificantDigits(3, 1)) : null, - new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode) + //new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode) }; } 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 0202037e06..ddeed612ee 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 @@ -41,6 +41,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. protected AbstractManufacturerReport(IManufacturerReportFactory MRFReportFactory) { _mRFReportFactory = MRFReportFactory; + + // MQ: write dummy result element for testcases (2022-07-13) + Results = new XElement(Mrf_0_9 + "Results", + new XElement(Mrf_0_9 + "Status", "success"), + new XElement(Mrf_0_9 + "ExemptedVehicle")); } #region Implementation of IXMLManufacturerReport diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs index d630c4f5ca..770a98df0a 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs @@ -190,8 +190,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport tns + XMLNames.Report_ResultEntry_TotalVehicleMass, XMLHelper.ValueAsUnit(primaryResult.SimulationParameter.TotalVehicleMass, XMLNames.Unit_kg)), new XElement(tns + XMLNames.Report_ResultEntry_Payload, XMLHelper.ValueAsUnit(primaryResult.SimulationParameter.Payload, XMLNames.Unit_kg)), - new XElement(tns + "PassengerCount", primaryResult.SimulationParameter.PassengerCount.ToMinSignificantDigits(3, 1)), - new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode) + new XElement(tns + "PassengerCount", primaryResult.SimulationParameter.PassengerCount.ToMinSignificantDigits(3, 1)) + //new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode) ); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs index 1a890be412..d6170e971d 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs @@ -29,19 +29,5 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF _vifFactory = vifFactory; } - protected XElement GetSignature(DigestData digestData) - { - return new XElement(_v20 + XMLNames.DI_Signature, - new XElement(_di + XMLNames.DI_Signature_Reference, - new XAttribute(XMLNames.DI_Signature_Reference_URI_Attr, digestData.Reference), - new XElement(_di + XMLNames.DI_Signature_Reference_Transforms, - new XElement(_di + XMLNames.DI_Signature_Reference_Transforms_Transform, - new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, digestData.CanonicalizationMethods[0])), - new XElement(_di + XMLNames.DI_Signature_Reference_Transforms_Transform, - new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/10/xml-exc-c14n#"))), - new XElement(_di + XMLNames.DI_Signature_Reference_DigestMethod, - new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/04/xmlenc#sha256")), - new XElement(_di + XMLNames.DI_Signature_Reference_DigestValue, digestData.DigestValue))); - } } } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs index 8f5964b301..490b86029c 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs @@ -63,7 +63,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF _vifReportFactory.GetIepcType().GetElement(inputData), _vifReportFactory.GetAxlegearType().GetElement(inputData), _vifReportFactory.GetAxleWheelsType().GetElement(inputData), - _vifReportFactory.GetAuxiliaryType().GetElement(inputData)); + _vifReportFactory.GetAuxiliaryIEPC_SType().GetElement(inputData)); } #endregion @@ -80,10 +80,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF return new XElement(_vif + XMLNames.Vehicle_Components, new XAttribute(_xsi + XMLNames.XSIType, "Vehicle_HEV-Px_ComponentsVIFType"), _vifReportFactory.GetEngineType().GetElement(inputData), - _vifReportFactory.GetIepcType().GetElement(inputData), - _vifReportFactory.GetElectricEnergyStorageType().GetElement(inputData), - _vifReportFactory.GetElectricMachineGENType().GetElement(inputData), _vifReportFactory.GetElectricMachineType().GetElement(inputData), + _vifReportFactory.GetElectricEnergyStorageType().GetElement(inputData), _vifReportFactory.GetTransmissionType().GetElement(inputData), _vifReportFactory.GetTorqueConvertType().GetElement(inputData), _vifReportFactory.GetAngelDriveType().GetElement(inputData), @@ -237,7 +235,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public override XElement GetElement(IDeclarationInputDataProvider inputData) { return new XElement(_vif + XMLNames.Vehicle_Components, - new XAttribute(_xsi + XMLNames.XSIType, "Vehicle-IEPC_ComponentsVIFType"), + new XAttribute(_xsi + XMLNames.XSIType, "Vehicle_PEV-IEPC_ComponentsVIFType"), _vifReportFactory.GetIepcType().GetElement(inputData), _vifReportFactory.GetElectricEnergyStorageType().GetElement(inputData), _vifReportFactory.GetAxlegearType().GetElement(inputData), diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs index 3499ef6c15..4fe0824f85 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs @@ -76,4 +76,24 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF #endregion } + + public class VIFIEPCAdasType : AbstractVIFXmlType, IVIFFAdasType + { + public VIFIEPCAdasType(IVIFReportFactory vifFactory) : base(vifFactory) { } + + #region Implementation of IXmlTypeWriter + + public XElement GetXmlType(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + if (adas == null) + return null; + + return new XElement(_vif + XMLNames.Vehicle_ADAS, + new XAttribute("xmlns", _v24), + new XAttribute(_xsi + XMLNames.XSIType, "ADAS_IEPC_Type"), + new XElement(_v24 + XMLNames.Vehicle_ADAS_PCC, adas.PredictiveCruiseControl.ToXMLFormat())); + } + + #endregion + } } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs index 38b2757721..2c0908c63c 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs @@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public virtual XElement GetElement(IDeclarationInputDataProvider inputData) { var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries; - if (aux != null) + if (aux == null) return null; return new XElement(_vif + XMLNames.Component_Auxiliaries, @@ -155,7 +155,59 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public override XElement GetElement(IDeclarationInputDataProvider inputData) { var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries; - if (aux != null) + if (aux == null) + return null; + + return new XElement(_vif + XMLNames.Component_Auxiliaries, + new XElement(_vif + XMLNames.ComponentDataWrapper, + new XAttribute(_xsi + XMLNames.XSIType, "AUX_HEV-S_PrimaryBusType"), + new XElement(_vif + XMLNames.BusAux_Fan, + new XElement(_vif + XMLNames.Auxiliaries_Auxiliary_Technology, aux.FanTechnology)), + GetSteeringPumpElement(aux.SteeringPumpTechnology), + GetElectricSystem(aux.ElectricSupply), + GetPneumaticSystem(aux.PneumaticSupply, aux.PneumaticConsumers), + GetHvac(aux.HVACAux) + )); + } + + + protected override XElement GetElectricSystem(IElectricSupplyDeclarationData electricSupply) + { + return new XElement(_vif + XMLNames.BusAux_ElectricSystem, + new XElement(_vif + XMLNames.BusAux_ElectricSystem_AlternatorTechnology, + electricSupply.AlternatorTechnology.ToXMLFormat()), + new XElement(_vif + XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible, + electricSupply.ESSupplyFromHEVREESS)); + } + + + protected override XElement GetPneumaticSystem(IPneumaticSupplyDeclarationData pSupply, IPneumaticConsumersDeclarationData pConsumer) + { + return new XElement(_vif + XMLNames.BusAux_PneumaticSystem, + new XElement(_vif + XMLNames.Bus_SizeOfAirSupply, pSupply.CompressorSize), + new XElement(_vif + XMLNames.CompressorDrive, pSupply.CompressorDrive.GetLabel()), + new XElement(_vif + XMLNames.Vehicle_Clutch, pSupply.Clutch), + new XElement(_vif + XMLNames.Bus_CompressorRatio, pSupply.Ratio.ToXMLFormat(3)), + new XElement(_vif + XMLNames.Bus_SmartRegenerationSystem, pSupply.SmartRegeneration), + new XElement(_vif + XMLNames.Bus_AirsuspensionControl, GetXMLAirsuspensionControl(pConsumer.AirsuspensionControl)), + new XElement(_vif + XMLNames.BusAux_PneumaticSystem_SCRReagentDosing, pConsumer.AdBlueDosing == ConsumerTechnology.Pneumatically) + ); + } + + #endregion + } + + public class VIFAuxiliaryIEPC_SType : VIFAuxiliaryType + { + public VIFAuxiliaryIEPC_SType(IVIFReportFactory vifFactory) : base(vifFactory) { } + + + #region Overrides of VIFAuxiliaryType + + public override XElement GetElement(IDeclarationInputDataProvider inputData) + { + var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries; + if (aux == null) return null; return new XElement(_vif + XMLNames.Component_Auxiliaries, @@ -208,7 +260,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries; - if (aux != null) + if (aux == null) return null; return new XElement(_vif + XMLNames.Component_Auxiliaries, @@ -254,7 +306,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public override XElement GetElement(IDeclarationInputDataProvider inputData) { var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries; - if (aux != null) + if (aux == null) return null; return new XElement(_vif + XMLNames.Component_Auxiliaries, @@ -301,7 +353,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries; - if (aux != null) + if (aux == null) return null; return new XElement(_vif + XMLNames.Component_Auxiliaries, diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs index b2d266ac86..f4119fb9f8 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs @@ -1,8 +1,12 @@ using System.Collections.Generic; using System.Xml; using System.Xml.Linq; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components @@ -16,14 +20,17 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public XElement GetElement(IDeclarationInputDataProvider inputData) { var axleWheels = inputData.JobInputData.Vehicle.Components.AxleWheels; - if (axleWheels != null) + if (axleWheels == null) return null; return new XElement(_vif + XMLNames.Component_AxleWheels, new XElement(_vif + XMLNames.ComponentDataWrapper, - new XAttribute(_xsi + XMLNames.XSIType, "AxleDataDeclarationType"), + new XAttribute(_xsi + XMLNames.XSIType, "AxleWheelsDataVIFType"), + new XElement(_vif + XMLNames.AxleWheels_Axles, GetAxleData(axleWheels.AxlesDeclaration) - )); + ) + ) + ); } private List<XElement> GetAxleData(IList<IAxleDeclarationInputData> axleInput) @@ -34,9 +41,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF foreach (var currentAxle in axleInput) { var axle = new XElement(_vif + XMLNames.AxleWheels_Axles_Axle, new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, axleNumber++), - //new XAttribute(XNamespace.Xmlns + "v2.0", _v20), - new XAttribute(_xsi + XMLNames.XSIType, "AxleDataDeclarationType"), - GetTyre(currentAxle.Tyre)); + new XAttribute("xmlns", _v20), + new XAttribute(_xsi + XMLNames.XSIType, "AxleDataDeclarationType"), + new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_AxleType, currentAxle.AxleType.ToXMLFormat()), + new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_TwinTyres, currentAxle.TwinTyres), + new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_Steered, currentAxle.Steered), + GetTyre(currentAxle.Tyre)); axles.Add(axle); } @@ -45,24 +55,30 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF private XElement GetTyre(ITyreDeclarationInputData tyre) { - var currentTyre = - new XElement(_v20 + XMLNames.ComponentDataWrapper, - new XAttribute(_xsi + XMLNames.XSIType, "TyreDataDeclarationType"), - new XAttribute("id", tyre.DigestValue.Reference), - new XElement(XMLNames.Component_Manufacturer, tyre.Manufacturer), - new XElement(XMLNames.Component_Model, tyre.Model), - new XElement(XMLNames.Component_CertificationNumber, tyre.CertificationNumber), - new XElement(XMLNames.Component_Date, XmlConvert.ToString(tyre.Date, XmlDateTimeSerializationMode.Utc)), - new XElement(XMLNames.Component_AppVersion, tyre.Date), - new XElement(XMLNames.AxleWheels_Axles_Axle_Dimension, tyre.Dimension), - new XElement(XMLNames.AxleWheels_Axles_Axle_RRCDeclared, tyre.RollResistanceCoefficient), - new XElement(XMLNames.AxleWheels_Axles_Axle_FzISO, tyre.FuelEfficiencyClass) - ); + var xmlTyre = tyre as IXMLTyreDeclarationInputData; + if (xmlTyre == null) { + throw new VectoException("Tyre input data must be in XML format"); + } - return new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_Tyre, - currentTyre, - GetSignature(tyre.DigestValue) - ); + return XElement.Load(xmlTyre.GetXmlNode.CreateNavigator().ReadSubtree()); + //var currentTyre = + // new XElement(_v20 + XMLNames.ComponentDataWrapper, + // new XAttribute(_xsi + XMLNames.XSIType, "TyreDataDeclarationType"), + // new XAttribute("id", tyre.DigestValue.Reference), + // new XElement(XMLNames.Component_Manufacturer, tyre.Manufacturer), + // new XElement(XMLNames.Component_Model, tyre.Model), + // new XElement(XMLNames.Component_CertificationNumber, tyre.CertificationNumber), + // new XElement(XMLNames.Component_Date, XmlConvert.ToString(tyre.Date, XmlDateTimeSerializationMode.Utc)), + // new XElement(XMLNames.Component_AppVersion, tyre.Date), + // new XElement(XMLNames.AxleWheels_Axles_Axle_Dimension, tyre.Dimension), + // new XElement(XMLNames.AxleWheels_Axles_Axle_RRCDeclared, tyre.RollResistanceCoefficient.ToXMLFormat(4)), + // new XElement(XMLNames.AxleWheels_Axles_Axle_FzISO, tyre.TyreTestLoad.ToXMLFormat()) + //); + + //return new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_Tyre, + // currentTyre, + // GetSignature(tyre.DigestValue) + //); } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs index 2c67c67ac4..32e286734b 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs @@ -18,7 +18,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF if (boostingLimitations == null) return null; - var boostingLimitationsXElement = new XElement(_vif + XMLNames.Vehicle_BoostingLimitation); + var boostingLimitationsXElement = new XElement(_vif + XMLNames.Vehicle_BoostingLimitation, + new XAttribute(_xsi + XMLNames.XSIType, "BoostingLimitationsType"), + new XAttribute("xmlns", _v24.NamespaceName)); foreach (DataRow row in boostingLimitations.Rows) { boostingLimitationsXElement.Add(new XElement(_v24 + XMLNames.BoostingLimitation_Entry, diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs index 6902eada93..b216b9d2db 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs @@ -2,6 +2,7 @@ using System.Data; using System.Xml; using System.Xml.Linq; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; @@ -27,10 +28,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF foreach (var entry in electricStorages) { switch (entry.REESSPack.StorageType) { case REESSType.SuperCap: - result.Add(GetCapacitor(entry as ISuperCapDeclarationInputData)); + result.Add(GetCapacitor(entry)); break; case REESSType.Battery: - result.Add(GetBattery(entry as IBatteryPackDeclarationInputData, entry.StringId)); + result.Add(GetBattery(entry)); break; } } @@ -40,46 +41,53 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF #endregion - private XElement GetCapacitor(ISuperCapDeclarationInputData capacitor) + private XElement GetCapacitor(IElectricStorageDeclarationInputData reess) { - if(capacitor == null) + if(reess == null) return null; + var supercap = reess.REESSPack as ISuperCapDeclarationInputData; + if (supercap == null) { + throw new VectoException("Electric energy storage of type 'Capacitor' requires capacitor component"); + } + return new XElement(_vif + XMLNames.ElectricEnergyStorage_Capacitor, new XElement(_vif + XMLNames.ComponentDataWrapper, new XAttribute(_xsi + XMLNames.XSIType, "CapacitorSystemDataType"), - new XAttribute("id", capacitor.DigestValue.Reference), - new XElement(_vif + XMLNames.Component_Manufacturer, capacitor.Manufacturer), - new XElement(_vif + XMLNames.Component_Model, capacitor.Model), - new XElement(_vif + XMLNames.Report_Component_CertificationNumber, capacitor.CertificationNumber), - new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString( capacitor.Date, XmlDateTimeSerializationMode.Utc)), - new XElement(_vif + XMLNames.Component_AppVersion, capacitor.AppVersion), - new XElement(_vif + XMLNames.Component_CertificationMethod, capacitor.CertificationMethod.ToXMLFormat()), - new XElement(_vif + XMLNames.Capacitor_Capacitance, capacitor.Capacity.ToXMLFormat(2)), - new XElement(_vif + XMLNames.Capacitor_InternalResistance, capacitor.InternalResistance.ToXMLFormat(2)), - new XElement(_vif + XMLNames.Capacitor_MinVoltage, capacitor.MinVoltage.ToXMLFormat(2)), - new XElement(_vif + XMLNames.Capacitor_MaxVoltage, capacitor.MaxVoltage.ToXMLFormat(2)), - new XElement(_vif + XMLNames.Capacitor_MaxChargingCurrent, capacitor.MaxCurrentCharge.ToXMLFormat(2)), - new XElement(_vif + XMLNames.Capacitor_MaxDischargingCurrent, capacitor.MaxCurrentDischarge.ToXMLFormat(2)), - capacitor.TestingTemperature == null + new XElement(_vif + XMLNames.Component_Manufacturer, supercap.Manufacturer), + new XElement(_vif + XMLNames.Component_Model, supercap.Model), + new XElement(_vif + XMLNames.Report_Component_CertificationNumber, supercap.CertificationNumber), + new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(supercap.Date, XmlDateTimeSerializationMode.Utc)), + new XElement(_vif + XMLNames.Component_AppVersion, supercap.AppVersion), + new XElement(_vif + XMLNames.Component_CertificationMethod, supercap.CertificationMethod.ToXMLFormat()), + new XElement(_vif + XMLNames.Capacitor_Capacitance, supercap.Capacity.ToXMLFormat(2)), + new XElement(_vif + XMLNames.Capacitor_InternalResistance, supercap.InternalResistance.ToXMLFormat(2)), + new XElement(_vif + XMLNames.Capacitor_MinVoltage, supercap.MinVoltage.ToXMLFormat(2)), + new XElement(_vif + XMLNames.Capacitor_MaxVoltage, supercap.MaxVoltage.ToXMLFormat(2)), + new XElement(_vif + XMLNames.Capacitor_MaxChargingCurrent, supercap.MaxCurrentCharge.ToXMLFormat(2)), + new XElement(_vif + XMLNames.Capacitor_MaxDischargingCurrent, supercap.MaxCurrentDischarge.ToXMLFormat(2)), + supercap.TestingTemperature == null ? null - : new XElement(_vif + XMLNames.REESS_TestingTemperature, capacitor.TestingTemperature.ToXMLFormat()) + : new XElement(_vif + XMLNames.REESS_TestingTemperature, supercap.TestingTemperature.AsDegCelsius.ToXMLFormat(0)) )); } - private XElement GetBattery(IBatteryPackDeclarationInputData battery, int id) + private XElement GetBattery(IElectricStorageDeclarationInputData reess) { - if (battery == null) + if (reess == null) return null; + var battery = reess.REESSPack as IBatteryPackDeclarationInputData; + if (battery == null) { + throw new VectoException("Electric energy storage of type 'Battery' requires battery component"); + } + var result = new XElement(_vif + XMLNames.ElectricEnergyStorage_Battery, - new XElement(_vif + XMLNames.Battery_StringID, id), - new XElement(_vif + "REESS", - GetReess(battery), - GetSignature(battery.DigestValue)), - battery.MinSOC.HasValue ? null : new XElement(_vif + XMLNames.Battery_SOCmin, battery.MinSOC.Value), - battery.MaxSOC.HasValue ? null : new XElement(_vif + XMLNames.Battery_SOCmax, battery.MaxSOC.Value) + new XElement(_vif + XMLNames.Battery_StringID, reess.StringId), + new XElement(_vif + "REESS", GetReess(battery)), + battery.MinSOC.HasValue ? new XElement(_vif + XMLNames.Battery_SOCmin, battery.MinSOC.Value) : null, + battery.MaxSOC.HasValue ? new XElement(_vif + XMLNames.Battery_SOCmax, battery.MaxSOC.Value) : null ); return result; @@ -90,7 +98,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { return new XElement(_vif + XMLNames.ComponentDataWrapper, new XAttribute(_xsi + XMLNames.XSIType, "BatterySystemDataType"), - new XAttribute("id", battery.DigestValue.Reference), new XElement(_vif + XMLNames.Component_Manufacturer, battery.Manufacturer), new XElement(_vif + XMLNames.Component_Model, battery.Model), new XElement(_vif + XMLNames.Report_Component_CertificationNumber, battery.CertificationNumber), @@ -104,11 +111,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement(_vif + XMLNames.REESS_JunctionboxIncluded, battery.JunctionboxIncluded), battery.TestingTemperature == null ? null - : new XElement(_vif + XMLNames.REESS_TestingTemperature, battery.TestingTemperature.ToXMLFormat()), + : new XElement(_vif + XMLNames.REESS_TestingTemperature, battery.TestingTemperature.AsDegCelsius.ToXMLFormat(0)), GetOcv(battery.VoltageCurve), - GetInternalResistance(battery.InternalResistanceCurve), GetCurrentLimits(battery.MaxCurrentMap) - ); + ); } @@ -127,33 +133,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF } return new XElement(_vif + XMLNames.REESS_OCV, entries); } - - - private XElement GetInternalResistance(DataTable internalResistance) - { - var entries = new List<XElement>(); - - foreach (DataRow row in internalResistance.Rows) { - var soc = row[XMLNames.REESS_OCV_SoC]; - var r2 = row[XMLNames.REESS_InternalResistanceCurve_R2].ToString().ToDouble(); - var r10 = row[XMLNames.REESS_InternalResistanceCurve_R10].ToString().ToDouble(); - var r20 = row[XMLNames.REESS_InternalResistanceCurve_R20].ToString().ToDouble(); - var r120 = row[XMLNames.REESS_InternalResistanceCurve_R120].ToString(); - - entries.Add(new XElement(_vif + XMLNames.REESS_MapEntry, - new XAttribute(XMLNames.REESS_OCV_SoC, soc), - new XAttribute(XMLNames.REESS_InternalResistanceCurve_R2, r2.ToXMLFormat(2)), - new XAttribute(XMLNames.REESS_InternalResistanceCurve_R10, r10.ToXMLFormat(2)), - new XAttribute(XMLNames.REESS_InternalResistanceCurve_R20, r20.ToXMLFormat(2)), - r120.IsNullOrEmpty() ? - null : new XAttribute(XMLNames.REESS_InternalResistanceCurve_R120, r120.ToDouble().ToXMLFormat(2)) - )); - } - - return new XElement(_vif + XMLNames.REESS_InternalResistanceCurve, entries); - } - - + private XElement GetCurrentLimits(DataTable batteryMaxCurrentMap) { var entries = new List<XElement>(); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs index bf07afe341..b090d322ef 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs @@ -57,7 +57,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XAttribute(XMLNames.ADC_TorqueLossMap_InputTorque, inputTorque), new XAttribute(XMLNames.ADC_TorqueLossMap_TorqueLoss, torqueLoss.ToXMLFormat(2)))); } - + return new XElement(_vif + XMLNames.Component_ADC, new XElement(_vif + XMLNames.ComponentDataWrapper, new XAttribute(_xsi + XMLNames.XSIType, "ADCDataDeclarationType"), @@ -70,9 +70,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement(_vif + XMLNames.ADC_Ratio, adcData.Ratio.ToXMLFormat(3)), new XElement(_vif + XMLNames.Component_CertificationMethod, adcData.CertificationMethod.ToXMLFormat()), new XElement(_vif + XMLNames.ADC_TorqueLossMap, lossEntries) - ), - GetSignature(adcData.DigestValue) - ); + ) + ); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs index 4e1aacbb22..74879bb885 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs @@ -28,7 +28,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF return new XElement(_vif + XMLNames.ElectricMachineSystem, new XElement(_vif + XMLNames.ComponentDataWrapper, new XAttribute(_xsi + XMLNames.XSIType, "ElectricMachineSystemDataDeclarationType"), - new XAttribute("id", em.DigestValue.Reference), GetElectricMachineSystemCommon(em), new XElement(_vif + XMLNames.Component_CertificationMethod, em.CertificationMethod.ToXMLFormat()), GetElectricMachineSystemPowerRange(em), @@ -37,9 +36,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF GetVoltageLevels(em.VoltageLevels, em.CertificationMethod), GetDragCurve(em.DragCurve), GetConditioning(em.Conditioning) - ), - GetSignature(em.DigestValue) - ); + ) + ); } #endregion @@ -60,7 +58,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected virtual List<XElement> GetElectricMachineSystemPowerRange(IElectricMotorDeclarationInputData em) { return new List<XElement> { - new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, em.R85RatedPower.ToXMLFormat()), + new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, em.R85RatedPower.ToXMLFormat(0)), new XElement(_vif + XMLNames.ElectricMachine_RotationalInertia, em.Inertia.ToXMLFormat(2)) }; } @@ -75,7 +73,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var entry = new XElement(_vif + XMLNames.ElectricMachine_VoltageLevel, certificationMethod == CertificationMethod.StandardValues ? null - : new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageLevel.VoltageLevel.ToXMLFormat()), + : new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageLevel.VoltageLevel.ToXMLFormat(0)), new XElement(_vif + XMLNames.ElectricMachine_ContinuousTorque, voltageLevel.ContinuousTorque.ToXMLFormat(2)), new XElement(_vif + XMLNames.ElectricMachine_TestSpeedContinuousTorque, voltageLevel.ContinuousTorqueSpeed.ToXMLFormat(2)), new XElement(_vif + XMLNames.ElectricMachine_OverloadTorque, voltageLevel.OverloadTorque.ToXMLFormat(2)), @@ -110,7 +108,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF maxTorqueCurveEntries.Add(element); } - return new XElement(XMLNames.MaxTorqueCurve, maxTorqueCurveEntries); + return new XElement(_vif + XMLNames.MaxTorqueCurve, maxTorqueCurveEntries); } @@ -124,7 +122,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var entry = new XElement(_vif + XMLNames.DragCurve_Entry, new XAttribute(XMLNames.DragCurve_OutShaftSpeed, outShaftSpeed.ToXMLFormat(2)), - new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque)); + new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque.ToXMLFormat(2))); entries.Add(entry); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs index 71770a0b23..8b15519253 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs @@ -31,7 +31,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF private XElement GetElectricMachineType(ElectricMachineEntry<IElectricMotorDeclarationInputData> electricMachineData) { - return new XElement(_vif + XMLNames.ElectricMachineSystem, + return new XElement(_vif + XMLNames.Component_ElectricMachine, new XElement(_vif + XMLNames.ElectricMachine_Count, electricMachineData.Count), _vifFactory.GetElectricMachineSystemType().GetElement(electricMachineData.ElectricMachine), Get25GearRatio(electricMachineData.RatioPerGear), diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs index a267ce88d6..e7e4fc4ac4 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs @@ -27,7 +27,13 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF GetVoltageLevels(entry.Value))); } - return new XElement(_vif + XMLNames.ElectricMotorTorqueLimits, electricMachine); + var xmlType = inputData.JobInputData.Vehicle.VehicleType == VectoSimulationJobType.SerialHybridVehicle + ? "ElectricMachineTorqueLimitsSerialHybridType" + : "ElectricMachineTorqueLimitsType"; + return new XElement(_vif + XMLNames.ElectricMotorTorqueLimits, + new XAttribute(_xsi + XMLNames.XSIType, xmlType), + new XAttribute("xmlns", _v24), + electricMachine); } private List<XElement> GetVoltageLevels(List<Tuple<Volt, TableData>> voltageLevels) @@ -54,7 +60,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF } voltageEntries.Add( new XElement(_v24 + XMLNames.ElectricMachine_VoltageLevel, - new XElement(_v24 + XMLNames.VoltageLevel_Voltage, voltage.ToXMLFormat()), + new XElement(_v24 + XMLNames.VoltageLevel_Voltage, voltage.ToXMLFormat(0)), new XElement(_v24 + XMLNames.MaxTorqueCurve, maxTorqueCurveEntries))); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs index 3ce438c3d9..9000b5e845 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs @@ -2,11 +2,14 @@ using System.Data; using System.Xml; using System.Xml.Linq; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components { @@ -22,6 +25,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF if (iepc == null) return null; + var xmlIepc = iepc as AbstractCommonComponentType; + if (xmlIepc == null) { + throw new VectoException("IEPC requires input to be in XML format"); + } + + var certificationMethod = xmlIepc.XMLSource + .SelectSingleNode(XMLHelper.QueryLocalName(XMLNames.Component_CertificationMethod))?.InnerText; + return new XElement(_vif + XMLNames.Component_IEPC, new XElement(_vif + XMLNames.ComponentDataWrapper, new XAttribute(_xsi + XMLNames.XSIType, "IEPCMeasuredDataDeclarationType"), @@ -31,8 +42,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(iepc.Date, XmlDateTimeSerializationMode.Utc)), new XElement(_vif + XMLNames.Component_AppVersion, iepc.AppVersion), new XElement(_vif + XMLNames.ElectricMachine_ElectricMachineType, iepc.ElectricMachineType.ToString()), - new XElement(_vif + XMLNames.Component_CertificationMethod, iepc.CertificationMethod.ToXMLFormat()), - new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, iepc.R85RatedPower.ToXMLFormat()), + new XElement(_vif + XMLNames.Component_CertificationMethod, certificationMethod), + new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, iepc.R85RatedPower.ToXMLFormat(0)), new XElement(_vif + XMLNames.ElectricMachine_RotationalInertia, iepc.Inertia.ToXMLFormat(2)), new XElement(_vif + XMLNames.IEPC_DifferentialIncluded, iepc.DifferentialIncluded), new XElement(_vif + XMLNames.IEPC_DesignTypeWheelMotor, iepc.DesignTypeWheelMotor), @@ -43,8 +54,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF GetVoltageLevels(iepc.VoltageLevels), GetDragCurves(iepc.DragCurves), GetConditioning(iepc.Conditioning) - ), - GetSignature(iepc.DigestValue) + ) ); } @@ -59,19 +69,21 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var currentGear = new XElement(_vif + XMLNames.Gear_EntryName, new XAttribute("number", gearEntry.GearNumber.ToString()), - new XElement(_vif + XMLNames.GearRatio_Ratio, gearEntry.Ratio.ToXMLFormat(3), + new XElement(_vif + XMLNames.GearRatio_Ratio, gearEntry.Ratio.ToXMLFormat(3)), gearEntry.MaxOutputShaftTorque == null ? null - : new XElement(_vif + XMLNames.Gear_MaxOutputShaftTorque, gearEntry.MaxOutputShaftTorque.ToXMLFormat()), + : new XElement(_vif + XMLNames.Gear_MaxOutputShaftTorque, gearEntry.MaxOutputShaftTorque.ToXMLFormat(0)), gearEntry.MaxOutputShaftSpeed == null ? null - : new XElement(_vif + XMLNames.Gear_MaxOutputShaftSpeed, gearEntry.MaxOutputShaftSpeed.ToXMLFormat())) + : new XElement(_vif + XMLNames.Gear_MaxOutputShaftSpeed, gearEntry.MaxOutputShaftSpeed.AsRPM.ToXMLFormat(0)) ); gears.Add(currentGear); } - return new XElement(_vif + XMLNames.Gearbox_Gears, gears); + return new XElement(_vif + XMLNames.Gearbox_Gears, + new XAttribute(_xsi + XMLNames.XSIType, "IEPCGearsDeclarationType"), + gears); } @@ -82,7 +94,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF foreach (var voltageEntry in voltageData) { var voltage = new XElement(_vif + XMLNames.ElectricMachine_VoltageLevel, - new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageEntry.VoltageLevel.ToXMLFormat()), + new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageEntry.VoltageLevel.ToXMLFormat(0)), new XElement(_vif + XMLNames.ElectricMachine_ContinuousTorque, voltageEntry.ContinuousTorque.ToXMLFormat(2)), new XElement(_vif + XMLNames.ElectricMachine_TestSpeedContinuousTorque, voltageEntry.ContinuousTorqueSpeed.ToXMLFormat(2)), new XElement(_vif + XMLNames.ElectricMachine_OverloadTorque, voltageEntry.OverloadTorque.ToXMLFormat(2)), @@ -118,7 +130,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF maxTorqueCurveEntries.Add(element); } - return new XElement(XMLNames.MaxTorqueCurve, maxTorqueCurveEntries); + return new XElement(_vif + XMLNames.MaxTorqueCurve, maxTorqueCurveEntries); } private List<XElement> GetPowerMap(IList<IElectricMotorPowerMap> powerMapData) @@ -141,7 +153,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF } var powerEntry = new XElement(_vif + XMLNames.PowerMap, - new XAttribute(XMLNames.Gear_GearNumber_Attr, powerMapEntry.Gear), + new XAttribute("gear", powerMapEntry.Gear), entries); powerMaps.Add(powerEntry); @@ -162,7 +174,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var entry = new XElement(_vif + XMLNames.DragCurve_Entry, new XAttribute(XMLNames.DragCurve_OutShaftSpeed, outShaftSpeed.ToXMLFormat(2)), - new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque)); + new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque.ToXMLFormat(2))); entries.Add(entry); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs index 552e9eae4f..3b175196b5 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs @@ -22,20 +22,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var torque = inputData.JobInputData.Vehicle.Components.TorqueConverterInputData; if (torque == null) return null; - + return new XElement(_vif + XMLNames.Component_TorqueConverter, - new XElement(_vif + XMLNames.ComponentDataWrapper, + new XElement(_vif + XMLNames.ComponentDataWrapper, new XAttribute(_xsi + XMLNames.XSIType, "TorqueConverterDataVIFType"), - _vif + XMLNames.Component_Manufacturer, torque.Manufacturer, - _vif + XMLNames.Component_Model, torque.Model, - _vif + XMLNames.Component_CertificationMethod, torque.CertificationMethod.ToXMLFormat(), + new XElement(_vif + XMLNames.Component_Manufacturer, torque.Manufacturer), + new XElement(_vif + XMLNames.Component_Model, torque.Model), + new XElement(_vif + XMLNames.Component_CertificationMethod, + torque.CertificationMethod.ToXMLFormat()), torque.CertificationMethod == CertificationMethod.StandardValues ? null - : new XElement(_vif + XMLNames.Report_Component_CertificationNumber, torque.CertificationNumber), - _vif + XMLNames.Component_Date, XmlConvert.ToString(torque.Date, XmlDateTimeSerializationMode.Utc), - _vif + XMLNames.Component_AppVersion, torque.AppVersion, + : new XElement(_vif + XMLNames.Report_Component_CertificationNumber, + torque.CertificationNumber), + new XElement(_vif + XMLNames.Component_Date, + XmlConvert.ToString(torque.Date, XmlDateTimeSerializationMode.Utc)), + new XElement(_vif + XMLNames.Component_AppVersion, torque.AppVersion), GetCharacteristics(torque.TCData) - )); + )); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs index 428f981960..05ef87e541 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs @@ -25,6 +25,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF IXmlTypeWriter GetPevE3VehicleType(); IXmlTypeWriter GetPevE4VehicleType(); + IXmlTypeWriter GetPevIEPCVehicleType(); + + IXmlTypeWriter GetExemptedVehicleType(); + #endregion @@ -39,7 +43,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF IXmlTypeWriter GetPevE2ComponentVIFType(); IXmlTypeWriter GetPevE3ComponentVIFType(); IXmlTypeWriter GetPevE4ComponentVIFType(); - IXmlTypeWriter GetIepcComponentVIFType(); + IXmlTypeWriter GetPevIEPCComponentVIFType(); #endregion @@ -49,10 +53,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF IVIFFAdasType GetConventionalADASType(); IVIFFAdasType GetHEVADASType(); IVIFFAdasType GetPEVADASType(); + IVIFFAdasType GetIEPCADASType(); IXmlTypeWriter GetAngelDriveType(); IXmlTypeWriter GetAuxiliaryType(); IXmlTypeWriter GetAuxiliaryHevSType(); + + IXmlTypeWriter GetAuxiliaryIEPC_SType(); + IXmlTypeWriter GetAuxiliaryHevPType(); IXmlTypeWriter GetAuxiliaryIEPCType(); IXmlTypeWriter GetAuxiliaryPEVType(); @@ -85,6 +93,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF IReportOutputGroup GetHevSxVehicleParameterGroup(); IReportOutputGroup GetIepcVehicleParameterGroup(); IReportOutputGroup GetPevExVehicleParmeterGroup(); + IReportOutputGroup GetPevIEPCVehicleParmeterGroup(); IReportOutputGroup GetHevPxVehicleParameterGroup(); #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs index 00b5149586..93847c2dd6 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs @@ -31,9 +31,87 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF false, false))); + Bind<IXMLVehicleInformationFile>().To<HEV_Px_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.ParallelHybridVehicle, + ArchitectureID.UNKNOWN, + false, + false, + false))); + + Bind<IXMLVehicleInformationFile>().To<HEV_S2_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.SerialHybridVehicle, + ArchitectureID.S2, + false, + false, + false))); + + Bind<IXMLVehicleInformationFile>().To<HEV_S3_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.SerialHybridVehicle, + ArchitectureID.S3, + false, + false, + false))); + Bind<IXMLVehicleInformationFile>().To<HEV_S4_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.SerialHybridVehicle, + ArchitectureID.S4, + false, + false, + false))); + + Bind<IXMLVehicleInformationFile>().To<HEV_IEPC_S_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.SerialHybridVehicle, + ArchitectureID.S_IEPC, + false, + true, + false))); + + Bind<IXMLVehicleInformationFile>().To<PEV_E2_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.BatteryElectricVehicle, + ArchitectureID.E2, + false, + false, + false))); + + Bind<IXMLVehicleInformationFile>().To<PEV_E3_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.BatteryElectricVehicle, + ArchitectureID.E3, + false, + false, + false))); + + Bind<IXMLVehicleInformationFile>().To<PEV_E4_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.BatteryElectricVehicle, + ArchitectureID.E4, + false, + false, + false))); + + Bind<IXMLVehicleInformationFile>().To<PEV_IEPC_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.BatteryElectricVehicle, + ArchitectureID.E_IEPC, + false, + true, + false))); + + Bind<IXMLVehicleInformationFile>().To<Exempted_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke( + ToParams(VehicleCategoryHelper.PrimaryBus, + VectoSimulationJobType.ConventionalVehicle, + ArchitectureID.UNKNOWN, + true, + false, + false))); #region VehicleTypes - + Bind<IXmlTypeWriter>().To<ConventionalVehicleType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetConventionalVehicleType()); @@ -64,6 +142,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF Bind<IXmlTypeWriter>().To<PevE4VehicleType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevE4VehicleType()); + Bind<IXmlTypeWriter>().To<PevIEPCVehicleType>().When(AccessedViaVIFFactory) + .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevIEPCVehicleType()); + #endregion @@ -97,7 +178,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevE4ComponentVIFType()); Bind<IXmlTypeWriter>().To<IepcComponentVIFType>().When(AccessedViaVIFFactory) - .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetIepcComponentVIFType()); + .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevIEPCComponentVIFType()); #endregion @@ -129,7 +210,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF Bind<IReportOutputGroup>().To<PevExVehicleParameterGroup>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevExVehicleParmeterGroup()); - + + Bind<IReportOutputGroup>().To<PevIEPCVehicleParameterGroup>().When(AccessedViaVIFFactory) + .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevIEPCVehicleParmeterGroup()); + Bind<IReportOutputGroup>().To<HevPxVehicleParameterGroup>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetHevPxVehicleParameterGroup()); @@ -147,6 +231,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF Bind<IVIFFAdasType>().To<VIFPEVAdasType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPEVADASType()); + Bind<IVIFFAdasType>().To<VIFIEPCAdasType>().When(AccessedViaVIFFactory) + .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetIEPCADASType()); + Bind<IXmlTypeWriter>().To<VIFAngleDriveType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAngelDriveType()); @@ -156,6 +243,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF Bind<IXmlTypeWriter>().To<VIFAuxiliaryHevSType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAuxiliaryHevSType()); + Bind<IXmlTypeWriter>().To<VIFAuxiliaryIEPC_SType>().When(AccessedViaVIFFactory) + .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAuxiliaryIEPC_SType()); + Bind<IXmlTypeWriter>().To<VIFAuxiliaryHevPType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAuxiliaryHevPType()); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs index 25c5ce35c5..821164202c 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs @@ -7,7 +7,7 @@ using TUGraz.VectoCommon.InputData; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.VIFReport { - internal class VehicleInformationFile : AbstractVehicleInformationFile + internal abstract class VehicleInformationFile : AbstractVehicleInformationFile { private string _outputDataType; @@ -20,18 +20,118 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public override string OutputDataType => _outputDataType; + + + #endregion + } + + internal class Conventional_PrimaryBus_VIF : VehicleInformationFile + { + public Conventional_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _vifFactory.GetConventionalVehicleType().GetElement(inputData); } + } - #endregion + internal class HEV_Px_PrimaryBus_VIF : VehicleInformationFile + { + public HEV_Px_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetHevPxVehicleType().GetElement(inputData); + } } - internal class Conventional_PrimaryBus_VIF : VehicleInformationFile + internal class HEV_S2_PrimaryBus_VIF : VehicleInformationFile { - public Conventional_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + public HEV_S2_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetHevS2VehicleType().GetElement(inputData); + } + } + + internal class HEV_S3_PrimaryBus_VIF : VehicleInformationFile + { + public HEV_S3_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetHevS3VehicleType().GetElement(inputData); + } } + internal class HEV_S4_PrimaryBus_VIF : VehicleInformationFile + { + public HEV_S4_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetHevS4VehicleType().GetElement(inputData); + } + } + + internal class HEV_IEPC_S_PrimaryBus_VIF : VehicleInformationFile + { + public HEV_IEPC_S_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetHevIepcSVehicleType().GetElement(inputData); + } + } + + internal class PEV_E2_PrimaryBus_VIF : VehicleInformationFile + { + public PEV_E2_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetPevE2VehicleType().GetElement(inputData); + } + } + + internal class PEV_E3_PrimaryBus_VIF : VehicleInformationFile + { + public PEV_E3_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetPevE3VehicleType().GetElement(inputData); + } + } + + internal class PEV_E4_PrimaryBus_VIF : VehicleInformationFile + { + public PEV_E4_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetPevE4VehicleType().GetElement(inputData); + } + } + + internal class PEV_IEPC_PrimaryBus_VIF : VehicleInformationFile + { + public PEV_IEPC_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetPevIEPCVehicleType().GetElement(inputData); + } + } + + internal class Exempted_PrimaryBus_VIF : VehicleInformationFile + { + public Exempted_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { } + + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) + { + Vehicle = _vifFactory.GetExemptedVehicleType().GetElement(inputData); + } + } } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs index 7b0859b1c6..74e32ed277 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs @@ -50,7 +50,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement(_vif + XMLNames.ChassisConfiguration, vehicle.VehicleCategory.ToXMLFormat()), new XElement(_vif + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.ToXMLFormat()), new XElement(_vif + XMLNames.Vehicle_Articulated, vehicle.Articulated), - new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat()), + new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat(0)), }; return result; @@ -71,7 +71,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var result = new List<XElement> { new XElement(_vif + XMLNames.Vehicle_RetarderType, vehicle.Components.RetarderInputData.Type.ToXMLFormat()), - new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)), + vehicle.Components.RetarderInputData.Type.IsDedicatedComponent() + ? new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)) + : null, }; return result; } @@ -89,10 +91,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { var vehicle = inputData.JobInputData.Vehicle; - var result = new List<XElement> - { - new XElement(_vif + XMLNames.Vehicle_OvcHev, vehicle.Components.RetarderInputData.Type.ToXMLFormat()), - new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)), + var result = new List<XElement> { + new XElement(_vif + XMLNames.Vehicle_OvcHev, vehicle.OvcHev), + vehicle.OvcHev + ? new XElement(_vif + XMLNames.Vehicle_MaxChargingPower, vehicle.MaxChargingPower.ToXMLFormat(0)) + : null, }; return result; } @@ -124,7 +127,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat(0)), new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0)), new XElement(_vif + XMLNames.Vehicle_RetarderType, vehicle.Components.RetarderInputData.Type.ToXMLFormat()), - new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData.Ratio.ToXMLFormat(3)), + vehicle.Components.RetarderInputData.Type.IsDedicatedComponent() + ? new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)) + : null, new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()), new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle), _vifReportFactory.GetConventionalADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS), @@ -152,9 +157,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var result = new List<XElement>(); result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); - result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0))); result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); - result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat())); result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData)); @@ -182,9 +187,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var result = new List<XElement>(); result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); - result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0))); result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); - result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat())); result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData)); @@ -239,7 +244,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); - result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat())); result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData)); @@ -254,6 +259,35 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF #endregion } + public class PevIEPCVehicleParameterGroup : AbstractVIFGroupWriter + { + public PevIEPCVehicleParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement>(); + result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); + result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); + result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData)); + result.Add(_vifReportFactory.GetIEPCADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS)); + var motorTorqueLimits = _vifReportFactory.GetElectricMotorTorqueLimitsType().GetElement(inputData); + if (motorTorqueLimits != null) + result.Add(motorTorqueLimits); + + return result; + } + + #endregion + } + public class HevPxVehicleParameterGroup : AbstractVIFGroupWriter { public HevPxVehicleParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } @@ -268,7 +302,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); - result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0))); result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs index 13ee86f729..30566013c1 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs @@ -156,7 +156,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public override XElement GetElement(IDeclarationInputDataProvider inputData) { var vehicleData = _vifReportFactory.GetIepcVehicleParameterGroup().GetElements(inputData); - vehicleData.Add(_vifReportFactory.GetIepcComponentVIFType().GetElement(inputData)); + vehicleData.Add(_vifReportFactory.GetPevIEPCComponentVIFType().GetElement(inputData)); return new XElement(_vif + XMLNames.Component_Vehicle, new XAttribute(_xsi + XMLNames.XSIType, "IEPC_VehicleVIFType"), @@ -223,4 +223,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF #endregion } + + public class PevIEPCVehicleType : VehicleWriter + { + public PevIEPCVehicleType(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of VehicleWriter + + public override XElement GetElement(IDeclarationInputDataProvider inputData) + { + var vehicleData = _vifReportFactory.GetPevIEPCVehicleParmeterGroup().GetElements(inputData); + vehicleData.Add(_vifReportFactory.GetPevIEPCComponentVIFType().GetElement(inputData)); + + return new XElement(_vif + XMLNames.Component_Vehicle, + new XAttribute(_xsi + XMLNames.XSIType, "IEPC_VehicleVIFType"), + vehicleData); + } + + #endregion + } } diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd index ee8c7ab04e..75df0c239a 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd @@ -178,16 +178,8 @@ <xs:extension base="vif:AbstractREESSDataType"/> </xs:complexContent> </xs:complexType> - <xs:complexType name="AbstractCapacitorSystemDataType" abstract="true"> - <xs:complexContent> - <xs:extension base="vif:AbstractREESSDataType"/> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="AbstractElectricMachineSystemDataType" abstract="true"> - <xs:complexContent> - <xs:extension base="v1.0:VectoSimulationComponent"/> - </xs:complexContent> - </xs:complexType> + <xs:complexType name="AbstractCapacitorSystemDataType" abstract="true"/> + <xs:complexType name="AbstractElectricMachineSystemDataType" abstract="true"/> <xs:complexType name="AbstractElectricMachineSystemVoltageLevelType" abstract="true"/> <xs:complexType name="AbstractEngineDataVIFType" abstract="true"/> <xs:complexType name="AbstractIEPCGearsDeclarationType" abstract="true"/> @@ -195,11 +187,7 @@ <xs:attribute name="id" type="xs:NCName" use="required"/> </xs:complexType> <xs:complexType name="AbstractPrimaryVehicleType" abstract="true"/> - <xs:complexType name="AbstractREESSDataType" abstract="true"> - <xs:complexContent> - <xs:extension base="v1.0:VectoSimulationComponent"/> - </xs:complexContent> - </xs:complexType> + <xs:complexType name="AbstractREESSDataType" abstract="true"/> <xs:complexType name="AbstractTorqueConverterDataVIFType" abstract="true"/> <xs:complexType name="AbstractTransmissionDataVIFType" abstract="true"/> <xs:complexType name="AbstractTransmissionGearsVIFType" abstract="true"/> @@ -1020,13 +1008,6 @@ </xs:sequence> </xs:complexType> </xs:element> - <xs:element name="InternalResistance"> - <xs:complexType> - <xs:sequence> - <xs:element name="Entry" type="vif:BatterySystemInternalResistanceEntryType" minOccurs="2" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> <xs:element name="CurrentLimits"> <xs:complexType> <xs:sequence> @@ -1448,7 +1429,6 @@ <xs:complexType name="ElectricMachineSystemComponentDeclarationType"> <xs:sequence> <xs:element name="Data" type="vif:AbstractElectricMachineSystemDataType"/> - <xs:element name="Signature" type="v2.0:SignatureType"/> </xs:sequence> </xs:complexType> <xs:complexType name="ElectricMachineSystemMaxTorqueCurveType"> @@ -1500,7 +1480,7 @@ </xs:restriction> </xs:simpleType> </xs:element> - <xs:element name="VoltageLevel" type="vif:ElectricMachineSystemVoltageLevelMeasuredType" minOccurs="2" maxOccurs="unbounded"/> + <xs:element name="VoltageLevel" type="vif:ElectricMachineSystemVoltageLevelMeasuredType" maxOccurs="unbounded"/> <xs:element name="DragCurve"> <xs:complexType> <xs:sequence> @@ -1847,7 +1827,7 @@ </xs:annotation> </xs:element> <xs:group ref="vif:Vehicle_PrimaryBus_Retarder_ParametersSequenceGroup"/> - <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType" minOccurs="0"> <xs:annotation> <xs:documentation>P180 - enum</xs:documentation> </xs:annotation> @@ -2099,7 +2079,6 @@ <xs:complexType name="IEPCType"> <xs:sequence> <xs:element name="Data" type="vif:AbstractVIFIEPCDataType"/> - <xs:element name="Signature" type="v2.0:SignatureType"/> </xs:sequence> </xs:complexType> <xs:complexType name="ManufacturingStepType"> @@ -2202,7 +2181,6 @@ <xs:complexType> <xs:sequence> <xs:element name="Data" type="vif:AbstractBatterySystemDataType"/> - <xs:element name="Signature" type="v2.0:SignatureType"/> </xs:sequence> </xs:complexType> </xs:element> @@ -2235,7 +2213,6 @@ <xs:complexType name="REESSCapacitorType"> <xs:sequence> <xs:element name="Data" type="vif:AbstractCapacitorSystemDataType"/> - <xs:element name="Signature" type="v2.0:SignatureType"/> </xs:sequence> </xs:complexType> <xs:complexType name="ResultPrimaryVehicleType"> @@ -2486,10 +2463,8 @@ <xs:extension base="vif:AbstractVehicleComponentsHEV_Px_VIFType"> <xs:sequence> <xs:element name="Engine" type="vif:EngineComponentVIFType"/> - <xs:element name="IEPC" type="vif:IEPCType"/> - <xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/> - <xs:element name="ElectricMachineGEN" type="vif:ElectricMachineGENType"/> <xs:element name="ElectricMachine" type="vif:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/> <xs:element name="Transmission" type="vif:TransmissionComponentVIFType"/> <xs:element name="TorqueConverter" type="vif:TorqueConverterVIFType" minOccurs="0"/> <xs:element name="Angledrive" type="vif:AngledriveVIFType" minOccurs="0"/> @@ -2576,6 +2551,19 @@ </xs:extension> </xs:complexContent> </xs:complexType> + <xs:complexType name="Vehicle_PEV-IEPC_ComponentsVIFType"> + <xs:complexContent> + <xs:extension base="vif:AbstractVehicleComponentsIEPC_VIFType"> + <xs:sequence> + <xs:element name="IEPC" type="vif:IEPCType"/> + <xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/> + <xs:element name="Axlegear" type="vif:AxlegearComponentVIFType" minOccurs="0"/> + <xs:element name="AxleWheels" type="vif:AxleWheelsComponentVIFType"/> + <xs:element name="Auxiliaries" type="vif:IEPC_PrimaryAuxiliairesVIFType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> <xs:complexType name="VehicleExemptedPrimaryBusType"> <xs:complexContent> <xs:extension base="vif:AbstractPrimaryVehicleType"> @@ -2672,19 +2660,6 @@ </xs:extension> </xs:complexContent> </xs:complexType> - <xs:complexType name="Vehicle-IEPC_ComponentsVIFType"> - <xs:complexContent> - <xs:extension base="vif:AbstractVehicleComponentsIEPC_VIFType"> - <xs:sequence> - <xs:element name="IEPC" type="vif:IEPCType"/> - <xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/> - <xs:element name="Axlegear" type="vif:AxlegearComponentVIFType" minOccurs="0"/> - <xs:element name="AxleWheels" type="vif:AxleWheelsComponentVIFType"/> - <xs:element name="Auxiliaries" type="vif:IEPC_PrimaryAuxiliairesVIFType"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> <xs:simpleType name="CO2UnitType"> <xs:restriction base="xs:string"> <xs:enumeration value="g/km"/> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml new file mode 100644 index 0000000000..78174a72be --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml @@ -0,0 +1,362 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional --> + <v2.0:Entry gear="6" maxTorque="1800"/> + <v2.0:Entry gear="1" maxTorque="2500"/> + <v2.0:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine xsi:type="v2.0:EngineComponentDeclarationType"> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#ENG-gooZah3D"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>/qqS7iMvDm0MYurhsIRZTF5FeS+MNA2HnoS1P8SrSdA=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox xsi:type="v2.0:GearboxComponentDeclarationType"> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>8fsWE1AvinkI5UcWuU/vyx3X2kKjarP/qPC+Uon+aBE=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#tc-123xyz"> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>BpqbVEM5dAFXyIeZfvKBUhv+Oj4OU5R85aK9M4ylV+4=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive><!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>iVRxT+wETVrlCQhZMsiqRC1mKcw3a3KSeb1y5uhINQk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder><!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>xcfok6Uo1kvFefSRo+W/oMfEfS5BdTklBugAjby2DUQ=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>Ux2vo+s07pGr9XCbvNs/YbJcFaZClORRGXpP6Eyeze8=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>31300</FzISO> + </v2.0:Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>A/sq1ng4cqeOyauDUqUEnonRSPch3VCqZDX9Pf3tW1Q=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0063</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>z+KDXmc5MIezM6RVgfYax5J9Efi0ghciG2/wLLmWaBk=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="3" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <TyreClass>C1</TyreClass> + <FuelEfficiencyClass>A</FuelEfficiencyClass> + <RRCDeclared>0.0063</RRCDeclared> + <FzISO>31300</FzISO> + </v2.0:Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>z+KDXmc5MIezM6RVgfYax5J9Efi0ghciG2/wLLmWaBk=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SmartAlternator><!-- optional --> + <RatedCurrent>100</RatedCurrent> + <RatedVoltage>48</RatedVoltage> + </SmartAlternator> + <SmartAlternator><!-- optional --> + <RatedCurrent>50</RatedCurrent> + <RatedVoltage>48</RatedVoltage> + </SmartAlternator> + <Battery><!-- optional --> + <BatteryTechnology>li-ion battery - high power</BatteryTechnology> + <RatedCapacity>50</RatedCapacity> + <NominalVoltage>48</NominalVoltage> + </Battery> + <Capacitor><!-- optional --> + <CapacitorTechnology>with DCDC converter</CapacitorTechnology> + <RatedCapacitance>120</RatedCapacitance> + <RatedVoltage>30</RatedVoltage> + </Capacitor> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>false</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml index ac99245ae3..51e8fe3a5a 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml @@ -86,7 +86,7 @@ <BodyworkCode>CE</BodyworkCode> <LowEntry>true</LowEntry> <HeightIntegratedBody>2000</HeightIntegratedBody> - </vif0.1:Vehicle> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>0.7.5.2380-DEV</SimulationToolVersion> <Date>2021-08-24T09:29:02.5917498Z</Date> diff --git a/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs b/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs index 3336dd40e4..838196ad09 100644 --- a/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs +++ b/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs @@ -4,14 +4,15 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; -using System.Xml.XPath; using NUnit.Framework; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.OutputData.XML; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9.CustomerInformationFile; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Tests.XML.Reports { @@ -44,14 +45,15 @@ namespace TUGraz.VectoCore.Tests.XML.Reports out IMultistageBusInputDataProvider dataProvider) { Assert.IsFalse(string.IsNullOrEmpty(fileName)); - dataProvider = _xmlReader.CreateDeclaration(fileName) as IMultistageBusInputDataProvider; + var tmp = _xmlReader.CreateDeclaration(fileName); + dataProvider = tmp as IMultistageBusInputDataProvider; var arch = dataProvider.JobInputData.PrimaryVehicle.Vehicle.ArchitectureID; dataProvider.JobInputData.PrimaryVehicle.Vehicle.VehicleCategory.GetVehicleType(); // HEV/PEV - Sx/Px - var ihpc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components.ElectricMachines?.Entries)?.Count(electric => + var ihpc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components?.ElectricMachines?.Entries)?.Count(electric => electric.ElectricMachine.IHPCType != "None") > 0; - var iepc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components.IEPC != null); + var iepc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components?.IEPC != null); var report = _cifFactory.GetCustomerReport( dataProvider.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleCategory, dataProvider.JobInputData.JobType, @@ -69,23 +71,21 @@ namespace TUGraz.VectoCore.Tests.XML.Reports var report = GetCustomerReport(fileName, out var dataProvider) as ConventionalLorry_CIF; Assert.NotNull(report); report.InitializeVehicleData(dataProvider); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - report.GenerateReport(new XElement("Signature", "Dummy")); - - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } - [TestCase(HEV_Px_HeavyLorry)] public void HEV_Px_IHPC_LorryCIFTest(string fileName) { var report = GetCustomerReport(fileName, out var dataProvider) as HEV_PxLorry_CIF; Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -96,9 +96,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -109,9 +109,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -124,9 +124,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -137,9 +137,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -150,9 +150,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -162,9 +162,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports var report = GetCustomerReport(fileName, out var dataProvider) as PEV_E3_Lorry_CIF; Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } [TestCase(PEV_E4_HeavyLorry)] @@ -174,9 +174,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } [TestCase(PEV_IEPC_HeavyLorry)] @@ -186,9 +186,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -198,9 +198,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports var report = GetCustomerReport(fileName, out var dataProvider) as Exempted_Lorry_CIF; Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -212,9 +212,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports var report = GetCompletedBusCustomerReport(fileName, out var dataProvider) as Conventional_CompletedBusCIF; Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -226,9 +226,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports var report = GetCompletedBusCustomerReport(fileName, out var dataProvider) as Exempted_CompletedBusCIF; Assert.NotNull(report); report.InitializeVehicleData(dataProvider); - report.GenerateReport(new XElement("Signature", "Dummy")); + report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"))); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } diff --git a/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs b/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs index 9676409081..170821dab6 100644 --- a/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs +++ b/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs @@ -7,13 +7,11 @@ using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; using System.Xml.Schema; -using System.Xml.XPath; using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; using Ninject; using NUnit.Framework; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation; @@ -36,7 +34,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports public class MRF_CIF_WriterTestBase { - protected string outputBasePath = @"C:\Users\Harry\source\vecto\mrf_report_0_9"; + protected string outputBasePath; //@"C:\Users\Harry\source\vecto\mrf_report_0_9"; protected ISimulatorFactory _simulatorFactory; protected IOutputDataWriter _outputWriter; protected StandardKernel _kernel; @@ -94,9 +92,11 @@ namespace TUGraz.VectoCore.Tests.XML.Reports protected const string Conventional_CompletedBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_conventional_final_vif.VIF_Report_1.xml"; - protected const string Exempted_CompletedBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\ExemptedVehicles\exempted_completedBus_input_full.xml"; - public static bool ValidateAndPrint(XDocument document, string xsdPath = "../../../../VectoCore/Resources/XSD", Func<XDocument, XElement> elementSelector = null) + protected const string Exempted_CompletedBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_completed.VIF_Report_2.xml"; + //@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\ExemptedVehicles\exempted_completedBus_input_full.xml"; + + public static bool ValidateAndPrint(XDocument document, XmlDocumentType documentType) { var error = false; @@ -108,7 +108,10 @@ namespace TUGraz.VectoCore.Tests.XML.Reports stream.Flush(); stream.Seek(0, SeekOrigin.Begin); var validator = new XMLValidator(new XmlTextReader(stream)); - error = !validator.ValidateXML(XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport); + error = !validator.ValidateXML(documentType); + if (error) { + TestContext.WriteLine(validator.ValidationError); + } } finally { TestContext.WriteLine(document); } @@ -123,6 +126,10 @@ namespace TUGraz.VectoCore.Tests.XML.Reports { fileName = fileName + ".xml"; } + + if (!Directory.Exists(basePath)) { + Directory.CreateDirectory(basePath); + } var destPath = Path.Combine(basePath, fileName); using (var writer = new XmlTextWriter(destPath, Encoding.UTF8) { Formatting = Formatting.Indented }) { @@ -146,7 +153,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports _kernel = new StandardKernel( new VectoNinjectModule() ); - + outputBasePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "XMLReports_0.9"); } [SetUp] @@ -219,7 +226,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector:(document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -231,7 +238,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -243,7 +250,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -255,7 +262,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -267,7 +274,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -279,7 +286,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -291,7 +298,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -304,7 +311,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -316,7 +323,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -328,7 +335,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -340,7 +347,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -353,7 +360,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -365,7 +372,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -380,7 +387,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -393,7 +400,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -405,7 +412,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -417,7 +424,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -431,7 +438,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -444,7 +451,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -456,7 +463,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -471,7 +478,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -484,7 +491,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } @@ -496,7 +503,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports report.InitializeVehicleData(dataProvider); report.GenerateReport(); - Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); + Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report)); } diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs index e6f64bb85b..87c735b7e1 100644 --- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs @@ -508,7 +508,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(totalMass.SI<Kilogram>(), result.SimulationParameter.TotalVehicleMass); Assert.AreEqual(payload.SI<Kilogram>(), result.SimulationParameter.Payload); Assert.AreEqual(passenger, result.SimulationParameter.PassengerCount); - Assert.AreEqual(fuelMode, result.SimulationParameter.FuelMode); + //Assert.AreEqual(fuelMode, result.SimulationParameter.FuelMode); index++; } diff --git a/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml b/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml index b0bf83f452..7468105446 100644 --- a/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml +++ b/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml @@ -11,7 +11,6 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9 V:\VectoCore\ <SimulationParameters> <TotalVehicleMass unit="kg">17200</TotalVehicleMass> <Payload unit="kg">2600</Payload> - <!--<PassengerCount>13.75</PassengerCount>--><!-- only for buses --> </SimulationParameters> <Total> <VehiclePerformance> diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml index 769cf42ce5..7e9f2a7fd3 100644 --- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml +++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml @@ -11,7 +11,6 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <TotalVehicleMass unit="kg">15000</TotalVehicleMass> <Payload unit="kg">15000</Payload> <PassengerCount>2</PassengerCount> - <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="NG CI"> <EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption> diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml index 92593e95b5..66f32c7cc0 100644 --- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml +++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml @@ -10,7 +10,6 @@ xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xs <TotalVehicleMass unit="kg">15000</TotalVehicleMass> <Payload unit="kg">15000</Payload> <PassengerCount>2</PassengerCount> - <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <OVCMode type="charge depleting"> <Fuel type="NG CI"> diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml index 8bc10de87c..e849647bcd 100644 --- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml +++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml @@ -10,7 +10,6 @@ xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xs <TotalVehicleMass unit="kg">15000</TotalVehicleMass> <Payload unit="kg">15000</Payload> <PassengerCount>2</PassengerCount> - <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <ElectricEnergyConsumption> <EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption> diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml index fa303a1b49..6a96057869 100644 --- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml +++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml @@ -10,7 +10,6 @@ xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xs <TotalVehicleMass unit="kg">15000</TotalVehicleMass> <Payload unit="kg">15000</Payload> <PassengerCount>2</PassengerCount> - <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="NG CI"> <EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption> diff --git a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs index e1b7072240..2e8c4a74eb 100644 --- a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs +++ b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs @@ -106,6 +106,16 @@ namespace TUGraz.VectoMockup.Ninject return _vifReportFactoryImplementation.GetPevE4VehicleType(); } + public IXmlTypeWriter GetPevIEPCVehicleType() + { + return _vifReportFactoryImplementation.GetPevIEPCVehicleType(); + } + + public IXmlTypeWriter GetExemptedVehicleType() + { + return _vifReportFactoryImplementation.GetExemptedVehicleType(); + } + public IXmlTypeWriter GetConventionalComponentType() { return _vifReportFactoryImplementation.GetConventionalComponentType(); @@ -151,9 +161,9 @@ namespace TUGraz.VectoMockup.Ninject return _vifReportFactoryImplementation.GetPevE4ComponentVIFType(); } - public IXmlTypeWriter GetIepcComponentVIFType() + public IXmlTypeWriter GetPevIEPCComponentVIFType() { - return _vifReportFactoryImplementation.GetIepcComponentVIFType(); + return _vifReportFactoryImplementation.GetPevIEPCComponentVIFType(); } public IVIFFAdasType GetConventionalADASType() @@ -171,6 +181,11 @@ namespace TUGraz.VectoMockup.Ninject return _vifReportFactoryImplementation.GetPEVADASType(); } + public IVIFFAdasType GetIEPCADASType() + { + return _vifReportFactoryImplementation.GetIEPCADASType(); + } + public IXmlTypeWriter GetTorqueConvertType() { return _vifReportFactoryImplementation.GetTorqueConvertType(); @@ -236,6 +251,11 @@ namespace TUGraz.VectoMockup.Ninject return _vifReportFactoryImplementation.GetPevExVehicleParmeterGroup(); } + public IReportOutputGroup GetPevIEPCVehicleParmeterGroup() + { + return _vifReportFactoryImplementation.GetPevIEPCVehicleParmeterGroup(); + } + public IReportOutputGroup GetHevPxVehicleParameterGroup() { return _vifReportFactoryImplementation.GetHevPxVehicleParameterGroup(); @@ -256,6 +276,11 @@ namespace TUGraz.VectoMockup.Ninject return _vifReportFactoryImplementation.GetAuxiliaryHevSType(); } + public IXmlTypeWriter GetAuxiliaryIEPC_SType() + { + return _vifReportFactoryImplementation.GetAuxiliaryIEPC_SType(); + } + public IXmlTypeWriter GetAuxiliaryHevPType() { return _vifReportFactoryImplementation.GetAuxiliaryHevPType(); diff --git a/VectoMockup/VectoMockupTest/MockUpVectoTest.cs b/VectoMockup/VectoMockupTest/MockUpVectoTest.cs index 70ee3f8c60..da02604721 100644 --- a/VectoMockup/VectoMockupTest/MockUpVectoTest.cs +++ b/VectoMockup/VectoMockupTest/MockUpVectoTest.cs @@ -20,6 +20,7 @@ using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.XML.Reports; +using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType; namespace VectoMockupTest { @@ -69,6 +70,8 @@ namespace VectoMockupTest protected const string Conventional_PrimaryBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\Conventional_primaryBus_AMT.xml"; + protected const string Conventional_PrimaryBus_Tyres = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\Conventional_primaryBus_AMT_DifferentTyres.xml"; protected const string HEV_Px_IHPC_PrimaryBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\HEV_primaryBus_AMT_Px.xml"; protected const string HEV_S2_PrimaryBus = @@ -220,11 +223,12 @@ namespace VectoMockupTest jobContainer.WaitFinished(); CheckFileExists(fileWriter); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid"); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid"); } [TestCase(Conventional_PrimaryBus, TestName = "ConventionalPrimaryBus")] + [TestCase(Conventional_PrimaryBus_Tyres, TestName = "ConventionalPrimaryBus Tyres")] [TestCase(HEV_IEPC_S_PrimaryBus, TestName="HEV_IEPC_S_PrimaryBus")] [TestCase(HEV_Px_IHPC_PrimaryBus, TestName="HEV_Px_PrimaryBus")] [TestCase(HEV_S2_PrimaryBus, TestName="HEV_S2_PrimaryBus")] @@ -249,8 +253,8 @@ namespace VectoMockupTest jobContainer.Execute(false); jobContainer.WaitFinished(); CheckFileExists(fileWriter, checkCif:false, checkPrimaryReport:true); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLPrimaryVehicleReportName), XsdPath), "VIF invalid" ); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XsdPath), "MRF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLPrimaryVehicleReportName), XmlDocumentType.MultistepOutputData), "VIF invalid" ); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid"); } @@ -409,8 +413,8 @@ namespace VectoMockupTest jobContainer.WaitFinished(); CheckFileExists(fileWriter); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid"); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid"); } [TestCase(@"TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/Tractor_4x2_vehicle-class-5_5_t_0.xml", TestName="Schema10Test1")] @@ -438,8 +442,8 @@ namespace VectoMockupTest jobContainer.WaitFinished(); CheckFileExists(fileWriter); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid"); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid"); } [TestCase(@"TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/Tractor_4x2_vehicle-class-5_5_t_0.xml", TestName="Schema20Test1")] @@ -467,8 +471,8 @@ namespace VectoMockupTest jobContainer.WaitFinished(); CheckFileExists(fileWriter); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid"); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid"); } @@ -500,8 +504,8 @@ namespace VectoMockupTest jobContainer.WaitFinished(); CheckFileExists(fileWriter); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XsdPath), "MRF invalid"); - Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XsdPath), "CIF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid"); + Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid"); } [TestCase("TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/ExemptedVehicles/exempted_completedBus_input_full.xml", @@ -561,8 +565,8 @@ namespace VectoMockupTest checkMrf:checkMrf, checkPrimaryMrf:checkPrimaryMrf, checkPrimaryReport:checkPrimaryReport); - if(checkMrf) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XsdPath), "MRF invalid"); - if(checkCif) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XsdPath), "CIF invalid"); + if(checkMrf) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid"); + if(checkCif) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid"); } } } -- GitLab