From 35a97462fd73538342048635b83f1cbabac9d5ed Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Mon, 14 Dec 2015 16:38:32 +0100 Subject: [PATCH] make properties in json-classes virtual to allow override --- .../InputData/FileIO/JSON/JSONEngineData.cs | 18 ++--- .../InputData/FileIO/JSON/JSONGearboxData.cs | 42 ++++++----- .../InputData/FileIO/JSON/JSONInputData.cs | 75 +++++++++++-------- .../InputData/FileIO/JSON/JSONVehicleData.cs | 33 ++++---- 4 files changed, 94 insertions(+), 74 deletions(-) diff --git a/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs b/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs index 17506455fd..68f95207f6 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs @@ -38,48 +38,48 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON { public JSONEngineDataV3(JObject data, string fileName) : base(data, fileName) {} - public string ModelName + public virtual string ModelName { get { return Body.GetEx(JsonKeys.Engine_ModelName).Value<string>(); } } - public CubicMeter Displacement + public virtual CubicMeter Displacement { get { return Body.GetEx(JsonKeys.Engine_Displacement).Value<double>().SI().Cubic.Centi.Meter.Cast<CubicMeter>(); } // convert vom ccm to m^3} } - public PerSecond IdleSpeed + public virtual PerSecond IdleSpeed { get { return Body.GetEx(JsonKeys.Engine_IdleSpeed).Value<double>().RPMtoRad(); } } - public DataTable FuelConsumptionMap + public virtual DataTable FuelConsumptionMap { get { return ReadTableData(Body.GetEx(JsonKeys.Engine_FuelConsumptionMap).Value<string>(), "FuelConsumptionMap"); } } - public DataTable FullLoadCurve + public virtual DataTable FullLoadCurve { get { return ReadTableData(Body.GetEx(JsonKeys.Engine_FullLoadCurveFile).Value<string>(), "FullLoadCurve"); } } - public KilogramSquareMeter Inertia + public virtual KilogramSquareMeter Inertia { get { return Body.GetEx(JsonKeys.Engine_Inertia).Value<double>().SI<KilogramSquareMeter>(); } } - public KilogramPerWattSecond WHTCMotorway + public virtual KilogramPerWattSecond WHTCMotorway { get { return Body.GetEx(JsonKeys.Engine_WHTC_Motorway).Value<double>().SI<KilogramPerWattSecond>(); } } - public KilogramPerWattSecond WHTCRural + public virtual KilogramPerWattSecond WHTCRural { get { return Body.GetEx(JsonKeys.Engine_WHTC_Rural).Value<double>().SI<KilogramPerWattSecond>(); } } - public KilogramPerWattSecond WHTCUrban + public virtual KilogramPerWattSecond WHTCUrban { get { return Body.GetEx(JsonKeys.Engine_WHTC_Urban).Value<double>().SI<KilogramPerWattSecond>(); } } diff --git a/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs index 0a4353de41..43140e7de8 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs @@ -40,7 +40,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IAxleGearInputData - public double Ratio + public virtual double Ratio { get { return Body.GetEx(JsonKeys.Gearbox_Gears)[0].GetEx(JsonKeys.Gearbox_Gear_Ratio).Value<double>(); } } @@ -58,18 +58,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IGearboxInputData - public string ModelName + public virtual string ModelName { get { return Body.GetEx(JsonKeys.Gearbox_ModelName).Value<string>(); } } - public GearboxType Type + public virtual GearboxType Type { get { return Body.GetEx(JsonKeys.Gearbox_GearboxType).Value<string>().Parse<GearboxType>(); } } - public KilogramSquareMeter Inertia + public virtual KilogramSquareMeter Inertia { get { return Body.GetEx(JsonKeys.Gearbox_Inertia).Value<double>().SI<KilogramSquareMeter>(); } } @@ -79,7 +79,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return Body.GetEx(JsonKeys.Gearbox_TractionInterruption).Value<double>().SI<Second>(); } } - public IList<ITransmissionInputData> Gears + public virtual IList<ITransmissionInputData> Gears { get { @@ -105,42 +105,42 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public bool SkipGears + public virtual bool SkipGears { get { return Body.GetEx(JsonKeys.Gearbox_SkipGears).Value<bool>(); } } - public Second ShiftTime + public virtual Second ShiftTime { get { return Body.GetEx(JsonKeys.Gearbox_ShiftTime).Value<double>().SI<Second>(); } } - public bool EarlyShiftUp + public virtual bool EarlyShiftUp { get { return Body.GetEx(JsonKeys.Gearbox_EarlyShiftUp).Value<bool>(); } } - public double TorqueReserve + public virtual double TorqueReserve { get { return Body.GetEx(JsonKeys.Gearbox_TorqueReserve).Value<double>() / 100.0; } } - public MeterPerSecond StartSpeed + public virtual MeterPerSecond StartSpeed { get { return Body.GetEx(JsonKeys.Gearbox_StartSpeed).Value<double>().SI<MeterPerSecond>(); } } - public MeterPerSquareSecond StartAcceleration + public virtual MeterPerSquareSecond StartAcceleration { get { return Body.GetEx(JsonKeys.Gearbox_StartAcceleration).Value<double>().SI<MeterPerSquareSecond>(); } } - public double StartTorqueReserve + public virtual double StartTorqueReserve { get { return Body.GetEx(JsonKeys.Gearbox_StartTorqueReserve).Value<double>() / 100.0; } } - public ITorqueConverterInputData TorqueConverter + public virtual ITorqueConverterInputData TorqueConverter { get { return this; } } @@ -149,23 +149,27 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region ITorqueConverterInputData - public bool Enabled + public virtual bool Enabled { - get { return false; // TODO @@@ + get + { + return false; // TODO @@@ } } - public RoundsPerMinute ReferenceRPM + public virtual PerSecond ReferenceRPM { get { return - Body.GetEx(JsonKeys.Gearbox_TorqueConverter).GetEx(JsonKeys.Gearbox_TorqueConverter_ReferenceRPM).Value<double>() - .SI<RoundsPerMinute>(); + Body.GetEx(JsonKeys.Gearbox_TorqueConverter) + .GetEx(JsonKeys.Gearbox_TorqueConverter_ReferenceRPM) + .Value<double>() + .RPMtoRad(); } } - public DataTable TCData + public virtual DataTable TCData { get { diff --git a/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/InputData/FileIO/JSON/JSONInputData.cs index 2af961989c..45ab9996b9 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONInputData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONInputData.cs @@ -165,22 +165,37 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public JSONInputDataV2(JObject data, string filename) : base(data, filename) { _jobname = Path.GetFileName(filename); - var gearboxFile = Body.GetEx(JsonKeys.Vehicle_GearboxFile).Value<string>(); - if (!EmptyOrInvalidFileName(gearboxFile)) { - Gearbox = JSONInputDataFactory.ReadGearbox(Path.Combine(BasePath, gearboxFile)); + try { + var gearboxFile = Body.GetEx(JsonKeys.Vehicle_GearboxFile).Value<string>(); + if (!EmptyOrInvalidFileName(gearboxFile)) { + Gearbox = JSONInputDataFactory.ReadGearbox(Path.Combine(BasePath, gearboxFile)); + } + } catch (Exception e) { + throw new VectoException("Failed to read Gearbox file.", e); } - var axleGear = Gearbox as IAxleGearInputData; - if (axleGear != null) { - AxleGear = axleGear; + try { + var axleGear = Gearbox as IAxleGearInputData; + if (axleGear != null) { + AxleGear = axleGear; + } + } catch (Exception e) { + throw new VectoException("Failed to read AxleGear file.", e); } - Engine = JSONInputDataFactory.ReadEngine( - Path.Combine(BasePath, Body.GetEx(JsonKeys.Vehicle_EngineFile).Value<string>())); - var vehicleFile = Body.GetEx(JsonKeys.Vehicle_VehicleFile).Value<string>(); - if (!EmptyOrInvalidFileName(vehicleFile)) { - VehicleData = JSONInputDataFactory.ReadJsonVehicle( - Path.Combine(BasePath, vehicleFile)); + try { + Engine = JSONInputDataFactory.ReadEngine( + Path.Combine(BasePath, Body.GetEx(JsonKeys.Vehicle_EngineFile).Value<string>())); + } catch (Exception e) { + throw new VectoException("Failed to read Engine file.", e); + } + try { + var vehicleFile = Body.GetEx(JsonKeys.Vehicle_VehicleFile).Value<string>(); + if (!EmptyOrInvalidFileName(vehicleFile)) { + VehicleData = JSONInputDataFactory.ReadJsonVehicle( + Path.Combine(BasePath, vehicleFile)); + } + } catch (Exception e) { + throw new VectoException("Faled to read Vehicle file.", e); } - var retarder = VehicleData as IRetarderInputData; if (retarder != null) { Retarder = retarder; @@ -189,12 +204,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IInputDataProvider - public IJobInputData JobInputData() + public virtual IJobInputData JobInputData() { return this; } - public IVehicleInputData VehicleInputData + public virtual IVehicleInputData VehicleInputData { get { @@ -205,7 +220,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public IGearboxInputData GearboxInputData + public virtual IGearboxInputData GearboxInputData { get { @@ -216,7 +231,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public IAxleGearInputData AxleGearInputData + public virtual IAxleGearInputData AxleGearInputData { get { @@ -227,7 +242,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public IEngineInputData EngineInputData + public virtual IEngineInputData EngineInputData { get { @@ -238,12 +253,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public IAuxiliariesInputData AuxiliaryInputData() + public virtual IAuxiliariesInputData AuxiliaryInputData() { return this; } - public IRetarderInputData RetarderInputData + public virtual IRetarderInputData RetarderInputData { get { @@ -254,7 +269,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public IDriverInputData DriverInputData + public virtual IDriverInputData DriverInputData { get { return this; } } @@ -263,12 +278,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IJobInputData - public IVehicleInputData Vehicle + public virtual IVehicleInputData Vehicle { get { return VehicleData; } } - public IList<ICycleData> Cycles + public virtual IList<ICycleData> Cycles { get { @@ -298,12 +313,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public bool EngineOnlyMode + public virtual bool EngineOnlyMode { get { return Body.GetEx(JsonKeys.Job_EngineOnlyMode).Value<bool>(); } } - public string JobName + public virtual string JobName { get { return _jobname; } } @@ -312,7 +327,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region DriverInputData - public IStartStopInputData StartStop + public virtual IStartStopInputData StartStop { get { @@ -326,7 +341,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public ILookaheadCoastingInputData Lookahead + public virtual ILookaheadCoastingInputData Lookahead { get { @@ -339,7 +354,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public IOverSpeedEcoRollInputData OverSpeedEcoRoll + public virtual IOverSpeedEcoRollInputData OverSpeedEcoRoll { get { @@ -354,7 +369,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public DataTable AccelerationCurve + public virtual DataTable AccelerationCurve { get { @@ -367,7 +382,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #endregion - public IList<IAuxiliaryInputData> Auxiliaries + public virtual IList<IAuxiliaryInputData> Auxiliaries { get { diff --git a/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 7fb1359b23..2374221459 100644 --- a/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -25,52 +25,52 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public Kilogram CurbWeight + public virtual Kilogram CurbWeight { get { return Body.GetEx(JsonKeys.Vehicle_CurbWeight).Value<double>().SI<Kilogram>(); } } - public Kilogram CurbWeightExtra + public virtual Kilogram CurbWeightExtra { get { return Body.GetEx(JsonKeys.Vehicle_CurbWeightExtra).Value<double>().SI<Kilogram>(); } } - public Kilogram GrossVehicleMassRating + public virtual Kilogram GrossVehicleMassRating { get { return Body.GetEx(JsonKeys.Vehicle_GrossVehicleMassRating).Value<double>().SI<Ton>().Cast<Kilogram>(); } } - public Kilogram Loading + public virtual Kilogram Loading { get { return Body.GetEx(JsonKeys.Vehicle_Loading).Value<double>().SI<Kilogram>(); } } - public Meter DynamicTyreRadius + public virtual Meter DynamicTyreRadius { get { return Body.GetEx(JsonKeys.Vehicle_DynamicTyreRadius).Value<double>().SI().Milli.Meter.Cast<Meter>(); } } - public SquareMeter AirDragArea + public virtual SquareMeter AirDragArea { get { return Body.GetEx(JsonKeys.Vehicle_DragCoefficient).Value<double>().SI<SquareMeter>(); } } - public SquareMeter AirDragAreaRigidTruck + public virtual SquareMeter AirDragAreaRigidTruck { get { return Body.GetEx(JsonKeys.Vehicle_DragCoefficientRigidTruck).Value<double>().SI<SquareMeter>(); } } - public CrossWindCorrectionMode CrossWindCorrectionMode + public virtual CrossWindCorrectionMode CrossWindCorrectionMode { get { return CrossWindCorrectionModeHelper.Parse(Body.GetEx("CdCorrMode").Value<string>()); } } - public string Rim + public virtual string Rim { get { return Body.GetEx(JsonKeys.Vehicle_Rim).Value<string>(); } } - public AxleConfiguration AxleConfiguration + public virtual AxleConfiguration AxleConfiguration { get { @@ -80,7 +80,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public IList<IAxleInputData> Axles + public virtual IList<IAxleInputData> Axles { get { @@ -91,12 +91,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON Wheels = axle.GetEx(JsonKeys.Vehicle_Axles_Wheels).Value<string>(), TwinTyres = axle.GetEx(JsonKeys.Vehicle_Axles_TwinTyres).Value<bool>(), RollResistanceCoefficient = axle.GetEx(JsonKeys.Vehicle_Axles_RollResistanceCoefficient).Value<double>(), - TyreTestLoad = axle.GetEx(JsonKeys.Vehicle_Axles_TyreTestLoad).Value<double>().SI<Newton>() + TyreTestLoad = axle.GetEx(JsonKeys.Vehicle_Axles_TyreTestLoad).Value<double>().SI<Newton>(), + AxleWeightShare = axle.GetEx("AxleWeightShare").Value<double>() }).Cast<IAxleInputData>().ToList(); } } - public DataTable CrosswindCorrectionMap + public virtual DataTable CrosswindCorrectionMap { get { return ReadTableData(Body.GetEx("CdCorrFile").Value<string>(), "CrosswindCorrection File"); } } @@ -105,7 +106,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IRetarderInputData - public RetarderData.RetarderType Type + public virtual RetarderData.RetarderType Type { get { @@ -116,12 +117,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } - public double Ratio + public virtual double Ratio { get { return Body.GetEx(JsonKeys.Vehicle_Retarder).GetEx(JsonKeys.Vehicle_Retarder_Ratio).Value<double>(); } } - public DataTable LossMap + public virtual DataTable LossMap { get { -- GitLab