diff --git a/VectoCommon/VectoCommon/Models/FuelType.cs b/VectoCommon/VectoCommon/Models/FuelType.cs index 63ac267e44b6795a5666a16d02bd64ea36c3c781..8b13eab40ea137227113fe157f6f82b8a5d96bed 100644 --- a/VectoCommon/VectoCommon/Models/FuelType.cs +++ b/VectoCommon/VectoCommon/Models/FuelType.cs @@ -74,5 +74,16 @@ namespace TUGraz.VectoCommon.Models { return ftype.GetLabel(); } + + public static bool IsGaseous(this FuelType ftype) + { + switch (ftype) { + case (FuelType.NGPI): + case (FuelType.NGCI): + return true; + default: + return false; + } + } } } \ No newline at end of file diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index df5e7ba1f40c0ee9676e350dadcc76d464021ba0..67d02bebf3fc5ed97b9657f73359d720a4805daa 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -19,7 +19,7 @@ namespace TUGraz.VectoCommon.Resources { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class XMLNames { @@ -1473,6 +1473,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to ConventionalLorryOutputType. + /// </summary> + public static string CIF_OutputDataType_ConventionalLorryOutputType { + get { + return ResourceManager.GetString("CIF_OutputDataType_ConventionalLorryOutputType", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to ADC. /// </summary> @@ -3363,6 +3372,24 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to ConventionalLorryManufacturerOutputDataType. + /// </summary> + public static string MRF_OutputDataType_ConventionalLorryManufacturerOutputDataType { + get { + return ResourceManager.GetString("MRF_OutputDataType_ConventionalLorryManufacturerOutputDataType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ConventionalPrimaryBusManufacturerOutputDataType. + /// </summary> + public static string MRF_OutputDataType_ConventionalPrimaryBusManufacturerOutputDataType { + get { + return ResourceManager.GetString("MRF_OutputDataType_ConventionalPrimaryBusManufacturerOutputDataType", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to PowerMap. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index fd22bdae3924c9030298629d0a4e65ae1ae01cc1..7a4170fa62f51051c411135ca4f8c30a2b2afbd6 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -1911,4 +1911,13 @@ <data name="REESS" xml:space="preserve"> <value>ElectricEnergyStorage</value> </data> +<data name="MRF_OutputDataType_ConventionalLorryManufacturerOutputDataType" xml:space="preserve"> + <value>ConventionalLorryManufacturerOutputDataType</value> +</data> +<data name="MRF_OutputDataType_ConventionalPrimaryBusManufacturerOutputDataType" xml:space="preserve"> + <value>ConventionalPrimaryBusManufacturerOutputDataType</value> +</data> +<data name="CIF_OutputDataType_ConventionalLorryOutputType" xml:space="preserve"> + <value>ConventionalLorryOutputType</value> +</data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs index 8939c26cbafce65569e4c0da2ed283847b6f6e6e..dbf110ae2245df035c2951433021b0d21131f1dd 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs @@ -139,7 +139,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { fuels = vehicle.Components.EngineInputData.EngineModes.Select(x => x.Fuels.Select(f => DeclarationData.FuelData.Lookup(f.FuelType, vehicle.TankSystem)).ToList()) .ToList(); } - Report.InitializeReport(powertrainConfig, fuels, InputDataProvider); + Report.InitializeReport(powertrainConfig, fuels); } protected virtual PTOData CreateDefaultPTOData() diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs index 7d3b407d78b71369bcbd04a44c8af99b5fb3a642..f303a538b11f90c4927934c31117b337b5fd2406 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs @@ -180,6 +180,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl InputDataHash = InputDataProvider.XMLHash, SimulationType = SimulationType.DistanceCycle, GearshiftParameters = _gearshiftData, + InputData = InputDataProvider }; simulationRunData.EngineData.FuelMode = modeIdx; simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs index 6d61217a48f786a018aa2814177743752e0bd3fc..ad832920b76964dfba55291717a924dc7fbb7824 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/MockupRunDataFactories/DeclarationModeMockupTruckVectoRunDataFactory.cs @@ -13,6 +13,7 @@ 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; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9; namespace TUGraz.VectoCore.InputData.Reader.Impl.MockupRunDataFactories @@ -22,7 +23,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.MockupRunDataFactories public DeclarationModeMockupTruckVectoRunDataFactory(IDeclarationInputDataProvider dataProvider, IDeclarationReport report) : base(dataProvider, report, false) { - + if (report is IMockupReport mockupReport) { + mockupReport.Mockup = true; + } } #region Overrides of AbstractDeclarationVectoRunDataFactory @@ -40,9 +43,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.MockupRunDataFactories protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading) { + VectoRunData runData; if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) { - return new VectoRunData + runData = new VectoRunData { Exempted = true, Report = Report, @@ -50,22 +54,28 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.MockupRunDataFactories VehicleData = CreateMockupVehicleData(vehicle), InputDataHash = InputDataProvider.XMLHash }; + } else { + var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + runData = new VectoRunData() + { + Loading = loading.Key, + Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()), + ExecutionMode = ExecutionMode.Declaration, + Report = Report, + Mission = mission, + SimulationType = SimulationType.DistanceCycle, + VehicleData = CreateMockupVehicleData(vehicle), + EngineData = CreateMockupEngineData(vehicle, modeIdx), + + }; } - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + runData.InputData = InputDataProvider; + + return runData; + - return new VectoRunData() { - Loading = loading.Key, - Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()), - ExecutionMode = ExecutionMode.Declaration, - Report = Report, - Mission = mission, - SimulationType = SimulationType.DistanceCycle, - VehicleData = CreateMockupVehicleData(vehicle), - EngineData = CreateMockupEngineData(vehicle, modeIdx), - - }; } diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index 14e0216082301ea06f305e2be208d0d3813f34c9..fa57a3e5f78949c943349866d08c342594988d13 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -157,6 +157,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [JsonIgnore] public IMultistageVIFInputData MultistageVIFInputData { get; internal set; } + [JsonIgnore] + public IDeclarationInputDataProvider InputData { get; internal set; } + public class AuxData { // ReSharper disable once InconsistentNaming diff --git a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs index 9682c1e447a6b34c08319f2e6c91bd9c512b3b3b..216be6c25d0a0c5efdc444b8ace49d7c6da4e8c8 100644 --- a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs @@ -52,7 +52,6 @@ namespace TUGraz.VectoCore.Models.Simulation bool CreateFollowUpSimulatorFactory { get; set; } - bool MockUpRun { get; set; } /// <summary> /// Creates powertrain and initializes it with the component's data. diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs index 625e02bdd95531cc9fb95c7f32231ac271a081a3..2dcc3433a66f52a0e8f0e5b40a48be413e3f26c4 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs @@ -72,7 +72,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory protected bool _simulate = true; //TODO: set with preprocessor directive remove from interface - public bool MockUpRun { get; set; } = true; + public static bool MockUpRun { get; set; } = false; public ISimulatorFactory FollowUpSimulatorFactory diff --git a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs index df0140a393c1552c6d180ce2a4dde0b55aacd768..20cce3d9efe1c6cc84bd5e73e4c854950c63ff2d 100644 --- a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs +++ b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs @@ -68,8 +68,7 @@ namespace TUGraz.VectoCore.Models.Simulation { #region Implementation of IDeclarationReport - public void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null) + public void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { } @@ -93,8 +92,7 @@ namespace TUGraz.VectoCore.Models.Simulation { #region Implementation of IDeclarationReport - public void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null) + public void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { } diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs index ec58eca4b01803b90bdb16e8f0409133b87e21b3..3aeb1536c52b7d2a9368df914bd1bbc29d44af6f 100644 --- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs @@ -51,8 +51,7 @@ namespace TUGraz.VectoCore.OutputData * This methodd is called once befor creating the simulation runs with a temporary * VectoRunData instance */ - void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null); + void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes); /** * called when creating the simulation run (before starting the simulations) @@ -210,7 +209,6 @@ namespace TUGraz.VectoCore.OutputData protected abstract void WriteResult(T result); - public abstract void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null); + public abstract void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes); } } diff --git a/VectoCore/VectoCore/OutputData/Mockup/MockupModalDataContainer.cs b/VectoCore/VectoCore/OutputData/Mockup/MockupModalDataContainer.cs new file mode 100644 index 0000000000000000000000000000000000000000..67861f93fd87ea7f74b9e0527e9cad285d555117 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/Mockup/MockupModalDataContainer.cs @@ -0,0 +1,279 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; + +namespace TUGraz.VectoCore.OutputData.Mockup +{ + + //public void Run() + //{ + // if (!FoundPreviousResults) + // { + // (GetContainer().ModalData as ModalDataContainer).ModalDataContainerFinished += DummyRun_ModalDataContainerFinished; + // _run.Run(); + // } + // else + // { + // //TODO HM + // Log.Warn($"[DEV ONLY!] Using mod data: {_dummyFilePath}"); + + // var modDataContainer = GetContainer().ModalData as ModalDataContainer; + // modDataContainer.ReadDataFromXml(_dummyFilePath); + // modDataContainer.Finish(VectoRun.Status.Success); + // } + + + //} + + //private void DummyRun_ModalDataContainerFinished(object sender, ModalDataContainer.ModalDataContainerFinishedEventArgs e) + //{ + // if (FinishedWithoutErrors) + // { + // e.DataOnFinish.WriteXml(_dummyFilePath, false); + // Log.Warn($"[DEV ONLY!] Data written to {_dummyFilePath}:"); + // } + //} + internal class MockupModalDataContainer : IModalDataContainer + { + private IModalDataContainer _modalDataContainerImplementation; + + public MockupModalDataContainer(IModalDataContainer modalDataContainer) + { + _modalDataContainerImplementation = modalDataContainer; + + } + + #region MockupImplementation + + public Second Duration => Second.Create(60*60*1); + public Meter Distance => Meter.Create(100 * 1000); + + + #endregion + + + #region Implementation of IModalDataContainer + + public object this[ModalResultField key] + { + get => _modalDataContainerImplementation[key]; + set => _modalDataContainerImplementation[key] = value; + } + + public object this[ModalResultField key, IFuelProperties fuel] + { + get => _modalDataContainerImplementation[key, fuel]; + set => _modalDataContainerImplementation[key, fuel] = value; + } + + public object this[ModalResultField key, PowertrainPosition pos] + { + get => _modalDataContainerImplementation[key, pos]; + set => _modalDataContainerImplementation[key, pos] = value; + } + + public object this[ModalResultField key, int? pos] + { + get => _modalDataContainerImplementation[key, pos]; + set => _modalDataContainerImplementation[key, pos] = value; + } + + public object this[string auxId] + { + get => _modalDataContainerImplementation[auxId]; + set => _modalDataContainerImplementation[auxId] = value; + } + + public void CommitSimulationStep() + { + _modalDataContainerImplementation.CommitSimulationStep(); + } + + public IList<IFuelProperties> FuelData => _modalDataContainerImplementation.FuelData; + + public VectoRun.Status RunStatus => _modalDataContainerImplementation.RunStatus; + + public string Error => _modalDataContainerImplementation.Error; + + public string StackTrace => _modalDataContainerImplementation.StackTrace; + + public IEnumerable<T> GetValues<T>(ModalResultField key) + { + return _modalDataContainerImplementation.GetValues<T>(key); + } + + public IEnumerable<T> GetValues<T>(DataColumn col) + { + return _modalDataContainerImplementation.GetValues<T>(col); + } + + public IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc) + { + return _modalDataContainerImplementation.GetValues(selectorFunc); + } + + public Dictionary<string, DataColumn> Auxiliaries => _modalDataContainerImplementation.Auxiliaries; + + public T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T> + { + return _modalDataContainerImplementation.TimeIntegral<T>(field, filter); + } + + public T TimeIntegral<T>(string field, Func<SI, bool> filter = null) where T : SIBase<T> + { + return _modalDataContainerImplementation.TimeIntegral<T>(field, filter); + } + + public void SetDataValue(string fieldName, object value) + { + _modalDataContainerImplementation.SetDataValue(fieldName, value); + } + + public void AddAuxiliary(string id, string columnName = null) + { + _modalDataContainerImplementation.AddAuxiliary(id, columnName); + } + + public void Finish(VectoRun.Status runStatus, Exception exception = null) + { + _modalDataContainerImplementation.Finish(runStatus, exception); + } + + public void FinishSimulation() + { + _modalDataContainerImplementation.FinishSimulation(); + } + + public string GetColumnName(IFuelProperties fuelData, ModalResultField mrf) + { + return _modalDataContainerImplementation.GetColumnName(fuelData, mrf); + } + + public void Reset() + { + _modalDataContainerImplementation.Reset(); + } + + + + public Func<Second, Joule, Joule> AuxHeaterDemandCalc + { + get => _modalDataContainerImplementation.AuxHeaterDemandCalc; + set => _modalDataContainerImplementation.AuxHeaterDemandCalc = value; + } + + public KilogramPerWattSecond EngineLineCorrectionFactor(IFuelProperties fuel) + { + return _modalDataContainerImplementation.EngineLineCorrectionFactor(fuel); + } + + public void CalculateAggregateValues() + { + _modalDataContainerImplementation.CalculateAggregateValues(); + } + + public void AddElectricMotor(PowertrainPosition pos) + { + _modalDataContainerImplementation.AddElectricMotor(pos); + } + + public KilogramPerWattSecond VehicleLineSlope(IFuelProperties fuel) + { + return _modalDataContainerImplementation.VehicleLineSlope(fuel); + } + + public bool HasCombustionEngine => _modalDataContainerImplementation.HasCombustionEngine; + + public WattSecond TotalElectricMotorWorkDrive(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.TotalElectricMotorWorkDrive(emPos); + } + + public WattSecond TotalElectricMotorWorkRecuperate(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.TotalElectricMotorWorkRecuperate(emPos); + } + + public WattSecond TotalElectricMotorMotWorkDrive(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.TotalElectricMotorMotWorkDrive(emPos); + } + + public WattSecond TotalElectricMotorMotWorkRecuperate(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.TotalElectricMotorMotWorkRecuperate(emPos); + } + + public PerSecond ElectricMotorAverageSpeed(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorAverageSpeed(emPos); + } + + public double ElectricMotorEfficiencyDrive(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorEfficiencyDrive(emPos); + } + + public double ElectricMotorEfficiencyGenerate(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorEfficiencyGenerate(emPos); + } + + public double ElectricMotorMotEfficiencyDrive(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorMotEfficiencyDrive(emPos); + } + + public double ElectricMotorMotEfficiencyGenerate(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorMotEfficiencyGenerate(emPos); + } + + public WattSecond ElectricMotorOffLosses(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorOffLosses(emPos); + } + + public WattSecond ElectricMotorLosses(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorLosses(emPos); + } + + public WattSecond ElectricMotorMotLosses(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorMotLosses(emPos); + } + + public WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos) + { + return _modalDataContainerImplementation.ElectricMotorTransmissionLosses(emPos); + } + + public double REESSStartSoC() + { + return _modalDataContainerImplementation.REESSStartSoC(); + } + + public double REESSEndSoC() + { + return _modalDataContainerImplementation.REESSEndSoC(); + } + + public WattSecond REESSLoss() + { + return _modalDataContainerImplementation.REESSLoss(); + } + + public ICorrectedModalData CorrectedModalData => _modalDataContainerImplementation.CorrectedModalData; + + #endregion + } +} 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 8a890e00c50fc8c27eb8f16e29944092b7df82cb..c8989250e9e0e89669ee7529eb023c305ac75002 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs @@ -8,14 +8,21 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9 { - public abstract class AbstractCustomerReport : IXMLCustomerReport + public abstract class AbstractCustomerReport : IXMLCustomerReport, IXMLMockupReport { protected readonly ICustomerInformationFileFactory _cifFactory; protected XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); + public static XNamespace Cif => XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.9"); protected XElement Vehicle { get; set; } + protected XElement Results { get; set; } + + protected abstract string OutputDataType { get; } protected AbstractCustomerReport(ICustomerInformationFileFactory cifFactory) { @@ -29,18 +36,37 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { - throw new NotImplementedException(); + InitializeVehicleData(modelData.InputData); + Results = new XElement(Cif + "Results"); } public XDocument Report { get; protected set; } + + private List<XMLDeclarationReport.ResultEntry> results = new List<XMLDeclarationReport.ResultEntry>(); public void WriteResult(XMLDeclarationReport.ResultEntry resultValue) { - throw new NotImplementedException(); + results.Add(resultValue); + } public void GenerateReport(XElement resultSignature) { - throw new NotImplementedException(); + Report = new XDocument(new XElement(Cif + "VectoOutput", + new XAttribute("xmlns", Cif), + new XAttribute(XNamespace.Xmlns + "xsi", xsi), + new XAttribute(XNamespace.Xmlns + "mrf", LorryManufacturerReportBase.Mrf), + new XAttribute(xsi + "type", $"{OutputDataType}"), + Vehicle, + Results)); + } + + #endregion + + #region Implementation of IXMLMockupReport + + public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue) + { + Results.Add(MockupResultReader.GetCIFMockupResult(OutputDataType, resultValue, Cif + "Result")); } #endregion 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 5595d6b315bee91f9674a88f987299c08507f1cc..8aa2511c5908b262f8f1f6a81787de7ee091aa95 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 @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport; @@ -32,6 +33,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation #region LorryCIF public class ConventionalLorry_CIF : CustomerInformationFile { + protected override string OutputDataType => XMLNames.CIF_OutputDataType_ConventionalLorryOutputType; public ConventionalLorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -39,7 +41,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetConventionalLorryVehicleType().GetElement(inputData); - GenerateReport("ConventionalLorryOutputType"); } #endregion @@ -47,6 +48,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class HEV_PxLorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "HEV_Px_LorryOutputType"; public HEV_PxLorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -55,13 +57,13 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation { var vehicle = _cifFactory.GetHEV_PxLorryVehicleType(); Vehicle = _cifFactory.GetHEV_PxLorryVehicleType().GetElement(inputData); - GenerateReport("HEV_Px_LorryOutputType"); } #endregion } public class HEV_S2_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "HEV_S2_LorryOutputType"; public HEV_S2_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -69,7 +71,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetHEV_S2_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV_S2_LorryOutputType"); } #endregion @@ -77,6 +78,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class HEV_S3_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "HEV_S3_LorryOutputType"; public HEV_S3_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -84,7 +86,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetHEV_S3_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV_S3_LorryOutputType"); } #endregion @@ -92,6 +93,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class HEV_S4_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "HEV_S4_LorryOutputType"; public HEV_S4_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -99,7 +101,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetHEV_S4_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV_S4_LorryOutputType"); } #endregion @@ -107,6 +108,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class HEV_IEPC_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "HEV_IEPC_S_LorryOutputType"; public HEV_IEPC_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -114,7 +116,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetHEV_IEPC_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV_IEPC_S_LorryOutputType"); } #endregion @@ -122,6 +123,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class PEV_E2_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "PEV_E2_LorryOutputType"; public PEV_E2_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -129,7 +131,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetPEV_E2_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV_E2_LorryOutputType"); } #endregion @@ -137,6 +138,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class PEV_E3_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "PEV_E3_LorryOutputType"; public PEV_E3_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -144,7 +146,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetPEV_E3_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV_E3_LorryOutputType"); } #endregion @@ -152,6 +153,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class PEV_E4_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "PEV_E4_LorryOutputType"; public PEV_E4_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -159,7 +161,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetPEV_E4_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV_E4_LorryOutputType"); + } #endregion @@ -167,6 +169,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public class PEV_IEPC_Lorry_CIF : CustomerInformationFile { + protected override string OutputDataType => "PEV_IEPC_LorryOutputType"; public PEV_IEPC_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCustomerReport @@ -174,7 +177,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetPEV_IEPC_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV_IEPC_LorryOutputType"); } #endregion @@ -192,21 +194,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation #region CompletedBus public class Conventional_CompletedBusCIF : CustomerInformationFile - { - public Conventional_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) + { + protected override string OutputDataType => "Conventional_CompletedBusOutputType"; + + public Conventional_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetConventional_CompletedBusVehicleType().GetElement(inputData); - GenerateReport("Conventional_CompletedBusOutputType"); - } + } } public class HEV_CompletedBusCIF : CustomerInformationFile { + protected override string OutputDataType => "HEV_CompletedBusOutputType"; public HEV_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } @@ -214,12 +218,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetHEV_CompletedBusVehicleType().GetElement(inputData); - GenerateReport("HEV_CompletedBusOutputType"); } } public class PEV_CompletedBusCIF : CustomerInformationFile { + protected override string OutputDataType => "PEV_CompletedBusOutputType"; public PEV_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } @@ -227,7 +231,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _cifFactory.GetPEV_CompletedBusVehicleType().GetElement(inputData); - GenerateReport("PEV_CompltedBusOutputType"); } } 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 35425cabf90c4a97ceef62e55cc64d5fd7776519..fb4804f5fc2db688db42945bd4dfee24d195c479 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 @@ -6,22 +6,31 @@ using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9 { - internal abstract class AbstractManufacturerReport : IXMLManufacturerReport + + internal interface IXMLMockupReport + { + void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue); + } + internal abstract class AbstractManufacturerReport : IXMLManufacturerReport, IXMLMockupReport { protected XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); - - - protected readonly IManufacturerReportFactory _mRFReportFactory; + public static XNamespace Mrf => XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9"); + + protected readonly IManufacturerReportFactory _mRFReportFactory; + protected XElement Results { get; set; } protected XElement Vehicle { get; set; } + public abstract string OutputDataType { get; } //also used as name for the mockup result element protected AbstractManufacturerReport(IManufacturerReportFactory MRFReportFactory) { @@ -34,20 +43,43 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { - + InitializeVehicleData(modelData.InputData); + Results = new XElement(Mrf + XMLNames.Report_Results); } public XDocument Report { get; protected set; } + + private List<XMLDeclarationReport.ResultEntry> results = new List<XMLDeclarationReport.ResultEntry>(); public void WriteResult(XMLDeclarationReport.ResultEntry resultValue) { - throw new NotImplementedException(); + + } + + public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue) + { + + Results.Add(MockupResultReader.GetMRFMockupResult(OutputDataType, resultValue, Mrf + "Result")); + + + + } + + + public void GenerateReport() { - throw new NotImplementedException(); + Report = new XDocument(new XElement(Mrf + "VectoOutput", + new XAttribute("xmlns", Mrf), + new XAttribute(XNamespace.Xmlns + "xsi", xsi), + new XAttribute(xsi + "type", $"{OutputDataType}"), + Vehicle, + Results)); + } #endregion } + } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs index e638f39c7672403f47d7dd110e81aed2e9e191b1..034bfe8a5f00034c1a6b6906aa0f1c58f80723c8 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs @@ -31,6 +31,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetConventional_CompletedBusVehicleType().GetElement(inputData); @@ -47,6 +49,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetConventional_CompletedBusVehicleType().GetElement(inputData); @@ -62,6 +66,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetConventional_CompletedBusVehicleType().GetElement(inputData); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs index 6daf73c0d33c52d2376cad2227f924c49cd5fbef..af9f14df1d0e79873a68a950b5eeb583e8bf5059 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs @@ -1,13 +1,19 @@ using System.Xml.Linq; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport { internal abstract class LorryManufacturerReportBase : AbstractManufacturerReport { - public static XNamespace Mrf => XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9"); - public LorryManufacturerReportBase(IManufacturerReportFactory MRFReportFactory) : base(MRFReportFactory) { } + + + + public LorryManufacturerReportBase(IManufacturerReportFactory MRFReportFactory) : base(MRFReportFactory) + { + + } protected void GenerateReport(string outputDataType) { @@ -22,6 +28,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. internal class ConventionalLorryManufacturerReport : LorryManufacturerReportBase { + public ConventionalLorryManufacturerReport(IManufacturerReportFactory MRFReportFactory) : base(MRFReportFactory) { @@ -30,11 +37,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + + public override string OutputDataType => + XMLNames.MRF_OutputDataType_ConventionalLorryManufacturerOutputDataType; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetConventionalLorryVehicleType().GetElement(inputData); - - GenerateReport("ConventionalLorryManufacturerOutputDataType"); + } @@ -44,16 +54,18 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. internal class HEV_Px_IHPC_LorryManufacturerReport : LorryManufacturerReportBase { + public HEV_Px_IHPC_LorryManufacturerReport(IManufacturerReportFactory MRFReportFactory) : base(MRFReportFactory) { } #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "HEV-Px_IHPCLorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_Px_IHCP_LorryVehicleType().GetElement(inputData); - //TODO: REMOVE - GenerateReport("HEV-Px_IHPCLorryManufacturerOutputDataType"); + GenerateReport(OutputDataType); } @@ -67,10 +79,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "HEV-S2_LorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_S2_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV-S2_LorryManufacturerOutputDataType"); + GenerateReport(OutputDataType); } #endregion @@ -78,6 +92,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. internal class HEV_S3_LorryManufacturerReport : LorryManufacturerReportBase { + public override string OutputDataType => "HEV-S3_LorryManufacturerOutputDataType"; + public HEV_S3_LorryManufacturerReport(IManufacturerReportFactory MRFReportFactory) : base(MRFReportFactory) { @@ -88,7 +104,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_S3_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV-S3_LorryManufacturerOutputDataType"); + GenerateReport(OutputDataType); } #endregion @@ -100,10 +116,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "HEV-S4_LorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_S4_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV-S4_LorryManufacturerOutputDataType"); } #endregion @@ -115,10 +132,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "HEV-IEPC-S_LorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_IEPC_S_LorryVehicleType().GetElement(inputData); - GenerateReport("HEV-IEPC-S_LorryManufacturerOutputDataType"); + } #endregion @@ -130,10 +149,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "PEV-E2_LorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_E2_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV-E2_LorryManufacturerOutputDataType"); + } #endregion @@ -145,10 +166,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "PEV-E3_LorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_E3_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV-E3_LorryManufacturerOutputDataType"); } #endregion @@ -160,10 +182,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "PEV-E4_LorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_E4_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV-E4_LorryManufacturerOutputDataType"); } #endregion @@ -175,10 +198,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => "PEV-IEPC_LorryManufacturerOutputDataType"; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_IEPC_LorryVehicleType().GetElement(inputData); - GenerateReport("PEV-IEPC_LorryManufacturerOutputDataType"); } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs index d4e6dc19f8ede78845bbbfcc3e638314e839cc18..ca988f79c06cf9d8bff697276d6032b4c3b8a8cf 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs @@ -1,6 +1,7 @@ using System; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport @@ -27,11 +28,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType => XMLNames.MRF_OutputDataType_ConventionalPrimaryBusManufacturerOutputDataType; + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetConventional_PrimaryBusVehicleType().GetElement(inputData); - - GenerateReport("ConventionalPrimaryBusManufacturerOutputDataType"); + } #endregion @@ -43,6 +45,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_Px_IHPC_PrimaryBusVehicleType().GetElement(inputData); @@ -61,6 +65,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_S2_PrimaryBusVehicleType().GetElement(inputData); @@ -77,6 +83,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_S3_PrimaryBusVehicleType().GetElement(inputData); @@ -92,6 +100,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_S4_PrimaryBusVehicleType().GetElement(inputData); @@ -108,6 +118,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetHEV_IEPC_S_PrimaryBusVehicleType().GetElement(inputData); @@ -123,6 +135,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_E2_PrimaryBusVehicleType().GetElement(inputData); @@ -139,6 +153,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_E3_PrimaryBusVehicleType().GetElement(inputData); @@ -159,6 +175,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_E4_PrimaryBusVehicleType().GetElement(inputData); @@ -175,6 +193,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. #region Overrides of AbstractManufacturerReport + public override string OutputDataType { get; } + public override void InitializeVehicleData(IDeclarationInputDataProvider inputData) { Vehicle = _mRFReportFactory.GetPEV_IEPC_PrimaryBusVehicleType().GetElement(inputData); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs index 2d45d072dd52d9dd7134b3d7e92ecd26f79388c3..c3e2338ebdb8c16e13072ea4fd625dfae4811249 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs @@ -345,8 +345,7 @@ namespace TUGraz.VectoCore.OutputData.XML return retVal; } - public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null) + public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { VehicleClass = modelData.VehicleData.VehicleClass; if (VehicleClass.IsBus()) { diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 58b1724e041c91719c5841282473bf117a9cd9c7..94eb0b24302e3cb824756009de2f173d96aff83d 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -226,8 +226,7 @@ namespace TUGraz.VectoCore.OutputData.XML } - public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null) + public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { if (modelData.Exempted) { WeightingGroup = WeightingGroup.Unknown; @@ -248,11 +247,6 @@ namespace TUGraz.VectoCore.OutputData.XML InstantiateReports(modelData); - InitializeReports(modelData, fuelModes, inputData); - } - - protected virtual void InitializeReports(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, IDeclarationInputDataProvider inputData) - { ManufacturerRpt.Initialize(modelData, fuelModes); CustomerRpt.Initialize(modelData, fuelModes); } diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs index 820f4038a6b5827b9f79f1b0dbb3347fdbe45850..18d8a1e85ecdd895948090b3846024ae1743645a 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs @@ -37,8 +37,7 @@ namespace TUGraz.VectoCore.OutputData.XML { }; } - public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null) + public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { _weightingFactors = EqualWeighting; diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs index 850afd8c3b5bf4293aeaa615bf112268768c2769..c2ba05703732a8c25a4d0f5e6a8123828388ab17 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile; @@ -20,8 +19,7 @@ namespace TUGraz.VectoCore.OutputData.XML //_multistageBusReport = new XMLMultistageBusReport(); } - public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null) + public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { _multistageBusReport = modelData.Exempted ? new XMLMultistageExemptedBusReport() : new XMLMultistageBusReport(); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs index 8d6d135ebc7a40cac5544baa0761c08e0a22bb84..36bdb48f59d0c32501569a67a651132268576c30 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Xml.Linq; -using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile; @@ -41,8 +40,7 @@ namespace TUGraz.VectoCore.OutputData.XML { } - public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, - IDeclarationInputDataProvider inputData = null) + public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { base.InitializeReport(modelData, fuelModes); PrimaryReport.Initialize(modelData,fuelModes); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs index 7f2294e174e2b148dc44d9add39e802a18d4ccff..70d68bdf863af4c831049e876d57d9298f9b3722 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs @@ -1,7 +1,8 @@ using System.Collections.Generic; using System.Linq; -using System.Runtime.CompilerServices; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile; @@ -13,7 +14,11 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.Manu namespace TUGraz.VectoCore.OutputData.XML { - public class XMLDeclarationReport09 : XMLDeclarationReport + public interface IMockupReport + { + bool Mockup { set; } + } + public class XMLDeclarationReport09 : XMLDeclarationReport, IMockupReport { private readonly IReportWriter _writer; private readonly IManufacturerReportFactory _mrfFactory; @@ -50,18 +55,45 @@ namespace TUGraz.VectoCore.OutputData.XML ihpc); } + #region Overrides of XMLDeclarationReport - protected override void InitializeReports(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes, IDeclarationInputDataProvider inputData) + protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData) + { + if (!Mockup) { + base.DoStoreResult(entry, runData, modData); + return; + } + } + + protected override void WriteResult(ResultEntry result) { - var customerReport = CustomerRpt as AbstractCustomerReport; - var manufacturerReport = ManufacturerRpt as AbstractManufacturerReport; - customerReport.InitializeVehicleData(inputData); - manufacturerReport.InitializeVehicleData(inputData); + var sumWeightinFactors = _weightingFactors.Values.Sum(x => x); + if (!sumWeightinFactors.IsEqual(0) && !sumWeightinFactors.IsEqual(1)) + { + throw new VectoException("Mission Profile Weighting factors do not sum up to 1!"); + } + + if (Mockup) { + (ManufacturerRpt as IXMLMockupReport).WriteMockupResult(result); + (CustomerRpt as IXMLMockupReport).WriteMockupResult(result); + } else { + ManufacturerRpt.WriteResult(result); + CustomerRpt.WriteResult(result); + } + } #endregion #endregion + + + #region Implementation of IMockupReport + + public bool Mockup { private get; set; } + + #endregion } + } \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/MockupResults.xml b/VectoCore/VectoCore/Resources/MockupResults.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a0e45b0d91b225a6ea36ce640db7d5e3a7a54c2 --- /dev/null +++ b/VectoCore/VectoCore/Resources/MockupResults.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> + +<MockupResults> + <ConventionalLorryManufacturerOutputDataType> + <Mission>Long Haul</Mission> + <Load></Load> + <TotalVehicleMassInSimulation></TotalVehicleMassInSimulation> + <Simulation> + <AverageSpeed></AverageSpeed> + </Simulation> + <FuelAndEnergyConsumption> + + </FuelAndEnergyConsumption> + </ConventionalLorryManufacturerOutputDataType> + + <ConventionalLorryOutputType> + + </ConventionalLorryOutputType> +</MockupResults> diff --git a/VectoCore/VectoCore/Utils/MockupResultReader.cs b/VectoCore/VectoCore/Utils/MockupResultReader.cs new file mode 100644 index 0000000000000000000000000000000000000000..35d40f0aad7502cf77aba58c75978048f03b14d6 --- /dev/null +++ b/VectoCore/VectoCore/Utils/MockupResultReader.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Linq; +using System.Xml.XPath; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.InputData.Impl; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.OutputData.XML; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport; +using RuntimeArgumentHandle = System.RuntimeArgumentHandle; + +namespace TUGraz.VectoCore.Utils +{ + + + internal static class MockupResultReader + { + private enum ResultType + { + CIF, + MRF + } + private static class MockupResultHelper + { + private static string _convArch = "Conv"; + private const string mockupResourcePrefix = "TUGraz.VectoCore.Resources.Declaration.Report"; + + + private static HashSet<string> conventional = new HashSet<string>() { + //MRF + XMLNames.MRF_OutputDataType_ConventionalLorryManufacturerOutputDataType, + XMLNames.MRF_OutputDataType_ConventionalPrimaryBusManufacturerOutputDataType, + + //CIF + XMLNames.CIF_OutputDataType_ConventionalLorryOutputType, + }; + + private static HashSet<string> hev = new HashSet<string>() { }; + private static HashSet<string> pev = new HashSet<string>() { }; + public static string GetResourceName(string xmlName, XMLDeclarationReport.ResultEntry result, ResultType type) + { + var arch = GetArch(xmlName, false); + var reportType = type == ResultType.MRF ? "MRF" : "CIF"; + var vehicleType = result.VehicleClass.IsBus() ? "Bus" : "Lorry"; + return $"{mockupResourcePrefix}.{reportType}_MockupResults_{arch}_{vehicleType}.xml"; + } + + private static string GetArch(string xmlName, bool ocv) + { + if (conventional.Contains(xmlName)) { + return "Conv"; + } + + if (hev.Contains(xmlName)) { + if (ocv) { + return "OCV-HEV"; + } else { + return "non-OCV-HEV"; + } + + } + + if (pev.Contains(xmlName)) { + return "PEV"; + } + + throw new VectoException($"{xmlName} not mapped to Architecture (Conv/HEV/PEV)"); + } + + + } + + public static XElement GetMRFMockupResult(string xmlName, XMLDeclarationReport.ResultEntry result, XName resultElementName) + { + var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.MRF)); + ReplaceMission(result, resultElement); + SetFuels(result, resultElement); + + + return resultElement; + } + + + public static XElement GetCIFMockupResult(string xmlName, XMLDeclarationReport.ResultEntry result, XName resultElementName) + { + var resultElement = GetResultElement(resultElementName, MockupResultHelper.GetResourceName(xmlName, result, ResultType.CIF)); + ReplaceMission(result, resultElement); + SetFuels(result, resultElement); + + return resultElement; + } + + private static XElement GetResultElement(XName resultElementName, string resourceName) + { + var xDoc = XDocument.Load(RessourceHelper.ReadStream(resourceName)); + var results = xDoc.XPathSelectElements($"//*[name()='Result']"); + + return results.First(); + } + + + private static void ReplaceMission(XMLDeclarationReport.ResultEntry result, XElement resultElement) + { + resultElement.Elements().Single(x => x.Name.LocalName == XMLNames.Report_Result_Mission).Value = + result.Mission.ToXMLFormat(); + } + + private static void SetFuels(XMLDeclarationReport.ResultEntry result, XElement resultElement) + { + var fuelElement = resultElement.XPathSelectElements("//*[name()='Fuel']").First(); + var insertAfter = fuelElement.PreviousNode; //FuelElements added after this element + fuelElement.Remove(); + + foreach (var fuelProperties in result.FuelData) { + + var fuelElementToAdd = new XElement(fuelElement); //deep copy of fuel element; + fuelElementToAdd.SetAttributeValue(XMLNames.Report_Results_Fuel_Type_Attr, fuelProperties.FuelType.ToXMLFormat()); + ClearFuelConsumptionEntries(fuelProperties.FuelType, fuelElementToAdd, result.VehicleClass); + + insertAfter.AddAfterSelf(fuelElementToAdd); + insertAfter = fuelElementToAdd; + } + } + + /// <summary> + /// Clears fuel consumption entries that are not used for a specified fueltype and vehicle class + /// </summary> + private static void ClearFuelConsumptionEntries(FuelType fuelType, XElement fuelElement, + VehicleClass vehicleClass) + { + if(!(vehicleClass.IsHeavyLorry() || vehicleClass.IsMediumLorry())) + { + fuelElement.XPathSelectElements("//*[@unit='l/m³-km']").FirstOrDefault()?.Remove(); + } + + if (fuelType.IsGaseous()) { + //var test = fuelElement.XPathSelectElements("//*[@unit='l/m³-km']"); + fuelElement.XPathSelectElements("//*[@unit='l/m³-km']").FirstOrDefault()?.Remove(); + fuelElement.XPathSelectElements("//*[@unit='l/t-km']").FirstOrDefault()?.Remove(); + fuelElement.XPathSelectElements("//*[@unit='l/100km']").FirstOrDefault()?.Remove(); + } + } + } +} diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 8c44bf43592b60358c4e3956743098a62757d6a1..273c5ea14b35449a15b25d5b57d4a47b7ad03552 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -11,6 +11,7 @@ <None Remove="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_1-Stage_650ccm.acmp" /> <None Remove="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_2-Stage_398ccm.acmp" /> <None Remove="Resources\Declaration\VAUXBus\DEFAULT_3-Cylinder_2-Stage_598ccm.acmp" /> + <None Remove="Resources\MockupResults.xml" /> <None Remove="Resources\XSD\VectoDeclarationDefinitions.2.2.1.xsd" /> <None Remove="Resources\XSD\VectoOutputPrimaryBus.xsd" /> </ItemGroup> @@ -72,6 +73,10 @@ </EmbeddedResource> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Resources\MockupResults.xml" /> + </ItemGroup> + <ItemGroup> <Compile Update="JSONKeys.Designer.cs"> <DesignTime>True</DesignTime> diff --git a/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs b/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs index 2b9d05d85664a09b4f122ea23b1a198befc51a55..b1dabe86a0adab5902a2e2af1142a1ee0b907858 100644 --- a/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs +++ b/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using Microsoft.VisualStudio.TestPlatform.Utilities; @@ -14,6 +15,7 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -93,56 +95,83 @@ namespace TUGraz.VectoCore.Tests.Integration Assert.NotNull(_inputDataReader); } + [SetUp] public void Setup() { - + SimulatorFactory.MockUpRun = true; } public FileOutputWriter GetOutputFileWriter(string subDirectory, string originalFilePath) { + Directory.CreateDirectory(Path.GetFullPath(subDirectory)); var path = Path.Combine(Path.Combine(Path.GetFullPath(subDirectory)), Path.GetFileName(originalFilePath)); return new FileOutputWriter(path); } - + - [TestCase(ConventionalHeavyLorry)] - public void ConventionalHeavyLorryMockupTest(string fileName) + [TestCase(ConventionalHeavyLorry, TestName="ConventionalHeavyLorry")] + [TestCase(ConventionalHeavyLorry, false, TestName = "ConventionalHeavyLorryNoMockup")] + [TestCase(HEV_S2_HeavyLorry, TestName = "HEV_S2_HeavyLorry")] + [TestCase(HEV_S3_HeavyLorry, TestName = "HEV_S3_HeavyLorry")] + [TestCase(HEV_S4_HeavyLorry, TestName = "HEV_S4_HeavyLorry")] + [TestCase(HEV_Px_HeavyLorry, TestName = "HEV_Px_HeavyLorry")] + [TestCase(PEV_E2_HeavyLorry, TestName = "PEV_E2_HeavyLorry")] + [TestCase(PEV_E2_HeavyLorry, false, TestName = "PEV_E2_HeavyLorryNoMockup")] + [TestCase(PEV_E3_HeavyLorry, TestName = "PEV_E3_HeavyLorry")] + [TestCase(PEV_E4_HeavyLorry, TestName = "PEV_E4_HeavyLorry")] + [TestCase(PEV_IEPC_HeavyLorry, TestName = "PEV_IEPC_HeavyLorry")] + [TestCase(HEV_IEPC_S_HeavyLorry, TestName = "HEV_IEPC_S_HeavyLorry")] + [NonParallelizable] + public void HeavyLorryMockupTest(string fileName, bool mockup = true) { + SimulatorFactory.MockUpRun = mockup; var inputProvider = _inputDataReader.Create(fileName); - var fileWriter = GetOutputFileWriter(nameof(ConventionalHeavyLorryMockupTest), fileName); + var fileWriter = GetOutputFileWriter(TestContext.CurrentContext.Test.Name, fileName); var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); _simulatorFactory = _simFactoryFactory.Factory(ExecutionMode.Declaration, inputProvider, fileWriter, null, null, true); - _simulatorFactory.MockUpRun = true; jobContainer.AddRuns(_simulatorFactory); jobContainer.Execute(false); jobContainer.WaitFinished(); - if(!File.Exists(fileWriter.XMLCustomerReportName)) - { - TestContext.WriteLine(fileWriter.XMLCustomerReportName); - Assert.Fail(); - } - - - - + CheckFileExists(fileWriter); } + [TestCase(Conventional_PrimaryBus, TestName = "ConventionalPrimaryBus")] + public void PrimaryBusMockupTest(string fileName) + { + var inputProvider = _inputDataReader.Create(fileName); + var fileWriter = GetOutputFileWriter(TestContext.CurrentContext.Test.Name, fileName); + var sumWriter = new SummaryDataContainer(fileWriter); + var jobContainer = new JobContainer(sumWriter); + _simulatorFactory = + _simFactoryFactory.Factory(ExecutionMode.Declaration, inputProvider, fileWriter, null, null, true); + jobContainer.AddRuns(_simulatorFactory); + jobContainer.Execute(false); + jobContainer.WaitFinished(); + CheckFileExists(fileWriter); + } - - - - - + private static void CheckFileExists(FileOutputWriter fileWriter) + { + if (!File.Exists(fileWriter.XMLCustomerReportName)) { + TestContext.WriteLine(fileWriter.XMLCustomerReportName); + Assert.Fail(); + } + if (!File.Exists(fileWriter.XMLFullReportName)) + { + TestContext.WriteLine(fileWriter.XMLFullReportName); + Assert.Fail(); + } + } } }