diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index d7495db50b9fbddf46ab21e62589dd105b1412b3..53a12ceda685ebab142c22abd39f49cc6ff05b1e 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -1335,5 +1335,50 @@ namespace TUGraz.VectoCommon.InputData return type.ToString(); } } + + public static bool IsBatteryElectricVehicle(this ArchitectureID type) + { + switch (type) { + case ArchitectureID.E2: + case ArchitectureID.E3: + case ArchitectureID.E4: + case ArchitectureID.E_IEPC: + return true; + default: return false; + } + } + + public static bool IsHybridVehicle(this ArchitectureID type) + { + return IsSerialHybridVehicle(type) || IsParallelHybridVehicle(type); + } + + public static bool IsParallelHybridVehicle(this ArchitectureID type) + { + switch (type) { + case ArchitectureID.P1: + case ArchitectureID.P2: + case ArchitectureID.P2_5: + case ArchitectureID.P3: + case ArchitectureID.P4: + //case ArchitectureID.P_IHPC: + return true; + default: + return false; + } + } + + public static bool IsSerialHybridVehicle(this ArchitectureID type) + { + switch (type) { + case ArchitectureID.S2: + case ArchitectureID.S3: + case ArchitectureID.S4: + case ArchitectureID.S_IEPC: + return true; + default: + return false; + } + } } } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs index 6ab4634b71182908f7e1fa4af8832152893a2c6f..cf86db666f90fcdb3c9c63c3353841b7df782d5b 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data.Common; using System.Linq; +using Ninject; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -30,11 +31,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { private DriverData _driverdata; + + protected IDeclarationCycleFactory CycleFactory { get; } + protected virtual IVehicleDeclarationInputData Vehicle => InputDataProvider.JobInputData.Vehicle; protected AbstractDeclarationVectoRunDataFactory( - IDeclarationInputDataProvider dataProvider, IDeclarationReport report, bool checkJobType = true) + IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IDeclarationCycleFactory cycleFactory, bool checkJobType = true) { + CycleFactory = cycleFactory; InputDataProvider = dataProvider; if (checkJobType) { diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs index 16da2cdc845bddb4332e33664cdeff9be4c90486..91c78a71f646d9d4dab0b2f82d51814cd8f93338 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs @@ -40,7 +40,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun public CompletedBusBase(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(null, report, false) + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(null, report, cycleFactory, false) { DataAdapterSpecific = dataAdapterSpecific; DataAdapterGeneric = dataAdapterGeneric; @@ -79,10 +79,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun protected virtual VectoRunData CreateCommonRunData(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, string modSuffix) { - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, - _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + var cycle = CycleFactory.GetDeclarationCycle(mission); - CheckSuperCap(PrimaryVehicle); + CheckSuperCap(PrimaryVehicle); var simulationRunData = new VectoRunData { JobType = PrimaryVehicle.VehicleType, InputData = DataProvider.MultistageJobInputData, @@ -205,8 +204,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun { public Conventional(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, - dataAdapterGeneric) + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, + dataAdapterGeneric, cycleFactory) { } protected override IEnumerable<VectoRunData> GetNextRun() @@ -324,8 +323,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun { protected Hybrid(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, - dataAdapterSpecific, dataAdapterGeneric) { } + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } protected override IEnumerable<VectoRunData> GetNextRun() { @@ -418,8 +417,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun protected SerialHybrid(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, - dataAdapterSpecific, dataAdapterGeneric) { } + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } #region Overrides of Hybrid @@ -576,8 +575,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun { public HEV_S2(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, - dataAdapterSpecific, dataAdapterGeneric) { } + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } #region Overrides of SerialHybrid @@ -606,17 +605,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun public class HEV_S3 : SerialHybrid { - public HEV_S3(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_S3(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class HEV_S4 : SerialHybrid { - public HEV_S4(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_S4(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class HEV_S_IEPC : SerialHybrid { - public HEV_S_IEPC(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_S_IEPC(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } #region Overrides of SerialHybrid @@ -647,8 +646,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun { protected ParallelHybrid(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, - dataAdapterSpecific, dataAdapterGeneric) { } + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } #region Overrides of Hybrid @@ -792,27 +791,27 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun public class HEV_P1 : ParallelHybrid { - public HEV_P1(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_P1(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class HEV_P2 : ParallelHybrid { - public HEV_P2(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_P2(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class HEV_P2_5 : ParallelHybrid { - public HEV_P2_5(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_P2_5(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class HEV_P3 : ParallelHybrid { - public HEV_P3(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_P3(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class HEV_P4 : ParallelHybrid { - public HEV_P4(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public HEV_P4(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } #endregion ParallelHybrid @@ -824,8 +823,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun { public BatteryElectric(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, - dataAdapterSpecific, dataAdapterGeneric) { } + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } protected override IEnumerable<VectoRunData> GetNextRun() { @@ -962,7 +961,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun public class PEV_E2 : BatteryElectric { - public PEV_E2(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public PEV_E2(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } protected override void CreateGearboxAndGearshiftData(VectoRunData runData) { @@ -986,15 +985,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun } public class PEV_E3 : BatteryElectric { - public PEV_E3(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public PEV_E3(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class PEV_E4 : BatteryElectric { - public PEV_E4(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public PEV_E4(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } } public class PEV_E_IEPC : BatteryElectric { - public PEV_E_IEPC(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public PEV_E_IEPC(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } #region Overrides of BatteryElectric @@ -1010,7 +1009,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun public class Exempted : CompletedBusBase { - public Exempted(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) { } + public Exempted(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } protected override IEnumerable<VectoRunData> GetNextRun() { diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs index ae97e2cc5a3b3f4fb5f46d7f27973c162ac1391f..2c3f43e687af73064636cf6cb89e02aadbbc9d52 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs @@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public IDeclarationReport Report { get; } protected LorryBase(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, false) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, cycleFactory, false) { DataAdapter = declarationDataAdapter; InputDataProvider = dataProvider; @@ -71,9 +71,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa Segment segment, IList<IEngineModeDeclarationInputData> engineModes = null, int modeIdx = 0) { - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, - _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); - + var cycle = CycleFactory.GetDeclarationCycle(mission); + CheckSuperCap(vehicle); var simulationRunData = new VectoRunData @@ -207,7 +206,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class Conventional : LorryBase { public Conventional(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } #region Overrides of LorryBase protected override IEnumerable<VectoRunData> GetNextRun() @@ -334,8 +333,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa #endregion public BatteryElectric(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } @@ -447,8 +446,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class PEV_E2 : BatteryElectric { public PEV_E2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } @@ -485,20 +484,20 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class PEV_E3 : BatteryElectric { public PEV_E3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class PEV_E4 : BatteryElectric { public PEV_E4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class PEV_E_IEPC : BatteryElectric { public PEV_E_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } @@ -560,7 +559,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class Exempted : LorryBase { public Exempted(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } #region Overrides of AbstractDeclarationVectoRunDataFactory diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs index 720ccc2e26e192c10e36e2eb5a677f163569ef2f..b3f9bd5c2878f2213492298b53ddffe7a219989b 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs @@ -23,8 +23,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public abstract class Hybrid : LorryBase { public Hybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } @@ -87,8 +87,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa #endregion public SerialHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } @@ -191,8 +191,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class ParallelHybrid : Hybrid { public ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } protected override VectoRunData CreateVectoRunData(Mission mission, @@ -303,8 +303,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class HEV_S2 : SerialHybrid { public HEV_S2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { @@ -334,20 +334,20 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class HEV_S3 : SerialHybrid { public HEV_S3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_S4 : SerialHybrid { public HEV_S4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_S_IEPC : SerialHybrid { public HEV_S_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } @@ -424,39 +424,39 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public class HEV_P1 : ParallelHybrid { public HEV_P1(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P2 : ParallelHybrid { public HEV_P2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P2_5 : ParallelHybrid { public HEV_P2_5(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P3 : ParallelHybrid { public HEV_P3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P4 : ParallelHybrid { public HEV_P4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P_IHPC : HEV_P2 { public HEV_P_IHPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs index 7b5513092db61e01629d322c858c12ac9d8bf15d..6a686c4d025849d40fd2b44ad1bc1676ec3e509e 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs @@ -30,7 +30,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa //public IDeclarationReport Report { get; } protected PrimaryBusBase(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, false) + IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, cycleFactory, false) { DataAdapter = declarationDataAdapter; DataProvider = dataProvider; @@ -91,9 +91,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa Segment segment, IList<IEngineModeDeclarationInputData> engineModes = null, int modeIdx = 0) { - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + var cycle = CycleFactory.GetDeclarationCycle(mission); - CheckSuperCap(Vehicle); + CheckSuperCap(Vehicle); var simulationRunData = new VectoRunData { InputData = DataProvider, @@ -123,7 +123,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public class Conventional : PrimaryBusBase { public Conventional(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } #region Overrides of PrimaryBusBase @@ -212,7 +212,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public abstract class Hybrid : PrimaryBusBase { - protected Hybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + protected Hybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } protected override IEnumerable<VectoRunData> GetNextRun() { @@ -243,8 +243,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public abstract class SerialHybrid : Hybrid { protected SerialHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, - declarationDataAdapter) + IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, + declarationDataAdapter, cycleFactory) { } @@ -345,7 +345,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public class HEV_S2 : SerialHybrid { public HEV_S2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } protected override void CreateGearboxAndGearshiftData(VectoRunData runData) { @@ -373,19 +373,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public class HEV_S3 : SerialHybrid { public HEV_S3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_S4 : SerialHybrid { - public HEV_S4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public HEV_S4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_S_IEPC : SerialHybrid { - public HEV_S_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public HEV_S_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } protected override VectoRunData CreateVectoRunData(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, @@ -444,7 +444,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public abstract class ParallelHybrid : Hybrid { - protected ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + protected ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } protected override VectoRunData CreateVectoRunData(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, @@ -546,38 +546,38 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public class HEV_P1 : ParallelHybrid { - public HEV_P1(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public HEV_P1(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P2 : ParallelHybrid { - public HEV_P2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public HEV_P2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P2_5 : ParallelHybrid { - public HEV_P2_5(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public HEV_P2_5(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P3 : ParallelHybrid { - public HEV_P3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public HEV_P3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class HEV_P4 : ParallelHybrid { - public HEV_P4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public HEV_P4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public abstract class BatteryElectric : PrimaryBusBase { - public BatteryElectric(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public BatteryElectric(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } #region Overrides of PrimaryBusBase @@ -660,7 +660,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public class PEV_E2 : BatteryElectric { - public PEV_E2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public PEV_E2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } #region Overrides of PrimaryBusBase @@ -690,19 +690,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public class PEV_E3 : BatteryElectric { - public PEV_E3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public PEV_E3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class PEV_E4 : BatteryElectric { - public PEV_E4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public PEV_E4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } } public class PEV_E_IEPC : BatteryElectric { - public PEV_E_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public PEV_E_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } protected override bool AxleGearRequired() @@ -753,7 +753,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa public class Exempted : PrimaryBusBase { - public Exempted(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public Exempted(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } #region Overrides of PrimaryBusBase diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs index 8385422cbe777661d95acb22342d6d8333e8df55..7969ce62c527ae9b0c23c7ede1ddcdf81de05939 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs @@ -38,7 +38,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus protected override IVehicleDeclarationInputData Vehicle => throw new NotImplementedException(); protected SingleBusBase(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, - ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report) + ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, cycleFactory) { DataAdapter = dataAdapter; Report = report; @@ -61,8 +61,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus protected virtual VectoRunData CreateCommonRunData(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading) { - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, - _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + var cycle = CycleFactory.GetDeclarationCycle(mission); CheckSuperCap(SingleBusDataProvider.PrimaryVehicle); @@ -129,7 +128,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public class Conventional : SingleBusBase { public Conventional(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, - ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) + ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } @@ -147,7 +146,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus var engineModes = engine.EngineModes; var engineMode = engineModes[modeIdx.Value]; - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + //var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); var runData = CreateCommonRunData(mission, loading); @@ -223,7 +222,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public abstract class Hybrid : SingleBusBase { - protected Hybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + protected Hybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override IEnumerable<VectoRunData> GetNextRun() { @@ -259,7 +258,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public abstract class SerialHybrid : Hybrid { - protected SerialHybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + protected SerialHybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override VectoRunData CreateVectoRunData(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, @@ -354,7 +353,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus } public class HEV_S2 : SerialHybrid { - public HEV_S2(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_S2(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override void CreateGearboxAndGearshiftData(VectoRunData runData) { @@ -383,18 +382,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public class HEV_S3 : SerialHybrid { - public HEV_S3(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_S3(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class HEV_S4 : SerialHybrid { - public HEV_S4(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_S4(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class HEV_S_IEPC : SerialHybrid { - public HEV_S_IEPC(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_S_IEPC(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override VectoRunData CreateVectoRunData(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, @@ -453,7 +452,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public abstract class ParallelHybrid : Hybrid { - protected ParallelHybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + protected ParallelHybrid(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override VectoRunData CreateVectoRunData(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, @@ -562,32 +561,32 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public class HEV_P1 : ParallelHybrid { - public HEV_P1(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_P1(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class HEV_P2 : ParallelHybrid { - public HEV_P2(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_P2(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class HEV_P2_5 : ParallelHybrid { - public HEV_P2_5(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_P2_5(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class HEV_P3 : ParallelHybrid { - public HEV_P3(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_P3(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class HEV_P4 : ParallelHybrid { - public HEV_P4(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public HEV_P4(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public abstract class BatteryElectric : SingleBusBase { - protected BatteryElectric(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + protected BatteryElectric(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override IEnumerable<VectoRunData> GetNextRun() { @@ -665,7 +664,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public class PEV_E2 : BatteryElectric { - public PEV_E2(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public PEV_E2(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override void CreateGearboxAndGearshiftData(VectoRunData runData) { @@ -693,17 +692,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public class PEV_E3 : BatteryElectric { - public PEV_E3(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public PEV_E3(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class PEV_E4 : BatteryElectric { - public PEV_E4(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public PEV_E4(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } } public class PEV_E_IEPC : BatteryElectric { - public PEV_E_IEPC(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public PEV_E_IEPC(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } protected override bool AxleGearRequired() { @@ -754,7 +753,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public class Exempted : SingleBusBase { - public Exempted(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } + public Exempted(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapter, cycleFactory) { } #region Overrides of SingleBusBase diff --git a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs index 4b8ce763d13f0158f4de519386c234552bca27c6..aec5f2a8c3194769391823fd61d17e694b3582b8 100644 --- a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs +++ b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/CompletedBusRunDataFactory.cs @@ -24,7 +24,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories public MockupMultistageCompletedBusRunDataFactory(IMultistageVIFInputData dataProvider, IDeclarationReport report, ISpecificCompletedBusDeclarationDataAdapter dataAdapterSpecific, - IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric) + IGenericCompletedBusDeclarationDataAdapter dataAdapterGeneric, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, dataAdapterSpecific, dataAdapterGeneric, cycleFactory) { } @@ -96,8 +96,8 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories protected override VectoRunData CreateVectoRunDataSpecific(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, int? modeIdx, OvcHevMode ovcMode = OvcHevMode.NotApplicable) - { - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + { + var cycle = CycleFactory.GetDeclarationCycle(mission); var simulationRunData = new VectoRunData { @@ -209,8 +209,9 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories protected override VectoRunData CreateVectoRunDataGeneric(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, Segment primarySegment, int? modeIdx, OvcHevMode ovcHevMode = OvcHevMode.NotApplicable) - { - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + { + var cycle = CycleFactory.GetDeclarationCycle(mission); + return new VectoRunData() { Mission = mission, @@ -231,7 +232,6 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories GearboxData = PrimaryBusMockupRunDataFactory.CreateMockupGearboxData(PrimaryVehicle), AxleGearData = PrimaryBusMockupRunDataFactory.CreateMockupAxleGearData(PrimaryVehicle) }; - //return base.CreateVectoRunDataGeneric(mission, loading, primarySegment, modeIdx); } //#endregion diff --git a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs index c3c5c4fc265890504181db359d9b6f7e28387ed6..827633da865bbc7114e085716bdda9d5bc3d9027 100644 --- a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs @@ -22,7 +22,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories { public MockupLorryVectoRunDataFactory(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) + ILorryDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : base(dataProvider, report, declarationDataAdapter, cycleFactory) { } @@ -140,12 +140,8 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories } else { + var cycle = CycleFactory.GetDeclarationCycle(mission); - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => - { - return DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", - false); - }); runData = new VectoRunData() { Loading = loading.Key, diff --git a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs index d1743508fca680a2b5d94d0c19698680bec8ae70..ba7fdb81da79963ea506e5c5f0cf1bfb521920cd 100644 --- a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs +++ b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs @@ -24,8 +24,8 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories { public PrimaryBusMockupRunDataFactory(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IPrimaryBusDeclarationDataAdapter declarationDataAdapter) : - base(dataProvider, report, declarationDataAdapter) + IPrimaryBusDeclarationDataAdapter declarationDataAdapter, IDeclarationCycleFactory cycleFactory) : + base(dataProvider, report, declarationDataAdapter, cycleFactory) { } #region Overrides of AbstractDeclarationVectoRunDataFactory @@ -154,13 +154,7 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories } else { - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, - _ => - { - return DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", - false); - }); - + var cycle = CycleFactory.GetDeclarationCycle(mission); runData = new VectoRunData() { diff --git a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/VectoMockupRunDataFactoryFactory.cs b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/VectoMockupRunDataFactoryFactory.cs index 3d7ce134fc93f61dda12a87d228c05948e0f9b9d..eb84061a17bfee843430bf301cb8762129292038 100644 --- a/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/VectoMockupRunDataFactoryFactory.cs +++ b/VectoCore/VectoCore/Mockup/Simulation/RundataFactories/VectoMockupRunDataFactoryFactory.cs @@ -52,7 +52,8 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories return new MockupMultistageCompletedBusRunDataFactory( multistageVifInputData, report, new DeclarationDataAdapterSpecificCompletedBus.Conventional(), - new DeclarationDeclarationDataAdapterGenericCompletedBusDeclaration.Conventional()); + new DeclarationDeclarationDataAdapterGenericCompletedBusDeclaration.Conventional(), + null); } else { return new DeclarationModeMultistageBusVectoRunDataFactory(multistageVifInputData, report); @@ -64,7 +65,8 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories var vehicleCategory = declDataProvider.JobInputData.Vehicle.VehicleCategory; if (vehicleCategory.IsLorry()) { - return new MockupLorryVectoRunDataFactory(declDataProvider, report, new DeclarationDataAdapterHeavyLorry.Conventional()); + return new MockupLorryVectoRunDataFactory(declDataProvider, report, new DeclarationDataAdapterHeavyLorry.Conventional(), + null); } if (vehicleCategory.IsBus()) @@ -75,7 +77,8 @@ namespace TUGraz.VectoMockup.Simulation.RundataFactories throw new NotImplementedException(); //return new DeclarationModeMultistageBusVectoRunDataFactory(declDataProvider, report); case VehicleCategory.HeavyBusPrimaryVehicle: - return new PrimaryBusMockupRunDataFactory(declDataProvider, report, new DeclarationDataAdapterPrimaryBus.Conventional()); + return new PrimaryBusMockupRunDataFactory(declDataProvider, report, new DeclarationDataAdapterPrimaryBus.Conventional(), + null); default: break; } diff --git a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs index ab6d222bd64e6d3074946f9b017bcc87a1aa4d6d..f96877376d2aee8b9ce0ed02567c1b7f72190b57 100644 --- a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs +++ b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs @@ -113,28 +113,9 @@ namespace TUGraz.VectoCore.Models.Declaration continue; } - // TODO: MQ 2021-11-30: REMOVE IN PRODUCTION - Stream cycle; - var cycleFile = Path.Combine("DeclarationMissions", - missionType.ToString().Replace("EMS", "") + ".vdri"); - if (File.Exists(cycleFile)) { - cycle = File.OpenRead(cycleFile); - } else { - cycle = RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + - ".MissionCycles." + - missionType.ToString().Replace("EMS", "") + - Constants.FileExtensions.CycleFile); - } - var mission = new Mission { MissionType = missionType, CrossWindCorrectionParameters = row.Field<string>("crosswindcorrection"), - CycleFile = cycle, - //CycleFile = - // RessourceHelper.ReadStream( - // DeclarationData.DeclarationDataResourcePrefix + ".MissionCycles." + - // missionType.ToString().Replace("EMS", "") + - // Constants.FileExtensions.CycleFile), AxleWeightDistribution = GetAxleWeightDistribution(row), BodyCurbWeight = 0.SI<Kilogram>(), Trailer = new List<MissionTrailer>(), diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index dfb9c44b132bb75ab7cf9f8714e8f6e9a86e1389..1db2e57f769e7bab444652b07e10b68912744384 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -33,8 +33,6 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using Newtonsoft.Json.Linq; -using System.Collections.Concurrent; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; @@ -127,11 +125,6 @@ namespace TUGraz.VectoCore.Models.Declaration public static readonly Watt MinDepotChgPwr = 10.SI(Unit.SI.Kilo.Watt).Cast<Watt>(); public static readonly Second DepotChargingDuration = 6.SI(Unit.SI.Hour).Cast<Second>(); - public static readonly ConcurrentDictionary<MissionType, DrivingCycleData> CyclesCache = - new ConcurrentDictionary<MissionType, DrivingCycleData>(); - - - /// <summary> /// Formula for calculating the payload for a given gross vehicle weight. /// (so called "pc-formula", Whitebook Apr 2016, Part 1, p.187) diff --git a/VectoCore/VectoCore/Models/Declaration/Mission.cs b/VectoCore/VectoCore/Models/Declaration/Mission.cs index 369d9555fa865e4038d0d735afadaa5fccd0f413..4bdb05793e9ea251444ef144939daf7e60c548a1 100644 --- a/VectoCore/VectoCore/Models/Declaration/Mission.cs +++ b/VectoCore/VectoCore/Models/Declaration/Mission.cs @@ -58,29 +58,6 @@ namespace TUGraz.VectoCore.Models.Declaration public Kilogram BodyCurbWeight { get; internal set; } - private Stream _cycleFile; - private object _cycleLock = new object(); - [JsonIgnore] - public Stream CycleFile - { - get - { - lock (_cycleLock) { - var memoryStream = new MemoryStream(); - _cycleFile.CopyTo(memoryStream); - memoryStream.Position = 0; - _cycleFile.Seek(0, SeekOrigin.Begin); - return memoryStream; - } - } - internal set - { - lock (_cycleLock) { - _cycleFile = value; - } - } - } - public IList<MissionTrailer> Trailer { get; internal set; } public Kilogram MinLoad { get; internal set; } diff --git a/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs b/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs index 4d08165043c1fd579e3e85125baa903c6fa6f62f..eeb86010129578b391766037c0b751bfe45d230f 100644 --- a/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs +++ b/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs @@ -124,26 +124,9 @@ namespace TUGraz.VectoCore.Models.Declaration var passengerCountRef = busFloorArea * passengerDensityRef; // weight of driver is included in curb mass //var refLoad = passengerCountRef * missionType.GetAveragePassengerMass(); - // TODO: MQ 2021-11-30: REMOVE IN PRODUCTION - Stream cycle; - var cycleFile = Path.Combine("DeclarationMissions", - missionType.ToString().Replace("EMS", "") + ".vdri"); - if (File.Exists(cycleFile)) { - cycle = File.OpenRead(cycleFile); - } else { - cycle = RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + - ".MissionCycles." + - missionType.ToString().Replace("EMS", "") + - Constants.FileExtensions.CycleFile); - } var mission = new Mission { MissionType = missionType, CrossWindCorrectionParameters = row.Field<string>("crosswindcorrection"), - CycleFile = cycle, - //CycleFile = RessourceHelper.ReadStream( - // DeclarationData.DeclarationDataResourcePrefix + ".MissionCycles." + - // missionType.ToString().Replace("EMS", "") + - // Constants.FileExtensions.CycleFile), AxleWeightDistribution = GetAxleWeightDistribution(row), CurbMass = row.ParseDouble("curbmass").SI<Kilogram>(), BodyCurbWeight = 0.SI<Kilogram>(), diff --git a/VectoCore/VectoCore/Models/Declaration/TruckSegments.cs b/VectoCore/VectoCore/Models/Declaration/TruckSegments.cs index d9abe40dfdcc17d6d89f63cd3be2a190879c5add..1660b118d943298f7d4d990f2a5736d5311b9548 100644 --- a/VectoCore/VectoCore/Models/Declaration/TruckSegments.cs +++ b/VectoCore/VectoCore/Models/Declaration/TruckSegments.cs @@ -238,27 +238,10 @@ namespace TUGraz.VectoCore.Models.Declaration var weight = grossVehicleWeight; GetLoadings( out var lowLoad, out var refLoad, payloads, (p, l) => GetLoading(p, weight, vehicleWeight, trailers, l), maxLoad); - - // TODO: MQ 2021-11-30: REMOVE IN PRODUCTION - Stream cycle; - var cycleFile = Path.Combine("DeclarationMissions", - missionType.ToString().Replace("EMS", "") + ".vdri"); - if (File.Exists(cycleFile)) { - cycle = File.OpenRead(cycleFile); - } else { - cycle = RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + - ".MissionCycles." + - missionType.ToString().Replace("EMS", "") + - Constants.FileExtensions.CycleFile); - } - + var mission = new Mission { MissionType = missionType, CrossWindCorrectionParameters = row.Field<string>("crosswindcorrection" + GetMissionSuffix(missionType, true)), - CycleFile = cycle, - //CycleFile = RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".MissionCycles." + - // missionType.ToString().Replace("EMS", "") + - // Constants.FileExtensions.CycleFile), AxleWeightDistribution = GetAxleWeightDistribution(row, missionType), BodyCurbWeight = body.CurbWeight, Trailer = trailers, diff --git a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs index 8124db93853a8011497260a326936009fc0ce3f0..e9eb9f0d1f6fe2d641674958e0dcfcee2f86c316 100644 --- a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs +++ b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs @@ -34,6 +34,7 @@ using Ninject.Extensions.Factory; using Ninject.Modules; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; @@ -54,8 +55,11 @@ namespace TUGraz.VectoCore.Models.Simulation Bind<ISimulatorFactory>().To<SimulatorFactoryDeclaration>().Named(ExecutionMode.Declaration.ToString()); Bind<ISimulatorFactory>().To<SimulatorFactoryEngineering>().Named(ExecutionMode.Engineering.ToString()); + // ToDo: MQ 2023-05-09: REMOVE CLASS IN PRODUCTION!!! + Bind<IDeclarationCycleFactory>().To<DeclarationCycleFromFilesystemFactory>().InSingletonScope(); + //Bind<IDeclarationCycleFactory>().To<DeclarationCycleFactory>().InSingletonScope(); - Bind<IDeclarationReport>().To<NullDeclarationReport>(); + Bind<IDeclarationReport>().To<NullDeclarationReport>(); Bind<IVTPReport>().To<NullVTPReport>(); } diff --git a/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs b/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs index fd7c09fbe95de96f34a6f57a5b65bd6413f8a533..5991abe12cb5e377edf60109b28c2f9e7f597da0 100644 --- a/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs +++ b/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs @@ -97,8 +97,6 @@ namespace TUGraz.VectoCore LoadModule<ComponentWriterNinjectModule>(); - LoadModule<SimulatorFactoryNinjectModule>(); - LoadModule<ResultsNinjectModule>(); LoadModule<MRFNinjectModule>(); diff --git a/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs b/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs index 3773a1dd533331268d8c5b3c9990834e40c88d88..a31cefeade4321ebeafa08c5d1190d306723c09b 100644 --- a/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs @@ -32,6 +32,7 @@ using NUnit.Framework; using System.IO; using System.Linq; +using Ninject; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -50,6 +51,7 @@ namespace TUGraz.VectoCore.Tests.FileIO [Parallelizable(ParallelScope.All)] public class SimulationDataReaderTest { + private StandardKernel _kernel; protected const string DeclarationJob = @"TestData\Jobs\12t Delivery Truck.vecto"; protected const double Tolerance = 0.0001; @@ -57,6 +59,7 @@ namespace TUGraz.VectoCore.Tests.FileIO public void RunBeforeAnyTests() { Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + _kernel = new StandardKernel(new VectoNinjectModule()); } [Category("LongRunning")] @@ -70,7 +73,7 @@ namespace TUGraz.VectoCore.Tests.FileIO } var dataAdapter = new DeclarationDataAdapterHeavyLorry.Conventional(); - var reader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(declarationProvider, null, dataAdapter); + var reader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(declarationProvider, null, dataAdapter, _kernel.Get<IDeclarationCycleFactory>()); //reader.SetJobFile(DeclarationJob); var runData = reader.NextRun().First(); diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 17fab5d06be2c42a2bb993c9f374f5e022a059c6..62a83c790b346e441bb04cba638029f3efe8df31 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -37,6 +37,7 @@ using System.Data; using System.IO; using System.Linq; using System.Xml; +using Ninject; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -69,10 +70,13 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration MissionType.Construction, }; + private StandardKernel _kernel; + [OneTimeSetUp] public void RunBeforeAnyTests() { Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + _kernel = new StandardKernel(new VectoNinjectModule()); } @@ -2075,8 +2079,8 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration CollectionAssert.AreEqual(trailerCurbWeight, m.Trailer.Select(t => t.TrailerCurbWeight.Value())); CollectionAssert.AreEqual(trailerType, m.Trailer.Select(t => t.TrailerType)); CollectionAssert.AreEqual(trailerAxleCount, m.Trailer.Select(t => t.TrailerWheels.Count)); - Assert.IsNotNull(m.CycleFile); - Assert.IsTrue(!string.IsNullOrEmpty(new StreamReader(m.CycleFile).ReadLine())); + //Assert.IsNotNull(m.CycleFile); + //Assert.IsTrue(!string.IsNullOrEmpty(new StreamReader(m.CycleFile).ReadLine())); Assert.AreEqual(null, m.MinLoad); AssertHelper.AreRelativeEqual(lowLoad, m.LowLoad); AssertHelper.AreRelativeEqual(refLoad, m.RefLoad); @@ -2128,7 +2132,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration { var dataProvider = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\12t Delivery Truck.vecto") as IDeclarationInputDataProvider; - var dataReader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(dataProvider, null, new DeclarationDataAdapterHeavyLorry.Conventional()); + var dataReader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(dataProvider, null, new DeclarationDataAdapterHeavyLorry.Conventional(), _kernel.Get<IDeclarationCycleFactory>()); var runs = dataReader.NextRun().ToList(); Assert.AreEqual(6, runs.Count); @@ -2152,7 +2156,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration var dataProvider = JSONInputDataFactory.ReadJsonJob( @"TestData\Jobs\Class4_40t_Long_Haul_Truck.vecto") as IDeclarationInputDataProvider; - var dataReader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(dataProvider, null, new DeclarationDataAdapterHeavyLorry.Conventional()); + var dataReader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(dataProvider, null, new DeclarationDataAdapterHeavyLorry.Conventional(), _kernel.Get<IDeclarationCycleFactory>()); var runs = dataReader.NextRun().ToList(); Assert.AreEqual(8, runs.Count); @@ -2176,7 +2180,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration { var dataProvider = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\40t_Long_Haul_Truck.vecto") as IDeclarationInputDataProvider; - var dataReader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(dataProvider, null, new DeclarationDataAdapterHeavyLorry.Conventional()); + var dataReader = new DeclarationModeHeavyLorryRunDataFactory.Conventional(dataProvider, null, new DeclarationDataAdapterHeavyLorry.Conventional(), _kernel.Get<IDeclarationCycleFactory>()); var runs = dataReader.NextRun().ToList();