diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs index 03624cdff0341082190f8abb33286e0a69fd24a9..dbf110ae2245df035c2951433021b0d21131f1dd 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs @@ -40,15 +40,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { protected ShiftStrategyParameters _gearshiftData; protected AbstractDeclarationVectoRunDataFactory( - IDeclarationInputDataProvider dataProvider, IDeclarationReport report) + IDeclarationInputDataProvider dataProvider, IDeclarationReport report, bool checkJobType = true) { InputDataProvider = dataProvider; - - //if (dataProvider.JobInputData.JobType.IsOneOf(BatteryElectricVehicle, ParallelHybridVehicle, SerialHybridVehicle)) - //{ - // throw new VectoSimulationException("Electric and Hybrid Vehicles are not supported in Declaration Mode. Aborting Simulation."); - //} + if (checkJobType) { + if (dataProvider.JobInputData.JobType.IsOneOf(BatteryElectricVehicle, ParallelHybridVehicle, SerialHybridVehicle)) + { + throw new VectoSimulationException("Electric and Hybrid Vehicles are not supported in Declaration Mode. Aborting Simulation."); + } + } + Report = report; _allowVocational = true; diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs index d07214774fe8ad549d74b8855be47d178cf83cd4..7d3b407d78b71369bcbd04a44c8af99b5fb3a642 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs @@ -52,7 +52,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl DeclarationDataAdapterHeavyLorry _dao = new DeclarationDataAdapterHeavyLorry(); internal DeclarationModeTruckVectoRunDataFactory( - IDeclarationInputDataProvider dataProvider, IDeclarationReport report) : base(dataProvider, report) + IDeclarationInputDataProvider dataProvider, IDeclarationReport report, bool checkJobType = true) : base(dataProvider, report, checkJobType) { } #region Overrides of AbstractDeclarationVectoRunDataFactory diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs index 7728b155999883bd8a89ca49dac495f2ed9921dd..5a406fe213e88963e196373e8a1e514385417dc4 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs @@ -3,10 +3,54 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9; namespace TUGraz.VectoCore.InputData.Reader.Impl.MockupRunDataFactories { - internal class DeclarationModeMockupTruckVectoRunDataFactory + public class DeclarationModeMockupTruckVectoRunDataFactory : DeclarationModeTruckVectoRunDataFactory { - } + public DeclarationModeMockupTruckVectoRunDataFactory(IDeclarationInputDataProvider dataProvider, + IDeclarationReport report) : base(dataProvider, report, false) + { + + } + + #region Overrides of AbstractDeclarationVectoRunDataFactory + + protected override IDeclarationDataAdapter DataAdapter { get; } + protected override IEnumerable<VectoRunData> GetNextRun() + { + throw new NotImplementedException(); + } + + + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission, + KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading) + { + return new VectoRunData() { + VehicleData = new VehicleData() { + InputData = vehicle, + }, + Mission = mission, + + }; + } + + + protected override void Initialize() + { + _segment = GetSegment(InputDataProvider.JobInputData.Vehicle); + + } + + #endregion + } } diff --git a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryFactory.cs b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryFactory.cs index 87a072b22a81d8ac97ce8c6d574242561214baaf..91774d2f9ce15544141be2dd4fe08fef72d25840 100644 --- a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryFactory.cs @@ -3,6 +3,7 @@ using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.Reader.Impl; +using TUGraz.VectoCore.InputData.Reader.Impl.MockupRunDataFactories; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.OutputData; @@ -46,7 +47,7 @@ namespace TUGraz.VectoCore.InputData.Reader var vehicleCategory = declDataProvider.JobInputData.Vehicle.VehicleCategory; if (vehicleCategory.IsLorry()) { - return new DeclarationModeTruckVectoRunDataFactory(declDataProvider, report); + return new DeclarationModeMockupTruckVectoRunDataFactory(declDataProvider, report); } if (vehicleCategory.IsBus()) diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs index ad95a11bea40adcef0ae56fb10791115b9e70ed1..8d17afdcd5b81951e14a8ef34a79365a2a00e515 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs @@ -7,13 +7,24 @@ using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.Reader.Impl; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; namespace TUGraz.VectoCore.OutputData.XML { class XMLDeclarationReportFactory : IXMLDeclarationReportFactory { + private readonly IManufacturerReportFactory _mrfFactory; + private readonly ICustomerInformationFileFactory _cifFactory; + #region Implementation of IXMLDeclarationReportFactory + + public XMLDeclarationReportFactory(IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory) + { + _mrfFactory = mrfFactory; + _cifFactory = cifFactory; + } public IDeclarationReport CreateReport(IInputDataProvider input, IOutputDataWriter outputWriter) { switch (input) { @@ -71,7 +82,7 @@ namespace TUGraz.VectoCore.OutputData.XML var vehicleCategory = declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory; if (vehicleCategory.IsLorry()) { - return new XMLDeclarationReport(outputDataWriter); + return new XMLDeclarationReport09(outputDataWriter, _mrfFactory, _cifFactory); } if (vehicleCategory.IsBus()) diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs new file mode 100644 index 0000000000000000000000000000000000000000..a238b5905bc418334736854187e795c30928e239 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs @@ -0,0 +1,68 @@ +using System.Collections.Generic; +using System.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9.CIFWriter; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; + +namespace TUGraz.VectoCore.OutputData.XML +{ + public class XMLDeclarationReport09 : IDeclarationReport + { + private readonly IReportWriter _writer; + private readonly IManufacturerReportFactory _mrfFactory; + private readonly ICustomerInformationFileFactory _cifFactory; + + private IXMLManufacturerReport _manufacturerReport; + private IXMLCustomerReport _customerReport; + + #region Implementation of IDeclarationReport + + public XMLDeclarationReport09(IReportWriter writer, IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory) + { + _writer = writer; + _mrfFactory = mrfFactory; + _cifFactory = cifFactory; + } + + public void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) + { + var vehicleData = modelData.VehicleData.InputData; + var iepc = vehicleData.Components.IEPC != null; + var ihpc = + vehicleData.Components.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0; + + _manufacturerReport = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory, + vehicleData.VehicleType, + vehicleData.ArchitectureID, + vehicleData.ExemptedVehicle, + iepc, + ihpc); + _customerReport = _cifFactory.GetCustomerReport(vehicleData.VehicleCategory, + vehicleData.VehicleType, + vehicleData.ArchitectureID, + vehicleData.ExemptedVehicle, + iepc, + ihpc); + } + + public void PrepareResult(LoadingType loading, Mission mission, int fuelMode, VectoRunData runData) + { + throw new System.NotImplementedException(); + } + + public void AddResult(LoadingType loadingType, Mission mission, int fuelMode, VectoRunData runData, + IModalDataContainer modData) + { + throw new System.NotImplementedException(); + } + + + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs b/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs index 4a2ef2dd60b10b00310eac8e91f54a2121494d56..6ef340588f59e19aee5ccf8cb93d9ae3f140a67e 100644 --- a/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs +++ b/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs @@ -118,7 +118,7 @@ namespace TUGraz.VectoCore.Tests.Integration var jobContainer = new JobContainer(sumWriter); _simulatorFactory = - _simFactoryFactory.Factory(ExecutionMode.Declaration, inputProvider, fileWriter, true); + _simFactoryFactory.Factory(ExecutionMode.Declaration, inputProvider, fileWriter, null, null, true); _simulatorFactory.MockUpRun = true; jobContainer.AddRuns(_simulatorFactory);