diff --git a/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs b/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs index 0cb0972c5f07f435817499fe39c5e93a7ce4a28b..48ad1a6d264c3d862f6bbb8705545abd278fa0fe 100644 --- a/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs @@ -14,6 +14,7 @@ namespace VECTO3GUI2020.Ninject.Factories LoadModule<ComponentViewModelFactoryModule>(); LoadModule<VehicleViewModelFactoryModule>(); LoadModule<XMLWriterFactoryModule>(); + LoadModule<MultistepComponentViewModelFactory>(); //Bind<IXMLWriterFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider(fallback: true)); //Bind<IMultiStageViewModelFactory>().ToFactory(() => new UseFirstArgumentAsNameInstanceProvider(skipFirstArgument: true, fallback: true)); diff --git a/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs b/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs index b60790bcd16fd8ded95b9825fcf61b46dcfa0a4c..2940a013e0b9d2d3816ebccc76b813deff2dfcde 100644 --- a/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs +++ b/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs @@ -28,18 +28,18 @@ namespace VECTO3GUI2020.Ninject.Factories private readonly IDocumentViewModelFactory _documentViewModelFactory; private readonly IVehicleViewModelFactory _vehicleViewModelFactory; - private readonly IComponentViewModelFactory _componentViewModelFactory; + private readonly IMultistepComponentViewModelFactory _multistepComponentViewModelFactory; public MultiStageViewModelFactory( IMultiStageViewModelFactoryDefaultInstanceProvider multiStageVmFactoryDefaultInstanceProvider, IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider multistageViewModelFactoryFirstParameterAsNameInstanceProvider, IDocumentViewModelFactory documentViewModelFactory, - IVehicleViewModelFactory vehicleViewModelFactory) + IVehicleViewModelFactory vehicleViewModelFactory, IMultistepComponentViewModelFactory multistepComponentViewModelFactory) { _multiStageVmFactoryDefaultInstanceProvider = multiStageVmFactoryDefaultInstanceProvider; _multistageViewModelFactoryFirstParameterAsNameInstanceProvider = multistageViewModelFactoryFirstParameterAsNameInstanceProvider; - + _multistepComponentViewModelFactory = multistepComponentViewModelFactory; _documentViewModelFactory = documentViewModelFactory; _vehicleViewModelFactory = vehicleViewModelFactory; } @@ -91,27 +91,19 @@ namespace VECTO3GUI2020.Ninject.Factories return _multiStageVmFactoryDefaultInstanceProvider.GetMultistageAirdragViewModel(consolidatedAirdragInputData); } - public IMultistageAuxiliariesViewModel GetAuxiliariesViewModel() + public IMultistageAuxiliariesViewModel GetAuxiliariesViewModel( + StageInputViewModel.CompletedBusArchitecture arch) { - return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel(); + return _multistepComponentViewModelFactory.CreateNewMultistepBusAuxViewModel(arch); } public IMultistageAuxiliariesViewModel - GetAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData) + GetAuxiliariesViewModel(StageInputViewModel.CompletedBusArchitecture arch, + IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData) { - return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel(consolidatedAuxiliariesInputData); + return _multistepComponentViewModelFactory.CreateNewMultistepBusAuxViewModel(arch); } - //public ICreateVifViewModel GetCreateNewVifViewModel(bool completed) - //{ - // return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel(completed); - //} - - //public ICreateVifViewModel GetCreateNewVifViewModel() - //{ - // return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel(); - //} - #endregion diff --git a/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs b/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs index 64701af2957900d47294b6e490b3b01922e6d2a5..7c6465ad72217188e4a7aa8da12af936c151b32e 100644 --- a/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs @@ -1,6 +1,13 @@ -using Ninject.Extensions.Factory; +using System; +using System.Diagnostics; +using System.Xml.Linq; +using Ninject.Extensions.Factory; using Ninject.Modules; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; +using TUGraz.VectoCore.Utils; +using TUGraz.VectoCore.Utils.Ninject; using VECTO3GUI2020.Model.Multistage; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Interfaces.Common; @@ -11,50 +18,56 @@ using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; namespace VECTO3GUI2020.Ninject.Factories { - // public class MultistageViewModelModule : NinjectModule - // { - // public override void Load() - // { + public interface IMultistepComponentViewModelFactory + { + IMultistageAuxiliariesViewModel CreateMultistepBusAuxViewModel(StageInputViewModel.CompletedBusArchitecture arch, IBusAuxiliariesDeclarationData consolidatedInputData); + IMultistageAuxiliariesViewModel CreateNewMultistepBusAuxViewModel(StageInputViewModel.CompletedBusArchitecture arch); + } - // Bind<IViewModelBase>().To<NewMultiStageJobViewModel>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetNewMultistageJobViewModel()); - // Bind<IMultiStageJobViewModel>().To<MultiStageJobViewModel_v0_1>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultiStageJobViewModel(null)); + public class MultistepComponentViewModelFactory : AbstractNinjectModule + { + private string scopeName = "MultistepComponent"; + #region Overrides of NinjectModule - // Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f)=>f.GetInterimStageVehicleViewModel()); + public override void Load() + { + Bind<IMultistepComponentViewModelFactory>().ToFactory(() => new CombineArgumentsToNameInstanceProvider(new[] { + new CombineArgumentsToNameInstanceProvider.MethodSettings() { + methods = new[] { + typeof(IMultistepComponentViewModelFactory).GetMethod(nameof(IMultistepComponentViewModelFactory.CreateNewMultistepBusAuxViewModel)), + typeof(IMultistepComponentViewModelFactory).GetMethod(nameof(IMultistepComponentViewModelFactory.CreateMultistepBusAuxViewModel)) + }, + combineToNameDelegate = (args) => { + if (args.Length >= 1 && args[0] is StageInputViewModel.CompletedBusArchitecture arch) { + return arch.ToString(); + } + throw new ArgumentException($"arg[0] must be {nameof(StageInputViewModel.CompletedBusArchitecture)}"); + }, + skipArguments = 1, + takeArguments = 1 + } + })).Named(scopeName); + AddBinding<IMultistageAuxiliariesViewModel, MultistageAuxiliariesViewModel_Conventional>(StageInputViewModel.CompletedBusArchitecture.Conventional); + AddBinding<IMultistageAuxiliariesViewModel, MultistageAuxiliariesViewModel_xEV>(StageInputViewModel.CompletedBusArchitecture.HEV); + AddBinding<IMultistageAuxiliariesViewModel, MultistageAuxiliariesViewModel_xEV>(StageInputViewModel.CompletedBusArchitecture.PEV); + AddBinding<IMultistageAuxiliariesViewModel, MultistageAuxiliariesViewModel_xEV>(StageInputViewModel.CompletedBusArchitecture.IEPC); + } - // Bind<IManufacturingStageViewModel>().To<ManufacturingStageViewModel_v0_1>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetManufacturingStageViewModel(null, false)); + [DebuggerStepThrough] + public string GetName(StageInputViewModel.CompletedBusArchitecture arch) + { + return arch.ToString(); + } + #endregion - // Bind<IMultistageAirdragViewModel>().To<MultistageAirdragViewModel>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultistageAirdragViewModel()); - // Bind<IMultistageAuxiliariesViewModel>().To<MultistageAuxiliariesViewModel>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetAuxiliariesViewModel(null)); + public void AddBinding<TInterface, TConcrete>(StageInputViewModel.CompletedBusArchitecture arch) + where TConcrete : class, TInterface + { + Bind<TInterface>().To<TConcrete>().WhenParentNamed(scopeName).Named(GetName(arch)); + } - // Bind<IMultistageDependencies>().To<MultistageLazyDependencies>(); + } - // Bind<ICreateVifViewModel>().To<CreateVifViewModel>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetCreateNewVifViewModel()); - - // Bind<IDocumentViewModel>().To<StageInputViewModel>() - // .Named(typeof(XMLDeclarationInputDataProviderV20).ToString()); - - // Bind<IDocumentViewModel>().To<StageInputViewModel>() - // .NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetStageInputViewModel(default(bool))); - - // Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelMultiStage>() - // .WhenInjectedInto(typeof(IMultiStageJobViewModel)); - - // Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelNewVif>() - // .WhenInjectedInto(typeof(ICreateVifViewModel)); - - // Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelStageInput>() - // .WhenInjectedInto(typeof(IStageViewModelBase)); - - // Bind<JSONJob>().ToSelf(); - // } - //} } diff --git a/VECTO3GUI2020/Ninject/MultistageModule.cs b/VECTO3GUI2020/Ninject/MultistageModule.cs index caadf12e0753ba85ada6a6d42b5f9f2caedabbe4..e69b3286a00e170deb907c5a72dde4ec888c5fbb 100644 --- a/VECTO3GUI2020/Ninject/MultistageModule.cs +++ b/VECTO3GUI2020/Ninject/MultistageModule.cs @@ -22,29 +22,15 @@ namespace VECTO3GUI2020.Ninject Bind<IMultiStageJobViewModel>().To<MultiStageJobViewModel_v0_1>(). NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultiStageJobViewModel(null)); - //Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f)=>f.GetInterimStageVehicleViewModel()); - Bind<IManufacturingStageViewModel>().To<ManufacturingStageViewModel_v0_1>(). NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetManufacturingStageViewModel(null, false)); Bind<IMultistageAirdragViewModel>().To<MultistageAirdragViewModel>(). NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultistageAirdragViewModel()); - Bind<IMultistageAuxiliariesViewModel>().To<MultistageAuxiliariesViewModel>(). - NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetAuxiliariesViewModel(null)); Bind<IMultistageDependencies>().To<MultistageLazyDependencies>(); - //Bind<ICreateVifViewModel>().To<CreateVifViewModel>(). - // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetCreateNewVifViewModel()); - - //Bind<IDocumentViewModel>().To<StageInputViewModel>() - // .Named(typeof(XMLDeclarationInputDataProviderV20).ToString()); - - //Bind<IDocumentViewModel>().To<StageInputViewModel>() - // .NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetStageInputViewModel(default(bool))); - Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelMultiStage>() .WhenInjectedInto(typeof(IMultiStageJobViewModel)); diff --git a/VECTO3GUI2020/Resources/XML/XMLTypes.cs b/VECTO3GUI2020/Resources/XML/XMLTypes.cs index 81c8bcaeb4e5634b7e24c5fab293763fe7f46db2..3cc7b697a06b292e3f25415e7acc7d633611ce63 100644 --- a/VECTO3GUI2020/Resources/XML/XMLTypes.cs +++ b/VECTO3GUI2020/Resources/XML/XMLTypes.cs @@ -1,11 +1,28 @@ -namespace VECTO3GUI2020.Resources.XML +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; + +namespace VECTO3GUI2020.Resources.XML { public static class XMLTypes { - + #region Vehicle + + public const string Vehicle_Conventional_CompletedBusDeclarationType = + XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE; + public const string Vehicle_Hev_CompletedBusDeclarationType = + XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE; + public const string Vehicle_Pev_CompletedBusDeclarationType = + XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE; + public const string Vehicle_Iepc_CompletedBusDeclarationType = + XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE; + + public const string Vehicle_Exempted_CompletedBusDeclarationType = + XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE; + + + #endregion - #region Components - public const string Components_xEV_CompletedBusType = "Components_xEV_CompletedBusType"; + #region Components + public const string Components_xEV_CompletedBusType = "Components_xEV_CompletedBusType"; public const string Components_Conventional_CompletedBusType = "Components_Conventional_CompletedBusType"; #endregion diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs index 813df32c9a351a28ad05b07511e9a63342bf79a4..b45d4c152f99810f6d4caa6fd78a1d47389f36bc 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs @@ -16,6 +16,8 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Properties; +using VECTO3GUI2020.Resources.XML; +using VECTO3GUI2020.Util.XML; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; @@ -107,13 +109,18 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation #endregion - + protected bool _exemptedVehicle; public string Name => "Vehicle"; public bool IsPresent => true; - public DataSource DataSource { get; private set; } + public DataSource DataSource => new DataSource() { + TypeVersion = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, + Type = XMLType + }; + + public abstract string XMLType { get; } public bool SavedInDeclarationMode => true; @@ -151,11 +158,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation InitEmpty(); } - protected InterimStageBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) + protected InterimStageBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory, bool exemptedVehicle = false) { _multiStageViewModelFactory = multistepViewModelFactory; var vehicleData = consolidatedVehicleData ?? vehicleInput; - _exemptedVehicle = vehicleData.ExemptedVehicle; + _exemptedVehicle = exemptedVehicle; if (consolidatedVehicleData != null && vehicleInput == null) { InitConsolidated(consolidatedVehicleData); @@ -174,38 +181,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private void SetDataSource(IVehicleDeclarationInputData inputData) { - //if (inputData.DataSource == null) { - // XNamespace version = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - // var type = ""; - // if (inputData.ExemptedVehicle) { - // type = XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE; - // } else { - // switch (inputData.VehicleType) { - // case VectoSimulationJobType.ConventionalVehicle: - // type = XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE; - // case VectoSimulationJobType.ParallelHybridVehicle: - // case VectoSimulationJobType.SerialHybridVehicle: - // case VectoSimulationJobType.IHPC: - // break; - // case VectoSimulationJobType.BatteryElectricVehicle: - // break; - - // case VectoSimulationJobType.IEPC_E: - // break; - // case VectoSimulationJobType.IEPC_S: - // break; - - // case VectoSimulationJobType.EngineOnlySimulation: - // break; - // default: - // throw new ArgumentOutOfRangeException(); - // } - - // } - - //} else { - // DataSource = inputData.DataSource; - //} } @@ -213,7 +188,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { if (!_exemptedVehicle) { MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel(); - MultistageAuxiliariesViewModel = _multiStageViewModelFactory.GetAuxiliariesViewModel(); + MultistageAuxiliariesViewModel = _multiStageViewModelFactory.GetAuxiliariesViewModel(Architecture); MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => { if (sender is IMultistageAirdragViewModel vm) { @@ -250,7 +225,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation }); MultistageAuxiliariesViewModel = - _multiStageViewModelFactory.GetAuxiliariesViewModel(consolidatedVehicleData?.Components? + _multiStageViewModelFactory.GetAuxiliariesViewModel(Architecture, consolidatedVehicleData?.Components? .BusAuxiliaries); } @@ -272,7 +247,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation if (!_exemptedVehicle) { MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel(); - MultistageAuxiliariesViewModel = _multiStageViewModelFactory.GetAuxiliariesViewModel(); + MultistageAuxiliariesViewModel = _multiStageViewModelFactory.GetAuxiliariesViewModel(Architecture); } CreateParameterViewModels(); @@ -440,9 +415,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public void SetVehicleInputData(IVehicleDeclarationInputData vehicleInputData, bool checkExempted) { - if (checkExempted && vehicleInputData.ExemptedVehicle != ExemptedVehicle) { - throw new VectoException(ExemptedVehicle ? "Only exempted stage inputs are allowed" : "Exempted Vehicle not allowed"); - } + //if (checkExempted && vehicleInputData.ExemptedVehicle != ExemptedVehicle) { + // throw new VectoException(ExemptedVehicle ? "Only exempted stage inputs are allowed" : "Exempted Vehicle not allowed"); + //} if (ExemptedVehicle) { SetExemptedVehicleInputData(vehicleInputData); @@ -1283,7 +1258,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private bool _airdragModifiedMultistepMandatory; private int? _numberPassengersStandingLowerDeck; private int? _numberPassengersStandingUpperDeck; - protected bool _exemptedVehicle; } @@ -1303,6 +1277,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public override StageInputViewModel.CompletedBusArchitecture Architecture => StageInputViewModel.CompletedBusArchitecture.Conventional; + public override string XMLType => XMLTypes.Vehicle_Conventional_CompletedBusDeclarationType; + #endregion } @@ -1311,20 +1287,19 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { public InterimStageExemptedBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) : base( - consolidatedVehicleData, vehicleInput, multistepViewModelFactory) + consolidatedVehicleData, vehicleInput, multistepViewModelFactory,exemptedVehicle:true) { - _exemptedVehicle = true; } public InterimStageExemptedBusVehicleViewModel(IMultiStageViewModelFactory multistepViewModelFactory) : base(multistepViewModelFactory, exempted:true) { } + public override string XMLType => XMLTypes.Vehicle_Exempted_CompletedBusDeclarationType; + #region Overrides of InterimStageBusVehicleViewModel - #region Overrides of InterimStageBusVehicleViewModel - - public override StageInputViewModel.CompletedBusArchitecture Architecture => + public override StageInputViewModel.CompletedBusArchitecture Architecture => StageInputViewModel.CompletedBusArchitecture.Exempted; #endregion @@ -1345,7 +1320,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { get => StageInputViewModel.CompletedBusArchitecture.HEV; } - } + + public override string XMLType => XMLTypes.Vehicle_Hev_CompletedBusDeclarationType; + } public class InterimStagePevBusVehicleViewModel : InterimStageBusVehicleViewModel { @@ -1363,9 +1340,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { get { return StageInputViewModel.CompletedBusArchitecture.PEV; } } - - #endregion - } + public override string XMLType => XMLTypes.Vehicle_Pev_CompletedBusDeclarationType; + #endregion + } public class InterimStageIEPCBusVehicleViewModel : InterimStageBusVehicleViewModel { @@ -1381,8 +1358,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public override StageInputViewModel.CompletedBusArchitecture Architecture => StageInputViewModel.CompletedBusArchitecture.IEPC; - - #endregion - } + public override string XMLType => XMLTypes.Vehicle_Iepc_CompletedBusDeclarationType; + #endregion + } } \ No newline at end of file diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs index 918e5b32ab4dd579c5fb84d6a180ce47950bea56..3e00f6cdacce13de3ad746d017a340470a8c5469 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs @@ -34,15 +34,15 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } - public class MultistageAuxiliariesViewModel : ViewModelBase, IMultistageAuxiliariesViewModel, IDataErrorInfo + public abstract class MultistageAuxiliariesViewModel : ViewModelBase, IMultistageAuxiliariesViewModel, IDataErrorInfo { - public MultistageAuxiliariesViewModel() + protected MultistageAuxiliariesViewModel() { CreateParameterViewModels(); } - public MultistageAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData) + protected MultistageAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData) { ConsolidatedInputData = consolidatedAuxiliariesInputData; @@ -682,4 +682,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation #endregion } + + + public class MultistageAuxiliariesViewModel_Conventional : MultistageAuxiliariesViewModel + { + public MultistageAuxiliariesViewModel_Conventional() : base() + { + + } + + protected MultistageAuxiliariesViewModel_Conventional(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData) : base(consolidatedAuxiliariesInputData) + { + + } + } + + public class MultistageAuxiliariesViewModel_xEV : MultistageAuxiliariesViewModel + { + public MultistageAuxiliariesViewModel_xEV() : base() + { + + } + + protected MultistageAuxiliariesViewModel_xEV(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData) : base(consolidatedAuxiliariesInputData) + { } + } } \ No newline at end of file diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs index f184661710a2142ea2c103852bc7407924a05058..b93c2ce500415e99472ca37103f8410aa12f90c3 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs @@ -48,8 +48,8 @@ IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider IMultistageAirdragViewModel GetMultistageAirdragViewModel( IAirdragDeclarationInputData consolidatedAirdragInputData); - IMultistageAuxiliariesViewModel GetAuxiliariesViewModel(); - IMultistageAuxiliariesViewModel GetAuxiliariesViewModel( + IMultistageAuxiliariesViewModel GetAuxiliariesViewModel(StageInputViewModel.CompletedBusArchitecture arch); + IMultistageAuxiliariesViewModel GetAuxiliariesViewModel(StageInputViewModel.CompletedBusArchitecture arch, IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData); } } diff --git a/Vecto3GUI2020Test/ViewModelTests/FactoryTests/ComponentViewModelFactoryTest.cs b/Vecto3GUI2020Test/ViewModelTests/FactoryTests/ComponentViewModelFactoryTest.cs index fa391e5afdbc066df59e48098512b605f3c7cf4f..5763f060b3390515f9ab96398d7f7a1c6b046c50 100644 --- a/Vecto3GUI2020Test/ViewModelTests/FactoryTests/ComponentViewModelFactoryTest.cs +++ b/Vecto3GUI2020Test/ViewModelTests/FactoryTests/ComponentViewModelFactoryTest.cs @@ -5,6 +5,7 @@ using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Ninject.Factories; using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; +using VECTO3GUI2020.ViewModel.MultiStage.Implementation; using Vecto3GUI2020Test.MockInput; using Vecto3GUI2020Test.Utils; @@ -60,5 +61,16 @@ public class ComponentViewModelFactoryTest } } + [Test] + public void CreateMultistepAuxiliaryViewModel([Values] StageInputViewModel.CompletedBusArchitecture arch) + { + if (arch == StageInputViewModel.CompletedBusArchitecture.Exempted) { + return; + } + var multistepComponentFactory = _kernel.Get<IMultistepComponentViewModelFactory>(); + + var auxVm = multistepComponentFactory.CreateNewMultistepBusAuxViewModel(arch); + } + } \ No newline at end of file diff --git a/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs index 41153d6123b6a5f09f62b99046776af180dec9bd..044ef9ba0f30c9932611815a0751700bcc3a6967 100644 --- a/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs @@ -133,6 +133,7 @@ namespace Vecto3GUI2020Test.ViewModelTests } [Test, Description("File -> Create Exempted Interim/Completed Input")] + [Ignore("Command removed")] public void CreateExemptedStepInput() { _jobListViewModel.NewExemptedCompletedInputCommand.Execute(null); @@ -186,18 +187,9 @@ namespace Vecto3GUI2020Test.ViewModelTests } [TestCase(true, TestName = "Exempted")] - [TestCase(false, TestName = "NotExempted")] public void addNewFilesToJobList(bool exempted) { - if (exempted) - { - _jobListViewModel.NewExemptedCompletedInputCommand.Execute(null); - } - else - { - _jobListViewModel.NewCompletedInputCommand.Execute(null); - } - + _jobListViewModel.NewCompletedInputCommand.Execute(null); Assert.AreEqual(1, _jobListViewModel.Jobs.Count); } diff --git a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs index 3a51f0eb107d23ac241809d7562ca0374e67a41c..757b42a486621b97b7bf8e32f64f35b2c8667c34 100644 --- a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs @@ -3,26 +3,38 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Ninject; using NUnit.Framework; using TUGraz.VectoCommon.BusAuxiliaries; using VECTO3GUI2020.ViewModel.MultiStage.Implementation; +using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; namespace Vecto3GUI2020Test.ViewModelTests { [TestFixture] public class MultistageAuxiliariesViewModelTests : ViewModelTestBase { + private IMultiStageViewModelFactory _viewModelFactory; + + [SetUp] + public void Setup() + { + _kernel = TestHelper.GetKernel(); + _viewModelFactory = _kernel.Get<IMultiStageViewModelFactory>(); + } + [TestCase(StageInputViewModel.CompletedBusArchitecture.Conventional)] + [TestCase(StageInputViewModel.CompletedBusArchitecture.HEV)] + public void TestAllowedValuesHeatPumpTypeDriver(StageInputViewModel.CompletedBusArchitecture arch) + { + var auxVm = _viewModelFactory.GetAuxiliariesViewModel( + arch) as MultistageAuxiliariesViewModel; - [Test] - public void TestAllowedValuesHeatPumpTypeDriver() - { - var auxVm = new MultistageAuxiliariesViewModel(null); auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration6; - Assert.AreEqual(auxVm.HeatPumpTypeDriverAllowedValues.Count,1); - Assert.Contains(HeatPumpType.not_applicable, auxVm.HeatPumpTypeDriverAllowedValues); + Assert.AreEqual(auxVm.HeatPumpTypeDriverAllowedValues.Count, 1); + Assert.Contains(HeatPumpType.not_applicable, auxVm.HeatPumpTypeDriverAllowedValues); auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration3; - Assert.IsFalse(auxVm.HeatPumpTypeDriverAllowedValues.Contains(HeatPumpType.not_applicable)); + Assert.IsFalse(auxVm.HeatPumpTypeDriverAllowedValues.Contains(HeatPumpType.not_applicable)); auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration10; Assert.AreEqual(auxVm.HeatPumpTypeDriverAllowedValues.Count, 1); @@ -33,25 +45,27 @@ namespace Vecto3GUI2020Test.ViewModelTests } - [Test] - public void TestEnumParameters() + [TestCase(StageInputViewModel.CompletedBusArchitecture.Conventional)] + [TestCase(StageInputViewModel.CompletedBusArchitecture.HEV)] + public void TestEnumParameters(StageInputViewModel.CompletedBusArchitecture arch) { - var auxVm = new MultistageAuxiliariesViewModel(null); - auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.none; - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.R_744; - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); + var auxVm = _viewModelFactory.GetAuxiliariesViewModel( + arch) as MultistageAuxiliariesViewModel; + auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.none; + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); + auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.R_744; + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - auxVm.HeatPumpGroupEditingEnabled = false; - auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeCoolingDriverCompartment)].CurrentContent = - HeatPumpType.R_744; - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); + auxVm.HeatPumpGroupEditingEnabled = false; + auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeCoolingDriverCompartment)].CurrentContent = + HeatPumpType.R_744; + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeCoolingDriverCompartment)].CurrentContent = - HeatPumpType.none; + auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeCoolingDriverCompartment)].CurrentContent = + HeatPumpType.none; - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); } } } diff --git a/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs index 2525fa144741e040c820ccea287b2dc53802fc4b..ed1e8d923455e668df5d212dccd0241d140230f0 100644 --- a/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs @@ -183,6 +183,35 @@ namespace Vecto3GUI2020Test.ViewModelTests } + [Test] + public void CreateAndSaveMinimalInput([Values] StageInputViewModel.CompletedBusArchitecture arch, [Values] bool addAuxInput, [Values] bool loadAirdrag) + { + var stepInput = _viewModelFactory.GetCreateNewStepInputViewModel(false) as StageInputViewModel; + Assert.NotNull(stepInput.VehicleViewModel); + + var oldVm = stepInput.VehicleViewModel; + stepInput.Architecture = arch; + Assert.NotNull(stepInput.VehicleViewModel); + Assert.AreNotSame(oldVm, stepInput.VehicleViewModel); + Assert.That(stepInput.Title.Contains(arch.ToString())); + + + var vehicleVm = stepInput.VehicleViewModel as InterimStageBusVehicleViewModel; + vehicleVm.Manufacturer = $"A {arch}_manufacturer"; + + + if (addAuxInput && arch != StageInputViewModel.CompletedBusArchitecture.Exempted) { + var auxVm = vehicleVm.MultistageAuxiliariesViewModel as MultistageAuxiliariesViewModel; + auxVm.BrakelightsLED = true; + } + + if (loadAirdrag && arch != StageInputViewModel.CompletedBusArchitecture.Exempted) { + Assert.Fail(); + } + + stepInput.SaveInputDataExecute($"{arch}_step_input.xml"); + _dialogHelper.AssertNoErrorDialogs(); + } } diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml index f23081c95c253aa94db05313e647a0d1193dbc87..62309d37c9d68f3b5f10144436ec4568b490238e 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent V:\\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:AirDrag> <Data id="TestAirDrag1234" xsi:type="AirDragDataDeclarationType"> <Manufacturer>Test AirDrag Manufacturer</Manufacturer>