From b3803c430c166bd2d2ab194c12ee1daeac549a64 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 23 Feb 2016 17:54:35 +0100 Subject: [PATCH] adapt json input provider --- .../InputData/FileIO/JSON/JSONEngineData.cs | 2 +- .../InputData/FileIO/JSON/JSONGearboxData.cs | 2 +- .../InputData/FileIO/JSON/JSONInputData.cs | 108 ++++++++++++------ .../FileIO/JSON/JSONInputDataFactory.cs | 8 +- .../InputData/FileIO/JSON/JSONVehicleData.cs | 39 ++++--- VectoCore/InputData/Impl/InputData.cs | 4 +- 6 files changed, 104 insertions(+), 59 deletions(-) diff --git a/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs b/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs index 39f86118c5..97484ce54f 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs @@ -52,7 +52,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON /// } /// } /// </code> - public class JSONEngineDataV3 : JSONFile, IEngineInputData + public class JSONEngineDataV3 : JSONFile, IEngineEngineeringInputData { public JSONEngineDataV3(JObject data, string fileName) : base(data, fileName) {} diff --git a/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs index 1179b73ee6..d1b5c4dc82 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs @@ -52,7 +52,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON /// ... /// ] /// } - public class JSONGearboxDataV5 : JSONFile, IGearboxInputData, IAxleGearInputData, ITorqueConverterInputData + public class JSONGearboxDataV5 : JSONFile, IGearboxEngineeringInputData, IAxleGearInputData, ITorqueConverterInputData { public JSONGearboxDataV5(JObject data, string filename) : base(data, filename) {} diff --git a/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/InputData/FileIO/JSON/JSONInputData.cs index 4e08ac895a..fbec2083e3 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONInputData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONInputData.cs @@ -173,15 +173,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON /// } /// } /// </code> - public class JSONInputDataV2 : JSONFile, IInputDataProvider, IJobInputData, IDriverInputData, IAuxiliariesInputData + public class JSONInputDataV2 : JSONFile, IEngineeringInputDataProvider, IEngineeringJobInputData, IDriverInputData, + IAuxiliariesEngineeringInputData { - protected IGearboxInputData Gearbox; + protected IGearboxEngineeringInputData Gearbox; protected IAxleGearInputData AxleGear; - protected IEngineInputData Engine; + protected IEngineEngineeringInputData Engine; - protected IVehicleInputData VehicleData; + protected IVehicleEngineeringInputData VehicleData; protected IRetarderInputData Retarder; @@ -229,12 +230,27 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IInputDataProvider - public virtual IJobInputData JobInputData() + public virtual IEngineeringJobInputData JobInputData() { return this; } - public virtual IVehicleInputData VehicleInputData + IVehicleDeclarationInputData IDeclarationInputDataProvider.VehicleInputData + { + get { return VehicleInputData; } + } + + IGearboxDeclarationInputData IDeclarationInputDataProvider.GearboxInputData + { + get { return GearboxInputData; } + } + + IDeclarationJobInputData IDeclarationInputDataProvider.JobInputData() + { + return JobInputData(); + } + + public virtual IVehicleEngineeringInputData VehicleInputData { get { @@ -245,7 +261,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public virtual IGearboxInputData GearboxInputData + public virtual IGearboxEngineeringInputData GearboxInputData { get { @@ -267,7 +283,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public virtual IEngineInputData EngineInputData + IEngineDeclarationInputData IDeclarationInputDataProvider.EngineInputData + { + get { return EngineInputData; } + } + + public virtual IEngineEngineeringInputData EngineInputData { get { @@ -278,11 +299,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public virtual IAuxiliariesInputData AuxiliaryInputData() + public virtual IAuxiliariesEngineeringInputData AuxiliaryInputData() { return this; } + IAuxiliariesDeclarationInputData IDeclarationInputDataProvider.AuxiliaryInputData() + { + return AuxiliaryInputData(); + } + public virtual IRetarderInputData RetarderInputData { get @@ -303,7 +329,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IJobInputData - public virtual IVehicleInputData Vehicle + public virtual IVehicleEngineeringInputData Vehicle { get { return VehicleData; } } @@ -343,6 +369,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return Body.GetEx(JsonKeys.Job_EngineOnlyMode).Value<bool>(); } } + IVehicleDeclarationInputData IDeclarationJobInputData.Vehicle + { + get { return Vehicle; } + } + public virtual string JobName { get { return _jobname; } @@ -420,34 +451,41 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #endregion - public virtual IList<IAuxiliaryInputData> Auxiliaries + public virtual IList<IAuxiliaryEngineeringInputData> Auxiliaries { - get - { - var retVal = new List<IAuxiliaryInputData>(); - foreach (var aux in Body["Aux"] ?? Enumerable.Empty<JToken>()) { - var auxData = new AuxiliaryDataInputData { - ID = aux.GetEx<string>("ID"), - Type = aux.GetEx<string>("Type"), - Technology = aux.GetEx<string>("Technology") - }; - var auxFile = aux["Path"]; - retVal.Add(auxData); - - if (auxFile == null || EmptyOrInvalidFileName(auxFile.Value<string>())) { - continue; - } - var stream = new StreamReader(Path.Combine(BasePath, auxFile.Value<string>())); - stream.ReadLine(); // skip header "Transmission ration to engine rpm [-]" - auxData.TransmissionRatio = stream.ReadLine().IndulgentParse(); - stream.ReadLine(); // skip header "Efficiency to engine [-]" - auxData.EfficiencyToEngine = stream.ReadLine().IndulgentParse(); - stream.ReadLine(); // skip header "Efficiency auxiliary to supply [-]" - auxData.EfficiencyToSupply = stream.ReadLine().IndulgentParse(); - auxData.DemandMap = VectoCSVFile.ReadStream(new MemoryStream(Encoding.UTF8.GetBytes(stream.ReadToEnd()))); + get { return AuxData().Cast<IAuxiliaryEngineeringInputData>().ToList(); } + } + + IList<IAuxiliaryDeclarationInputData> IAuxiliariesDeclarationInputData.Auxiliaries + { + get { return AuxData().Cast<IAuxiliaryDeclarationInputData>().ToList(); } + } + + private IList<AuxiliaryDataInputData> AuxData() + { + var retVal = new List<AuxiliaryDataInputData>(); + foreach (var aux in Body["Aux"] ?? Enumerable.Empty<JToken>()) { + var auxData = new AuxiliaryDataInputData { + ID = aux.GetEx<string>("ID"), + Type = aux.GetEx<string>("Type"), + Technology = aux.GetEx<string>("Technology") + }; + var auxFile = aux["Path"]; + retVal.Add(auxData); + + if (auxFile == null || EmptyOrInvalidFileName(auxFile.Value<string>())) { + continue; } - return retVal; + var stream = new StreamReader(Path.Combine(BasePath, auxFile.Value<string>())); + stream.ReadLine(); // skip header "Transmission ration to engine rpm [-]" + auxData.TransmissionRatio = stream.ReadLine().IndulgentParse(); + stream.ReadLine(); // skip header "Efficiency to engine [-]" + auxData.EfficiencyToEngine = stream.ReadLine().IndulgentParse(); + stream.ReadLine(); // skip header "Efficiency auxiliary to supply [-]" + auxData.EfficiencyToSupply = stream.ReadLine().IndulgentParse(); + auxData.DemandMap = VectoCSVFile.ReadStream(new MemoryStream(Encoding.UTF8.GetBytes(stream.ReadToEnd()))); } + return retVal; } } } \ No newline at end of file diff --git a/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs b/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs index f1417e29a9..4084181d9c 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs @@ -35,7 +35,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public static IInputDataProvider ReadJsonJob(string filename) + public static IEngineeringInputDataProvider ReadJsonJob(string filename) { var json = ReadFile(filename); var version = ReadVersion(json); @@ -47,7 +47,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public static IVehicleInputData ReadJsonVehicle(string filename) + public static IVehicleEngineeringInputData ReadJsonVehicle(string filename) { var json = ReadFile(filename); var version = ReadVersion(json); @@ -59,7 +59,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public static IGearboxInputData ReadGearbox(string filename) + public static IGearboxEngineeringInputData ReadGearbox(string filename) { var json = ReadFile(filename); var version = ReadVersion(json); @@ -71,7 +71,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public static IEngineInputData ReadEngine(string filename) + public static IEngineEngineeringInputData ReadEngine(string filename) { var json = ReadFile(filename); var version = ReadVersion(json); diff --git a/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 72d9385bc5..290f161978 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -28,7 +28,7 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.JSON { - public class JSONVehicleDataV7 : JSONFile, IVehicleInputData, IRetarderInputData + public class JSONVehicleDataV7 : JSONFile, IVehicleEngineeringInputData, IRetarderInputData { public JSONVehicleDataV7(JObject data, string fileName) : base(data, fileName) {} @@ -43,7 +43,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public virtual Kilogram CurbWeight + public virtual Kilogram CurbWeightChassis { get { return Body.GetEx<double>(JsonKeys.Vehicle_CurbWeight).SI<Kilogram>(); } } @@ -98,21 +98,28 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public virtual IList<IAxleInputData> Axles + public virtual IList<IAxleEngineeringInputData> Axles { - get - { - return - Body.GetEx(JsonKeys.Vehicle_AxleConfiguration).GetEx(JsonKeys.Vehicle_AxleConfiguration_Axles).Select( - axle => new AxleInputData { - Inertia = axle.GetEx<double>(JsonKeys.Vehicle_Axles_Inertia).SI<KilogramSquareMeter>(), - Wheels = axle.GetEx<string>(JsonKeys.Vehicle_Axles_Wheels), - TwinTyres = axle.GetEx<bool>(JsonKeys.Vehicle_Axles_TwinTyres), - RollResistanceCoefficient = axle.GetEx<double>(JsonKeys.Vehicle_Axles_RollResistanceCoefficient), - TyreTestLoad = axle.GetEx<double>(JsonKeys.Vehicle_Axles_TyreTestLoad).SI<Newton>(), - AxleWeightShare = axle.GetEx<double>("AxleWeightShare") - }).Cast<IAxleInputData>().ToList(); - } + get { return AxleWheels().Cast<IAxleEngineeringInputData>().ToList(); } + } + + IList<IAxleDeclarationInputData> IVehicleDeclarationInputData.Axles + { + get { return AxleWheels().Cast<IAxleDeclarationInputData>().ToList(); } + } + + private IEnumerable<AxleInputData> AxleWheels() + { + return + Body.GetEx(JsonKeys.Vehicle_AxleConfiguration).GetEx(JsonKeys.Vehicle_AxleConfiguration_Axles).Select( + axle => new AxleInputData { + Inertia = axle.GetEx<double>(JsonKeys.Vehicle_Axles_Inertia).SI<KilogramSquareMeter>(), + Wheels = axle.GetEx<string>(JsonKeys.Vehicle_Axles_Wheels), + TwinTyres = axle.GetEx<bool>(JsonKeys.Vehicle_Axles_TwinTyres), + RollResistanceCoefficient = axle.GetEx<double>(JsonKeys.Vehicle_Axles_RollResistanceCoefficient), + TyreTestLoad = axle.GetEx<double>(JsonKeys.Vehicle_Axles_TyreTestLoad).SI<Newton>(), + AxleWeightShare = axle.GetEx<double>("AxleWeightShare") + }); } public virtual DataTable CrosswindCorrectionMap diff --git a/VectoCore/InputData/Impl/InputData.cs b/VectoCore/InputData/Impl/InputData.cs index d03d4f998a..7ed9cee7c4 100644 --- a/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/InputData/Impl/InputData.cs @@ -78,7 +78,7 @@ namespace TUGraz.VectoCore.InputData.Impl public bool TorqueConverterActive { get; internal set; } } - public class AxleInputData : IAxleInputData + public class AxleInputData : IAxleEngineeringInputData { public bool SavedInDeclarationMode { @@ -114,7 +114,7 @@ namespace TUGraz.VectoCore.InputData.Impl public KilogramSquareMeter Inertia { get; internal set; } } - public class AuxiliaryDataInputData : IAuxiliaryInputData + public class AuxiliaryDataInputData : IAuxiliaryEngineeringInputData { public bool SavedInDeclarationMode { get; internal set; } -- GitLab