diff --git a/VECTO3GUI2020/App.xaml b/VECTO3GUI2020/App.xaml index 2655e63c000b91d4ef3b7958157faf8437f2ea41..a0a32a7f03e28a215c69b6eadd9571c7d05e353b 100644 --- a/VECTO3GUI2020/App.xaml +++ b/VECTO3GUI2020/App.xaml @@ -8,7 +8,8 @@ <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!-- Add new ResourceDictionaries here--> - <ResourceDictionary Source="Resources/ViewModelBindings.xaml"/> + <ResourceDictionary Source="/Resources/ViewModelBindings/ViewModelBindings.xaml"/> + <ResourceDictionary Source="/Resources/ViewModelBindings/VehicleViewModelBinding.xaml"/> <ResourceDictionary Source="Resources/Converter.xaml"/> <ResourceDictionary Source="Resources/MultistageParameterDataTemplates.xaml"/> <ResourceDictionary Source="Resources\Styles\ButtonStyles.xaml"/> diff --git a/VECTO3GUI2020/Helper/TemplateSelector/MultistageVehicleDataTemplateSelector.cs b/VECTO3GUI2020/Helper/TemplateSelector/MultistageVehicleDataTemplateSelector.cs index 5c230dfe950700dc01724da4c9dbe16c46be2a22..406427ba00fb77b20ec55098cd4b62594c947da3 100644 --- a/VECTO3GUI2020/Helper/TemplateSelector/MultistageVehicleDataTemplateSelector.cs +++ b/VECTO3GUI2020/Helper/TemplateSelector/MultistageVehicleDataTemplateSelector.cs @@ -29,7 +29,7 @@ namespace VECTO3GUI2020.Helper.TemplateSelector Type type = null; switch (vm) { - case InterimStageBusVehicleViewModel_v2_8 declvm: + case InterimStageBusVehicleViewModel declvm: if (declvm.ExemptedVehicle) { type = typeof(VehicleView_v2_8_exempted); } else { diff --git a/VECTO3GUI2020/Ninject/Factories/ComponentViewModelFactoryModule.cs b/VECTO3GUI2020/Ninject/Factories/ComponentViewModelFactoryModule.cs index ff9189b185a4b52f7979ed0a5872ac6fdb5f2e1d..56e05248aedb8397fbfc55408b4d8267fec90fd1 100644 --- a/VECTO3GUI2020/Ninject/Factories/ComponentViewModelFactoryModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/ComponentViewModelFactoryModule.cs @@ -21,6 +21,8 @@ namespace VECTO3GUI2020.Ninject.Factories { IComponentViewModel CreateComponentViewModel(DataSource source, object inputData); ICommonComponentViewModel CreateCommonComponentViewModel(object inputData); + + } diff --git a/VECTO3GUI2020/Ninject/Factories/DocumentViewModelFactoryModule.cs b/VECTO3GUI2020/Ninject/Factories/DocumentViewModelFactoryModule.cs index 095f79dc2be39734c43a383d1b7e27103e9bc1b7..f703b8f85bd3836b4cd2a188f9f0585a96598dc9 100644 --- a/VECTO3GUI2020/Ninject/Factories/DocumentViewModelFactoryModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/DocumentViewModelFactoryModule.cs @@ -30,11 +30,11 @@ namespace VECTO3GUI2020.Ninject.Factories public override void Load() { - Bind<IDocumentViewModelFactory>().To<DocumentViewModelFactory>().Named(DocumentViewModelFactoryScope); + Bind<IDocumentViewModelFactory>().To<DocumentViewModelFactory>().InSingletonScope().Named(DocumentViewModelFactoryScope); #region MultistepViewModel - Bind<IMultiStepInputViewModelFactory>().ToFactory().Named(MultistepInputScope); + Bind<IMultiStepInputViewModelFactory>().ToFactory().InSingletonScope().Named(MultistepInputScope); Bind<IDocumentViewModel>().To<MultiStageJobViewModel_v0_1>().WhenParentNamed(MultistepInputScope); #endregion diff --git a/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs b/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs index cae711f13f5dafafe1a6c8ad1d93fc1812bee199..bbde4ae5a62a40f8113a32198cc66cfef56e445c 100644 --- a/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs @@ -22,8 +22,9 @@ namespace VECTO3GUI2020.Ninject.Factories LoadModule<DocumentViewModelFactoryModule>(); LoadModule<ComponentViewModelFactoryModule>(); LoadModule<VehicleViewModelFactoryModule>(); + LoadModule<XMLWriterFactoryModule>(); - Bind<IXMLWriterFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider(fallback: true)); + //Bind<IXMLWriterFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider(fallback: true)); //Bind<IMultiStageViewModelFactory>().ToFactory(() => new UseFirstArgumentAsNameInstanceProvider(skipFirstArgument: true, fallback: true)); Bind<IJobEditViewModelFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider()); diff --git a/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs b/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs index d53b700596d71a5af7cc23c9417dd6a49b85dea3..514e90305a4e9c8759d99e9ee833769bed3c7771 100644 --- a/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs +++ b/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs @@ -1,4 +1,5 @@ using Ninject; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; @@ -27,8 +28,9 @@ namespace VECTO3GUI2020.Ninject.Factories private readonly IDocumentViewModelFactory _documentViewModelFactory; private readonly IVehicleViewModelFactory _vehicleViewModelFactory; + private readonly IComponentViewModelFactory _componentViewModelFactory; - public MultiStageViewModelFactory( + public MultiStageViewModelFactory( IMultiStageViewModelFactoryDefaultInstanceProvider multiStageVmFactoryDefaultInstanceProvider, IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider multistageViewModelFactoryFirstParameterAsNameInstanceProvider, IDocumentViewModelFactory documentViewModelFactory, @@ -54,10 +56,14 @@ namespace VECTO3GUI2020.Ninject.Factories return _documentViewModelFactory.CreateDocumentViewModel(inputData) as IMultiStageJobViewModel; } - public IVehicleViewModel GetInterimStageVehicleViewModel() + public IMultistageVehicleViewModel GetInterimStageVehicleViewModel(StageInputViewModel.CompletedBusArchitecture arch) { - return _multiStageVmFactoryDefaultInstanceProvider.GetInterimStageVehicleViewModel(); - } + + if (_vehicleViewModelFactory.CreateNewVehicleViewModel(arch) is IMultistageVehicleViewModel veh) { + return veh; + }; + throw new VectoException($"Could not create viewmodel for {arch} completed bus!"); + } public IVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, bool exempted) { diff --git a/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs b/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs index 3461abc7ecc6b76d4998b43a08d3979253679d15..64701af2957900d47294b6e490b3b01922e6d2a5 100644 --- a/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/MultistageViewModelModule.cs @@ -22,7 +22,7 @@ namespace VECTO3GUI2020.Ninject.Factories // Bind<IMultiStageJobViewModel>().To<MultiStageJobViewModel_v0_1>(). // NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultiStageJobViewModel(null)); - // Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>(). + // Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel>(). // NamedLikeFactoryMethod((IMultiStageViewModelFactory f)=>f.GetInterimStageVehicleViewModel()); // Bind<IManufacturingStageViewModel>().To<ManufacturingStageViewModel_v0_1>(). diff --git a/VECTO3GUI2020/Ninject/Factories/VehicleViewModelFactory.cs b/VECTO3GUI2020/Ninject/Factories/VehicleViewModelFactory.cs index d3bb6afbafb7b6604806fb468e28296d617119a2..f088d8dececf9673e60184159ba63a7caa0ce209 100644 --- a/VECTO3GUI2020/Ninject/Factories/VehicleViewModelFactory.cs +++ b/VECTO3GUI2020/Ninject/Factories/VehicleViewModelFactory.cs @@ -25,6 +25,8 @@ namespace VECTO3GUI2020.Ninject.Factories /// <param name="exempted"></param> /// <returns></returns> IVehicleViewModel CreateVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, IVehicleDeclarationInputData vehicleInput); + + IVehicleViewModel CreateNewVehicleViewModel(StageInputViewModel.CompletedBusArchitecture arch); } public class VehicleViewModelFactoryModule : AbstractNinjectModule @@ -39,10 +41,12 @@ namespace VECTO3GUI2020.Ninject.Factories new CombineArgumentsToNameInstanceProvider.MethodSettings() { combineToNameDelegate = (args) => { if (args.Length >= 2) { + //Step inputviewmodel with consolidate vehicle data from previous steps if (args[0] is IVehicleDeclarationInputData consolidatedVehicle) { - return DefaultName(consolidatedVehicle.ExemptedVehicle); + return ArchName(consolidatedVehicle.VehicleType, consolidatedVehicle.ExemptedVehicle).ToString(); } + //Standalone step input if (args[1] is IVehicleDeclarationInputData vehicle) { return CombineToName(vehicle.DataSource.TypeVersion, vehicle.DataSource.Type); } @@ -53,20 +57,40 @@ namespace VECTO3GUI2020.Ninject.Factories takeArguments = 2, skipArguments = 0, }, + new CombineArgumentsToNameInstanceProvider.MethodSettings() { + methods = new[]{typeof(IVehicleViewModelFactory).GetMethod(nameof(IVehicleViewModelFactory.CreateNewVehicleViewModel))}, + 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); - ///Empty vehicle view models - AddVehicleViewModelBinding<InterimStageBusVehicleViewModel_v2_8>(false); - AddVehicleViewModelBinding<InterimStageBusVehicleViewModel_v2_8>(true); + ///Empty vehicle view models //Create depending on jobtype + AddVehicleViewModelBinding<InterimStageConventionalBusVehicleViewModel>(VectoSimulationJobType.ConventionalVehicle); + //One for hev is enough map to same name + AddVehicleViewModelBinding<InterimStageHevBusVehicleViewModel>( VectoSimulationJobType.ParallelHybridVehicle); + + AddVehicleViewModelBinding<InterimStagePevBusVehicleViewModel>( VectoSimulationJobType.BatteryElectricVehicle); + + AddVehicleViewModelBinding<InterimStageIEPCBusVehicleViewModel>(VectoSimulationJobType.IEPC_E); + + AddVehicleViewModelBinding<InterimStageExemptedBusVehicleViewModel>(VectoSimulationJobType.EngineOnlySimulation, true); + + - ///Vehicle Viewmodels for existing files - AddVehicleViewModelBinding<InterimStageBusVehicleViewModel_v2_8>(XMLDeclarationConventionalCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE); - AddVehicleViewModelBinding<InterimStageBusVehicleViewModel_v2_8>(XMLDeclarationHevCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE); + ///Vehicle Viewmodels for existing files + AddVehicleViewModelBinding<InterimStageConventionalBusVehicleViewModel>(XMLDeclarationConventionalCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE); + AddVehicleViewModelBinding<InterimStageHevBusVehicleViewModel>(XMLDeclarationHevCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE); - AddVehicleViewModelBinding<InterimStageBusVehicleViewModel_v2_8>(XMLDeclarationPEVCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE); - AddVehicleViewModelBinding<InterimStageBusVehicleViewModel_v2_8>(XMLDeclarationIepcCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE); + AddVehicleViewModelBinding<InterimStagePevBusVehicleViewModel>(XMLDeclarationPEVCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE); + AddVehicleViewModelBinding<InterimStageIEPCBusVehicleViewModel>(XMLDeclarationIepcCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE); - AddVehicleViewModelBinding<InterimStageBusVehicleViewModel_v2_8>(XMLDeclarationExemptedCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE); + AddVehicleViewModelBinding<InterimStageExemptedBusVehicleViewModel>(XMLDeclarationExemptedCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE); } @@ -76,15 +100,32 @@ namespace VECTO3GUI2020.Ninject.Factories Bind<IVehicleViewModel>().To<TConcrete>().WhenAnyAncestorNamed(scopeName).Named(CombineToName(ns, type)); } - private void AddVehicleViewModelBinding<TConcrete>(bool exempted) where TConcrete : IVehicleViewModel + private void AddVehicleViewModelBinding<TConcrete>(VectoSimulationJobType jobType, bool exempted = false) where TConcrete : IVehicleViewModel { - Bind<IVehicleViewModel>().To<TConcrete>().WhenAnyAncestorNamed(scopeName).Named(DefaultName(exempted)); + Bind<IVehicleViewModel>().To<TConcrete>().WhenAnyAncestorNamed(scopeName).Named(ArchName(jobType, exempted).ToString()); } - public static string DefaultName(bool exempted) + public static StageInputViewModel.CompletedBusArchitecture ArchName(VectoSimulationJobType jobType, bool exempted = false) { - return exempted ? "exempted" : "default"; + if (exempted) { + return StageInputViewModel.CompletedBusArchitecture.Exempted; + } + switch(jobType){ + case VectoSimulationJobType.ConventionalVehicle: + return StageInputViewModel.CompletedBusArchitecture.Conventional; + case VectoSimulationJobType.ParallelHybridVehicle: + case VectoSimulationJobType.SerialHybridVehicle: + case VectoSimulationJobType.IHPC: + return StageInputViewModel.CompletedBusArchitecture.HEV; + case VectoSimulationJobType.BatteryElectricVehicle: + return StageInputViewModel.CompletedBusArchitecture.PEV; + case VectoSimulationJobType.IEPC_E: + case VectoSimulationJobType.IEPC_S: + return StageInputViewModel.CompletedBusArchitecture.IEPC; + default: + throw new ArgumentOutOfRangeException(nameof(jobType), jobType, null); + } } public static string CombineToName(XNamespace ns, string type) { diff --git a/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs b/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs index 55ea1fb55720aa0db062d9e38483f8b16761f38c..fa51e19417d7241a54d4ffc791dc42681abb2f67 100644 --- a/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs @@ -1,6 +1,10 @@ using System; +using System.Xml.Linq; using Ninject.Extensions.Factory; using Ninject.Modules; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.Utils; +using TUGraz.VectoCore.Utils.Ninject; using VECTO3GUI2020.Ninject.Util; using VECTO3GUI2020.Util.XML.Implementation; using VECTO3GUI2020.Util.XML.Implementation.ComponentWriter; @@ -10,98 +14,125 @@ using VECTO3GUI2020.Util.XML.Interfaces; namespace VECTO3GUI2020.Ninject.Factories { public class XMLWriterFactoryModule : NinjectModule - { + { + private const string scope = nameof(IXMLWriterFactoryInternal); public override void Load() - { + { + Bind<IXMLWriterFactory>().To<XMLWriterFactory>(); + Bind<IXMLWriterFactoryInternal>().ToFactory(() => new CombineArgumentsToNameInstanceProvider(false, new [] { + new CombineArgumentsToNameInstanceProvider.MethodSettings() { + combineToNameDelegate = ((args) => { + if (args[0] is DataSource dataSource) { + return GetName(dataSource.TypeVersion, dataSource.Type); + } + throw new ArgumentException(); + }), + methods = new []{typeof(IXMLWriterFactoryInternal).GetMethod(nameof(IXMLWriterFactoryInternal.CreateWriter))}, + skipArguments = 1, + takeArguments = 1, + } + })).Named(scope); + + //Array.ForEach( + // XMLVehicleWriter_v2_10.SUPPORTEDVERSIONS, + // sv => + // Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_10>().Named(sv)); + Array.ForEach(XMLVehicleWriter_v2_10.SUPPORTEDVERSIONS, + sv => Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_10>().WhenParentNamed(scope).Named(GetName(sv.version, sv.type))); + + + + #region + + //Array.ForEach( + // XMLDeclarationJobWriter_v1_0.SUPPORTED_VERSIONS, + // sv => + // Bind<IXMLDeclarationJobWriter>().To<XMLDeclarationJobWriter_v1_0>().Named(sv)); + + //Array.ForEach( + // XMLDeclarationJobWriter_v2_0.SUPPORTED_VERSIONS, + // sv => + // Bind<IXMLDeclarationJobWriter>().To<XMLDeclarationJobWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLPTOWriter_v1_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLPTOWriter_v1_0>().Named(sv)); + + //Array.ForEach( + // XMLPTOWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLPTOWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLVehicleWriter_v1_0.SUPPORTEDVERSIONS, + // (sv) => + // Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v1_0>().Named(sv)); + + //Array.ForEach( + // XMLVehicleWriter_v2_0.SUPPORTEDVERSIONS, + // sv => + // Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_0>().Named(sv)); + + + //Array.ForEach( + // XMLComponentsWriter_v1_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v1_0>().Named(sv)); + + //Array.ForEach( + // XMLComponentsWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLEngineWriter_v1_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v1_0>().Named(sv)); + + //Array.ForEach( + // XMLEngineWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLGearboxWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLGearboxWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLRetarderWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLRetarderWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLAxleGearWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAxleGearWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLAxleWheelsWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelsWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLAxleWheelWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLTyreWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_0>().Named(sv)); + + //Array.ForEach( + // XMLTyreWriter_v2_3.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_3>().Named(sv)); + + //Array.ForEach( + // XMLAuxiliariesWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAuxiliariesWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLAirDragWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAirDragWriter_v2_0>().Named(sv)); + + //Bind<IXMLBusAuxiliariesWriter>().To<XMLBusAuxiliariesWriterMultistage>(); + #endregion - Array.ForEach( - XMLDeclarationJobWriter_v1_0.SUPPORTED_VERSIONS, - sv => - Bind<IXMLDeclarationJobWriter>().To<XMLDeclarationJobWriter_v1_0>().Named(sv)); + } - Array.ForEach( - XMLDeclarationJobWriter_v2_0.SUPPORTED_VERSIONS, - sv => - Bind<IXMLDeclarationJobWriter>().To<XMLDeclarationJobWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLPTOWriter_v1_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLPTOWriter_v1_0>().Named(sv)); - - Array.ForEach( - XMLPTOWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLPTOWriter_v2_0>().Named(sv)); - - - Array.ForEach( - XMLVehicleWriter_v1_0.SUPPORTEDVERSIONS, - (sv) => - Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v1_0>().Named(sv)); - - Array.ForEach( - XMLVehicleWriter_v2_0.SUPPORTEDVERSIONS, - sv => - Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLVehicleWriter_v2_10.SUPPORTEDVERSIONS, - sv => - Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_10>().Named(sv)); - - Array.ForEach( - XMLComponentsWriter_v1_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v1_0>().Named(sv)); - - Array.ForEach( - XMLComponentsWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLEngineWriter_v1_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v1_0>().Named(sv)); - - Array.ForEach( - XMLEngineWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLGearboxWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLGearboxWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLRetarderWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLRetarderWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLAxleGearWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLAxleGearWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLAxleWheelsWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelsWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLAxleWheelWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLTyreWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_0>().Named(sv)); - - Array.ForEach( - XMLTyreWriter_v2_3.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_3>().Named(sv)); - - Array.ForEach( - XMLAuxiliariesWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLAuxiliariesWriter_v2_0>().Named(sv)); - Array.ForEach( - XMLAirDragWriter_v2_0.SUPPORTED_VERSIONS, - sv => Bind<IXMLComponentWriter>().To<XMLAirDragWriter_v2_0>().Named(sv)); - - Bind<IXMLBusAuxiliariesWriter>().To<XMLBusAuxiliariesWriterMultistage>(); - - } - } + public string GetName(XNamespace version, string xsdType) + { + return XMLHelper.CombineNamespace(version, xsdType); + } + } } diff --git a/VECTO3GUI2020/Ninject/MultistageModule.cs b/VECTO3GUI2020/Ninject/MultistageModule.cs index 275135c596a7345eb59b9e7dd25a23a79b6436fd..caadf12e0753ba85ada6a6d42b5f9f2caedabbe4 100644 --- a/VECTO3GUI2020/Ninject/MultistageModule.cs +++ b/VECTO3GUI2020/Ninject/MultistageModule.cs @@ -22,8 +22,8 @@ namespace VECTO3GUI2020.Ninject Bind<IMultiStageJobViewModel>().To<MultiStageJobViewModel_v0_1>(). NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultiStageJobViewModel(null)); - Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>(). - NamedLikeFactoryMethod((IMultiStageViewModelFactory f)=>f.GetInterimStageVehicleViewModel()); + //Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel>(). + // NamedLikeFactoryMethod((IMultiStageViewModelFactory f)=>f.GetInterimStageVehicleViewModel()); Bind<IManufacturingStageViewModel>().To<ManufacturingStageViewModel_v0_1>(). NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetManufacturingStageViewModel(null, false)); diff --git a/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs b/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs index 1165316258c5a4a499ca51ca80c031a0ce9d86cd..8827dc17c7036228cbda46ad8b0f33b1ad6b9ecd 100644 --- a/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs +++ b/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs @@ -32,8 +32,8 @@ namespace VECTO3GUI2020.Ninject.Vehicle - Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>().Named(InterimStageBusVehicleViewModel_v2_8.VERSION); - Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>().Named(InterimStageBusVehicleViewModel_v2_8.VERSION_EXEMPTED); + Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel>().Named(InterimStageBusVehicleViewModel.VERSION); + Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel>().Named(InterimStageBusVehicleViewModel.VERSION_EXEMPTED); Bind<IComponentViewModel>().To<EngineViewModel_v1_0>().Named(EngineViewModel_v1_0.VERSION); diff --git a/VECTO3GUI2020/Resources/ViewModelBindings/VehicleViewModelBinding.xaml b/VECTO3GUI2020/Resources/ViewModelBindings/VehicleViewModelBinding.xaml new file mode 100644 index 0000000000000000000000000000000000000000..add55091c0c1e50a748afe424f905e7792c0151c --- /dev/null +++ b/VECTO3GUI2020/Resources/ViewModelBindings/VehicleViewModelBinding.xaml @@ -0,0 +1,44 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:local="clr-namespace:VECTO3GUI2020" + xmlns:interfaces="clr-namespace:VECTO3GUI2020.ViewModel.Interfaces" + xmlns:views="clr-namespace:VECTO3GUI2020.Views" + xmlns:jobeditviews="clr-namespace:VECTO3GUI2020.Views.JobEditViews" + xmlns:impl="clr-namespace:VECTO3GUI2020.ViewModel.Implementation" + xmlns:jobeditimpl="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.JobEdit" + xmlns:vehicleimpl="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle" + xmlns:vehicleviews="clr-namespace:VECTO3GUI2020.Views.JobEditViews.Vehicle" + xmlns:multistageviews="clr-namespace:VECTO3GUI2020.Views.Multistage" + xmlns:additionaljobInfoViews="clr-namespace:VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews" + xmlns:componentimpl="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components" + xmlns:componentviews="clr-namespace:VECTO3GUI2020.Views.JobEditViews.Vehicle.Components" + xmlns:multistageimpl="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation" + xmlns:viewModel="clr-namespace:VECTO3GUI2020.ViewModel" + xmlns:common="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.Common"> + + + <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:InterimStageExemptedBusVehicleViewModel}"> + <multistageviews:VehicleView_v2_8/> + </DataTemplate> + + <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:InterimStageConventionalBusVehicleViewModel}"> + <multistageviews:VehicleView_v2_8/> + </DataTemplate> + + <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:InterimStageHevBusVehicleViewModel}"> + <multistageviews:VehicleView_v2_8/> + </DataTemplate> + + <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:InterimStageIEPCBusVehicleViewModel}"> + <multistageviews:VehicleView_v2_8/> + </DataTemplate> + + <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:InterimStagePevBusVehicleViewModel}"> + <multistageviews:VehicleView_v2_8/> + </DataTemplate> + + + + + +</ResourceDictionary> \ No newline at end of file diff --git a/VECTO3GUI2020/Resources/ViewModelBindings.xaml b/VECTO3GUI2020/Resources/ViewModelBindings/ViewModelBindings.xaml similarity index 98% rename from VECTO3GUI2020/Resources/ViewModelBindings.xaml rename to VECTO3GUI2020/Resources/ViewModelBindings/ViewModelBindings.xaml index 989565530245f6076ecc56cb6d37d494b058d07d..22a017dff7bce12582a4b453a22256a96e04d3e0 100644 --- a/VECTO3GUI2020/Resources/ViewModelBindings.xaml +++ b/VECTO3GUI2020/Resources/ViewModelBindings/ViewModelBindings.xaml @@ -205,9 +205,6 @@ <multistageviews:ManufacturingStageView></multistageviews:ManufacturingStageView> </DataTemplate> - <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:InterimStageBusVehicleViewModel_v2_8}"> - <multistageviews:VehicleView_v2_8/> - </DataTemplate> <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:MultiStageJobViewModel_v0_1}"> <multistageviews:MultiStageView/> diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs index d81f3a11e18dace97d64808396d94ff9e4287074..90534113aba3fa3fba4ee1e0bb4f43ce8f5479aa 100644 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs +++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs @@ -8,6 +8,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; using TUGraz.VectoCore.OutputData.XML.ComponentWriter; using TUGraz.VectoCore.OutputData.XML.GroupWriter; using TUGraz.VectoCore.Utils; @@ -194,9 +195,11 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter public class XMLVehicleWriter_v2_10 : XMLVehicleWriter { private readonly bool _exempted; - public static readonly string[] SUPPORTEDVERSIONS = { - typeof(InterimStageBusVehicleViewModel_v2_8).ToString(), - typeof(StageInputViewModel).ToString() + public static readonly (XNamespace version, string type)[] SUPPORTEDVERSIONS = { + (XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE) + + //typeof(InterimStageBusVehicleViewModel).ToString(), + //typeof(StageInputViewModel).ToString() }; private readonly IGroupWriterFactory _groupWriterFactory; @@ -209,7 +212,7 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory) { - //TODO: CHECK ALL POSSIBIBILITIES FOR VEHICLES + _exempted = inputData.ExemptedVehicle; _conventional = !_exempted; diff --git a/VECTO3GUI2020/Util/XML/Implementation/DocumentWriter/XMLDeclarationJobWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/DocumentWriter/XMLDeclarationJobWriter.cs index f55e85d7d01c7c78cf57259cdb66d9d12b30b256..53a6380c3f41c1a4d2f5e0c81d26c5c9d737d8d5 100644 --- a/VECTO3GUI2020/Util/XML/Implementation/DocumentWriter/XMLDeclarationJobWriter.cs +++ b/VECTO3GUI2020/Util/XML/Implementation/DocumentWriter/XMLDeclarationJobWriter.cs @@ -46,6 +46,8 @@ namespace VECTO3GUI2020.Util.XML.Implementation.DocumentWriter public class XMLDeclarationJobWriter_v1_0 : XMLDeclarationJobWriter { + + public static readonly string[] SUPPORTED_VERSIONS = { typeof(XMLDeclarationJobInputDataProviderV10).ToString() }; diff --git a/VECTO3GUI2020/Util/XML/Interfaces/IXMLWriterFactory.cs b/VECTO3GUI2020/Util/XML/Interfaces/IXMLWriterFactory.cs index 94c82c81bd5e50e00ded437f64ef98ca70e7fd71..8641d7754bb528ad264146cb991f4dbb49ebea29 100644 --- a/VECTO3GUI2020/Util/XML/Interfaces/IXMLWriterFactory.cs +++ b/VECTO3GUI2020/Util/XML/Interfaces/IXMLWriterFactory.cs @@ -1,5 +1,6 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Models.Connector.Ports; using TUGraz.VectoCore.OutputData.XML.Engineering.Interfaces; using TUGraz.VectoCore.OutputData.XML.Engineering.Writer; using VECTO3GUI2020.Util.XML.Implementation.ComponentWriter; @@ -21,4 +22,75 @@ namespace VECTO3GUI2020.Util.XML.Interfaces IXMLBusAuxiliariesWriter CreateBuxAuxiliariesWriter(IBusAuxiliariesDeclarationData inputData); } + + public interface IXMLWriterFactoryInternal + { + TWriter CreateWriter<TWriter, TData>(DataSource source, TData inputData); + } + + public class XMLWriterFactory : IXMLWriterFactory + { + private IXMLWriterFactoryInternal _internalFactory; + + private TWriter CreateWriter<TWriter, TData>(DataSource source, TData inputData) + { + return _internalFactory.CreateWriter<TWriter, TData>(source, inputData); + } + + + #region Implementation of IXMLWriterFactory + + public IXMLDeclarationJobWriter CreateJobWriter(IDeclarationJobInputData inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLVehicleWriter CreateVehicleWriter(IVehicleDeclarationInputData inputData) + { + return _internalFactory.CreateWriter<IXMLVehicleWriter, IVehicleDeclarationInputData>(inputData.DataSource, inputData); + //throw new System.NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IComponentInputData inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAuxiliariesDeclarationInputData inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAxlesDeclarationInputData inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAxleDeclarationInputData inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAirdragDeclarationInputData inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IPTOTransmissionInputData inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLComponentsWriter CreateComponentsWriter(IVehicleComponentsDeclaration inputData) + { + throw new System.NotImplementedException(); + } + + public IXMLBusAuxiliariesWriter CreateBuxAuxiliariesWriter(IBusAuxiliariesDeclarationData inputData) + { + throw new System.NotImplementedException(); + } + + #endregion + } } diff --git a/VECTO3GUI2020/ViewModel/Interfaces/JobEdit/Vehicle/Components/IComponentViewModelFactory.cs b/VECTO3GUI2020/ViewModel/Interfaces/JobEdit/Vehicle/Components/IComponentViewModelFactory.cs index 8b6e590614d0ef9c4fe99e38be9c4bf7ef2acd22..ceb592c14e9e75535b1a79adb3efddde0f5ba65b 100644 --- a/VECTO3GUI2020/ViewModel/Interfaces/JobEdit/Vehicle/Components/IComponentViewModelFactory.cs +++ b/VECTO3GUI2020/ViewModel/Interfaces/JobEdit/Vehicle/Components/IComponentViewModelFactory.cs @@ -2,6 +2,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using VECTO3GUI2020.Ninject.Factories; +using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; namespace VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components { @@ -27,6 +28,9 @@ namespace VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components IComponentViewModel CreateComponentViewModel(IAxleDeclarationInputData inputData); IComponentViewModel CreateComponentViewModel(IAuxiliariesDeclarationInputData inputData); IComponentViewModel CreateComponentViewModel(IAuxiliaryDeclarationInputData inputData); + + + } public class ComponentViewModelFactory : IComponentViewModelFactory diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs similarity index 86% rename from VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs rename to VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs index 3c0a2a2f29591a4f7aebc9e40dd88e96b10ff8a1..9bf584c84d7c31aa8037254826ffbf4e2ddd95ab 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs @@ -6,12 +6,14 @@ using System.Diagnostics; using System.Resources; using System.Runtime.CompilerServices; using System.Xml; +using System.Xml.Linq; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; +using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Properties; using VECTO3GUI2020.ViewModel.Implementation.Common; @@ -58,7 +60,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } - public class InterimStageBusVehicleViewModel_v2_8 : ViewModelBase, IMultistageVehicleViewModel, + public abstract class InterimStageBusVehicleViewModel : ViewModelBase, IMultistageVehicleViewModel, IVehicleComponentsDeclaration, IAdvancedDriverAssistantSystemDeclarationInputData, IDataErrorInfo { public static readonly Type INPUTPROVIDERTYPE = typeof(XMLDeclarationConventionalCompletedBusDataProviderV24); @@ -110,7 +112,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public bool IsPresent => true; - public DataSource DataSource => throw new NotImplementedException(); + public DataSource DataSource { get; private set; } public bool SavedInDeclarationMode => true; @@ -141,54 +143,98 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } - private InterimStageBusVehicleViewModel_v2_8(string inputProviderType, IMultiStageViewModelFactory multiStageViewModelFactory) + protected InterimStageBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory, bool exempted = false) { - if (inputProviderType == VERSION_EXEMPTED) - { - _exemptedVehicle = true; - } - + _exemptedVehicle = exempted; _multiStageViewModelFactory = multiStageViewModelFactory; - - + InitEmpty(); } - public InterimStageBusVehicleViewModel_v2_8(IVehicleDeclarationInputData consolidatedVehicleData, IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) + protected InterimStageBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) { _multiStageViewModelFactory = multistepViewModelFactory; var vehicleData = consolidatedVehicleData ?? vehicleInput; _exemptedVehicle = vehicleData.ExemptedVehicle; if (consolidatedVehicleData != null && vehicleInput == null) { - InitEmpty(consolidatedVehicleData); - - - + InitConsolidated(consolidatedVehicleData); return; } if (vehicleInput != null && consolidatedVehicleData == null) { - InitVehicleData(consolidatedVehicleData); - - + InitVehicleData(vehicleInput); return; } - throw new ArgumentException($"Either {nameof(consolidatedVehicleData)} OR {vehicleInput} must be specified"); + } + + 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; + //} } - private void InitEmpty(IVehicleDeclarationInputData consolidatedVehicleData) + private void InitEmpty() { - ConsolidatedVehicleData = consolidatedVehicleData; + if (!_exemptedVehicle) { + MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel(); + MultistageAuxiliariesViewModel = _multiStageViewModelFactory.GetAuxiliariesViewModel(); + MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => { + if (sender is IMultistageAirdragViewModel vm) + { + if (AirdragModifiedMultistepMandatory) + { + if (vm.AirDragViewModel != null) + { + AirdragModifiedMultistep = true; + } + } + } + }); + } + CreateParameterViewModels(); + } + private void InitConsolidated(IVehicleDeclarationInputData consolidatedVehicleData) + { + ConsolidatedVehicleData = consolidatedVehicleData; - if (!_exemptedVehicle) - { + if (!_exemptedVehicle) { MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel(consolidatedVehicleData?.Components?.AirdragInputData); MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => { @@ -209,18 +255,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation .BusAuxiliaries); } - CreateParameterViewModels(); - - if (consolidatedVehicleData?.AirdragModifiedMultistep != null) - { + if (consolidatedVehicleData?.AirdragModifiedMultistep != null) { AirdragModifiedMultistepMandatory = true; AirdragModifiedMultistepEditingEnabled = true; } - if (consolidatedVehicleData?.Components?.AirdragInputData != null) - { + if (consolidatedVehicleData?.Components?.AirdragInputData != null) { AirdragModifiedMultistepMandatory = true; AirdragModifiedMultistepEditingEnabled = true; } @@ -239,8 +281,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation SetVehicleInputData(vehicleInput); } - private void CreateParameterViewModels() - { + private void CreateParameterViewModels() { _parameterViewModels = new Dictionary<string, MultistageParameterViewModel>(); var properties = this.GetType().GetProperties(); var backedUpParameters = new HashSet<string>() { @@ -1244,7 +1285,71 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private bool _airdragModifiedMultistepMandatory; private int? _numberPassengersStandingLowerDeck; private int? _numberPassengersStandingUpperDeck; - private bool _exemptedVehicle; + protected bool _exemptedVehicle; + + } + + + public class InterimStageConventionalBusVehicleViewModel : InterimStageBusVehicleViewModel + { + public InterimStageConventionalBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, + IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) + : base(consolidatedVehicleData, vehicleInput, multistepViewModelFactory) + { + + } + public InterimStageConventionalBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } + } + + + public class InterimStageExemptedBusVehicleViewModel : InterimStageBusVehicleViewModel + { + public InterimStageExemptedBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, + IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) : base( + consolidatedVehicleData, vehicleInput, multistepViewModelFactory) + { + _exemptedVehicle = true; + } + + public InterimStageExemptedBusVehicleViewModel(IMultiStageViewModelFactory multistepViewModelFactory) : base(multistepViewModelFactory, exempted:true) + { + + } } + + public class InterimStageHevBusVehicleViewModel : InterimStageBusVehicleViewModel + { + public InterimStageHevBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, + IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) : base( + consolidatedVehicleData, vehicleInput, multistepViewModelFactory) + { + + } + + public InterimStageHevBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } + } + + public class InterimStagePevBusVehicleViewModel : InterimStageBusVehicleViewModel + { + public InterimStagePevBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, + IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) : base( + consolidatedVehicleData, vehicleInput, multistepViewModelFactory) + { + + } + public InterimStagePevBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } + } + + public class InterimStageIEPCBusVehicleViewModel : InterimStageBusVehicleViewModel + { + public InterimStageIEPCBusVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, + IVehicleDeclarationInputData vehicleInput, IMultiStageViewModelFactory multistepViewModelFactory) : base( + consolidatedVehicleData, vehicleInput, multistepViewModelFactory) + { + + } + public InterimStageIEPCBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } + } + } \ No newline at end of file diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs index d77c0e4c1d4ba7a28af751a41a46d8e6d49777e1..9cd834fa9f4361268692f00126b5c3d8fc731c64 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs @@ -1,5 +1,9 @@ using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; using System.IO; +using System.Linq; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Properties; @@ -14,6 +18,15 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { public class StageInputViewModel : StageViewModelBase, IDocumentViewModel, IJobEditViewModel { + public enum CompletedBusArchitecture + { + Conventional, + HEV, + PEV, + IEPC, + Exempted + } + private bool _canBeEdited; private DataSource _dataSource; private readonly XmlDocumentType _documentType; @@ -21,6 +34,40 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private bool _selected; private static uint _newDocumentCounter = 0; + + private CompletedBusArchitecture _architecture; + private ObservableCollection<CompletedBusArchitecture> _architectureItems = + new ObservableCollection<CompletedBusArchitecture>(Enum.GetValues(typeof(CompletedBusArchitecture)).Cast<CompletedBusArchitecture>()); + + public ObservableCollection<CompletedBusArchitecture> ArchitectureItems + { + get => _architectureItems; + set => SetProperty(ref _architectureItems, value); + } + + public CompletedBusArchitecture Architecture + { + get => _architecture; + set + { + if (SetProperty(ref _architecture, value)) { + UpdateVehicleViewModel(); + } + } + } + + private void UpdateVehicleViewModel() + { + if (VehicleViewModel.ShowConsolidatedData) { + throw new VectoException("This is only intended on \"standalone\" step inputs"); + } + var oldVm = _vehicleViewModel; + var newVm = _viewModelFactory.GetInterimStageVehicleViewModel(Architecture); + newVm.SetVehicleInputData(oldVm); + VehicleViewModel = newVm; + } + + private StageInputViewModel(IMultiStageViewModelFactory multistageViewModelFactory, IAdditionalJobInfoViewModel additionalJobInfoViewModel) : base(multistageViewModelFactory) { @@ -32,16 +79,22 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public StageInputViewModel(bool exemptedVehicle, IMultiStageViewModelFactory multiStageViewModelFactory, IAdditionalJobInfoViewModel additionalJobInfoViewModel) : this(multiStageViewModelFactory, additionalJobInfoViewModel) { - _vehicleViewModel = _viewModelFactory.CreateStageInputVehicleViewModel( - exemptedVehicle - ? InterimStageBusVehicleViewModel_v2_8.VERSION_EXEMPTED - : InterimStageBusVehicleViewModel_v2_8.VERSION) as IMultistageVehicleViewModel; + Architecture = exemptedVehicle + ? CompletedBusArchitecture.Exempted + : CompletedBusArchitecture.Conventional; + + + _vehicleViewModel = multiStageViewModelFactory.GetInterimStageVehicleViewModel(Architecture); + + Title = $"{GUILabels.Edit_step_input} - New file"; _documentName = $"New {(exemptedVehicle ? "exempted " : "")}step input {++_newDocumentCounter}"; + Init(); - } + return; + } public StageInputViewModel(IDeclarationInputDataProvider inputData, IMultiStageViewModelFactory multiStageViewModelFactory, IAdditionalJobInfoViewModel additionalJobInfoViewModel) : this(multiStageViewModelFactory,additionalJobInfoViewModel) { @@ -49,14 +102,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation //_vehicleViewModel = // _viewModelFactory.CreateStageInputVehicleViewModel(inputData.JobInputData.Vehicle) as IMultistageVehicleViewModel; - //(_vehicleViewModel as InterimStageBusVehicleViewModel_v2_8).ShowConsolidatedData = false; + // (_vehicleViewModel as InterimStageBusVehicleViewModel).ShowConsolidatedData = false; _dataSource = inputData.DataSource; VehicleInputDataFilePath = _dataSource.SourceFile; Title = $"{GUILabels.Edit_step_input} - {Path.GetFileName(_dataSource.SourceFile)}"; - return; - Init(); + Init(); + return; } #region Overrides of StageViewModelBase @@ -84,9 +137,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private void Init() { UpdateTitle(); - Components.Add("vehicle", VehicleViewModel as IViewModelBase); - Components.Add("auxiliaries", VehicleViewModel.MultistageAuxiliariesViewModel as IViewModelBase); - Components.Add("airdrag", VehicleViewModel.MultistageAirdragViewModel as IViewModelBase); + Components["vehicle"] = VehicleViewModel as IViewModelBase; + Components["auxiliaries"] = VehicleViewModel.MultistageAuxiliariesViewModel as IViewModelBase; + Components["airdrag"] = VehicleViewModel.MultistageAirdragViewModel as IViewModelBase; CurrentView = VehicleViewModel as IViewModelBase; ShowSaveAndCloseButtons = true; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs index 1de18c002ca923e6d5efc05913e671193dfcc9dd..b00c7e3b93ccfce147128e7a4b18b3bd20671a66 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs @@ -106,7 +106,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private bool SwitchViewCanExecute(string viewToShow) { - return Components[viewToShow] != null; + var found = Components.TryGetValue(viewToShow, out var vm); + return found && vm != null; } private IRelayCommand _saveInputDataCommand; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs index 771f220bd465596990ecbca28d48677d89c1a521..5fa7479e285b5b77ce674e3f271a75da187025a0 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Utils; +using VECTO3GUI2020.Ninject.Factories; using VECTO3GUI2020.ViewModel.Implementation; using VECTO3GUI2020.ViewModel.Interfaces.Common; using VECTO3GUI2020.ViewModel.Interfaces.Document; @@ -16,10 +17,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Interfaces { public interface IMultiStageViewModelFactory : - IMultiStageViewModelFactoryDefaultInstanceProvider, IDocumentViewModelFactory, + IMultiStageViewModelFactoryDefaultInstanceProvider, IDocumentViewModelFactory, IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider { - + //IVehicleViewModel GetInterimStageVehicleViewModel(StageInputViewModel.CompletedBusArchitecture arch); + IMultistageVehicleViewModel GetInterimStageVehicleViewModel(StageInputViewModel.CompletedBusArchitecture arch); } @@ -35,7 +37,7 @@ IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider IMultiStageJobViewModel GetMultiStageJobViewModel(IMultistepBusInputDataProvider inputData); - IVehicleViewModel GetInterimStageVehicleViewModel(); + //IVehicleViewModel GetInterimStageVehicleViewModel(); IVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, bool exempted); diff --git a/VECTO3GUI2020/Views/JoblistView.xaml b/VECTO3GUI2020/Views/JoblistView.xaml index 1b52ba6ed0fa71863b56f49bde428897d5497062..4136a2984b3c565afde4ac1289abb84744ba66e4 100644 --- a/VECTO3GUI2020/Views/JoblistView.xaml +++ b/VECTO3GUI2020/Views/JoblistView.xaml @@ -14,7 +14,7 @@ d:DesignHeight="450" d:DesignWidth="1000"> - <Grid> + <Grid d:Background="Pink"> <Grid.RowDefinitions> <RowDefinition Height="2*"/> <RowDefinition Height="5"/> diff --git a/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml b/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml index 21a1ba5b48ebed8ed7a3f59915a23f32853c604e..154f54cc6b59a314e7d15f5d601230fd753998dc 100644 --- a/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml +++ b/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml @@ -8,21 +8,23 @@ xmlns:system="clr-namespace:System;assembly=mscorlib" xmlns:properties="clr-namespace:VECTO3GUI2020.Properties" mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation:ManufacturingStageViewModel_v0_1 }"> + d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation:StageInputViewModel}"> + + <!--d:DataContext="{d:DesignInstance implementation:ManufacturingStageViewModel_v0_1 }"--> <Grid> - <DockPanel> + <DockPanel d:Background="LightPink"> - <DockPanel DockPanel.Dock="Top" LastChildFill="False"> + <DockPanel DockPanel.Dock="Top" LastChildFill="False" d:Background="Aqua"> <UniformGrid DockPanel.Dock="Left" Width="350" Rows="1" HorizontalAlignment="Left"> <Button Style="{DynamicResource MultiStageButtonStyle1}" - Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Vehicle">Vehicle</Button> + Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Vehicle" x:Name="TopButton">Vehicle</Button> <Button Style="{DynamicResource MultiStageButtonStyle1}" Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Airdrag">Airdrag</Button> <Button Style="{DynamicResource MultiStageButtonStyle1}" Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Auxiliaries">Auxiliaries</Button> </UniformGrid> - <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" Margin="0 10 20 10" > + <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" Margin="0 10 20 10" d:Visibility="Visible" d:Background="Green"> <StackPanel.Visibility> <PriorityBinding> <Binding Path="StepCount" Converter="{StaticResource AlwaysVisibleConverter}"/> @@ -43,6 +45,17 @@ </Label> </StackPanel> + <StackPanel d:Background="Red" + DockPanel.Dock="Right" + Orientation="Horizontal" + HorizontalAlignment="Center" + VerticalAlignment="Center" + Margin="0 10 20 10"> + <Label Padding="4">Architecture</Label> + <ComboBox MinWidth="150" ItemsSource="{Binding ArchitectureItems, UpdateSourceTrigger=PropertyChanged}" SelectedValue="{Binding Architecture, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"> + </ComboBox> + </StackPanel> + </DockPanel> <UniformGrid Rows="1" Width="350" DockPanel.Dock="Bottom" HorizontalAlignment="Right" @@ -54,7 +67,7 @@ Command="{Binding CloseWindowCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}">Close</Button> </UniformGrid> - <ContentControl DockPanel.Dock="Top" ContentTemplateSelector="{StaticResource MultistageVehicleDataTemplateSelector}" Content="{Binding CurrentView}"/> + <ContentControl DockPanel.Dock="Top" ContentTemplateSelector="{StaticResource MultistageVehicleDataTemplateSelector}" Content="{Binding CurrentView}" d:Background="Beige"/> </DockPanel> </Grid> </UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml index 5fb13f8d3cbcdce2ba840f84557e1eec004af5b4..a9ce8d0a4888e00250691c29129e3f93ad63c03c 100644 --- a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml +++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml @@ -7,7 +7,7 @@ xmlns:custom="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation" xmlns:properties="clr-namespace:VECTO3GUI2020.Properties" xmlns:resources="clr-namespace:System.Resources;assembly=mscorlib" - d:DataContext="{d:DesignInstance Type=implementation:InterimStageBusVehicleViewModel_v2_8}" + d:DataContext="{d:DesignInstance Type=implementation:InterimStageBusVehicleViewModel}" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" BorderBrush="{DynamicResource ButtonHighlightColor}" BorderThickness="2px" Margin="4px"> <UserControl.Resources> diff --git a/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs index c2a312fdc352c860b221b040a7ff336d92390d31..9c955c82ee6fac5c9eba8b23eb206331b9ca7dad 100644 --- a/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs @@ -24,7 +24,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vm = LoadFileFromPath(TestData.consolidated_multiple_stages_airdrag); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsTrue(vehicleVm.AirdragModifiedMultistepEditingEnabled); @@ -41,7 +41,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsFalse(vehicleVm.AirdragModifiedMultistepEditingEnabled); } @@ -59,7 +59,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vm = LoadFileFromPath(TestData.primary_vehicle_only); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsNull(vehicleVm.AirdragModifiedMultistep); @@ -92,7 +92,7 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.IsNotNull(secondstageVm); var secondStageVehicleVm = (secondstageVm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistepEditingEnabled); Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistepMandatory); Assert.IsNull(secondStageVehicleVm.ConsolidatedVehicleData.AirdragModifiedMultistep); @@ -110,7 +110,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vm = LoadFileFromPath(TestData.primary_vehicle_only); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsNull(vehicleVm.AirdragModifiedMultistep); @@ -135,7 +135,7 @@ namespace Vecto3GUI2020Test.ViewModelTests //var vm = loadFile(primary_vehicle_only); //var vehicleVM = // vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - // InterimStageBusVehicleViewModel_v2_8; + // InterimStageBusVehicleViewModel; //Assert.IsNull(vehicleVM.AirdragModifiedMultistage); @@ -152,7 +152,7 @@ namespace Vecto3GUI2020Test.ViewModelTests { var vm = LoadFileFromPath(TestData.consolidated_multiple_stages_airdrag); - var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); @@ -184,7 +184,7 @@ namespace Vecto3GUI2020Test.ViewModelTests { var vm = LoadFileFromPath(TestData.consolidated_multiple_stages_airdrag); - var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); @@ -221,7 +221,7 @@ namespace Vecto3GUI2020Test.ViewModelTests { var vm = LoadFileFromPath(TestData.consolidated_multiple_stages_airdrag); - var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); @@ -248,7 +248,7 @@ namespace Vecto3GUI2020Test.ViewModelTests { var vm = LoadFileFromPath(TestData.consolidated_multiple_stages_airdrag); - var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); diff --git a/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs b/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs index 1252aecfaf634d4a54c0b2575f0d57b47d025001..539280729bc61c3260d4c140e90719d35ce74a52 100644 --- a/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs @@ -32,7 +32,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vehicleVm = multistageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsTrue(vehicleVm.ExemptedVehicle); @@ -98,7 +98,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vehicleVm = multistageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsTrue(vehicleVm.ExemptedVehicle); diff --git a/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs b/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs index 1c3bccfa5a813dc641f0b090fade7a1e48f5caa6..83dacbfbd9f7a2f39c487948ceee6203be441f46 100644 --- a/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs +++ b/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs @@ -50,6 +50,14 @@ namespace Vecto3GUI2020Test.ViewModelTests.FactoryTests Assert.NotNull(stepInputViewModel); } + [TestCase] + public void NewStepInput() + { + var exempted = false; + var document = _documentViewModelFactory.GetCreateNewStepInputViewModel(exempted); + + } + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] diff --git a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs index 03a5c274d5bbf028fb604bd1ca72d56d53f1a5b6..2732ae6fa89474f7c5df94aba41bed11e7005ffc 100644 --- a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs +++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs @@ -32,7 +32,7 @@ namespace Vecto3GUI2020Test { //Load Primary Vehicle VIF var newMultiStageJob = LoadFileFromPath(TestData.primary_vehicle_only); - var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel; Assert.NotNull(vehicle); vehicle.Manufacturer = "test1"; vehicle.ManufacturerAddress = "testAddress2"; @@ -57,7 +57,7 @@ namespace Vecto3GUI2020Test { //load file var newMultiStageJob = LoadFileFromPath(TestData.primary_vehicle_only); - var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel; } @@ -69,7 +69,7 @@ namespace Vecto3GUI2020Test var newMultistageJobViewModel = LoadFileFromPath(TestData.consolidated_multiple_stages_airdrag) as NewMultiStageJobViewModel; var vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.NotNull(vehicle); @@ -78,7 +78,7 @@ namespace Vecto3GUI2020Test newMultistageJobViewModel.AddVifFile(Path.GetFullPath(TestData.consolidated_multiple_stages_hev)); Assert.AreEqual(Path.GetFullPath(TestData.consolidated_multiple_stages_hev), newMultistageJobViewModel.VifPath); - vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as InterimStageBusVehicleViewModel_v2_8; + vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as InterimStageBusVehicleViewModel; Assert.IsFalse(vehicle.AirdragModifiedMultistepEditingEnabled); } @@ -106,7 +106,7 @@ namespace Vecto3GUI2020Test multiStageJobViewModel.ManufacturingStageViewModel as ManufacturingStageViewModel_v0_1; var vehicleViewModel = - manufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + manufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; @@ -150,7 +150,7 @@ namespace Vecto3GUI2020Test Assert.IsTrue(string.IsNullOrEmpty(vehicleViewModel.VIN)); Assert.IsNull(vehicleViewModel.Model); - var vehicleViewModelV28 = vehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleViewModelV28 = vehicleViewModel as InterimStageBusVehicleViewModel; Assert.NotNull(vehicleViewModelV28); Assert.Null(vehicleViewModelV28.HeightInMm); @@ -200,7 +200,7 @@ namespace Vecto3GUI2020Test var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; var airdragLoadResult = vehicleVm.MultistageAirdragViewModel.LoadAirdragFile(Path.GetFullPath(TestData.airdragLoadTestFile)); @@ -276,7 +276,7 @@ namespace Vecto3GUI2020Test //manStageViewModel.LoadStageInputData(vehicleInputDataFilePath); - var vehicleViewModel = manStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleViewModel = manStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; Assert.NotNull(vehicleViewModel); //Assert.IsFalse(getMockDialogHelper().Verify); diff --git a/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs similarity index 97% rename from Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs rename to Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs index 191257ae143ffc2d43f87db31391e7211639302a..4a174d4eab9fdadf34b6f90165a047a22e3a1b67 100644 --- a/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs @@ -19,7 +19,7 @@ using Vecto3GUI2020Test.Utils; namespace Vecto3GUI2020Test.ViewModelTests { [TestFixture] - public class StageViewModelTests + public class StepViewModelTests { private IKernel _kernel; private MockWindowHelper _windowHelper; @@ -38,7 +38,7 @@ namespace Vecto3GUI2020Test.ViewModelTests IMultiStageViewModelFactory vmFactory = _kernel.Get<IMultiStageViewModelFactory>(); var StageInput = vmFactory.GetCreateNewStepInputViewModel(exempted) as StageInputViewModel; - var vehicleVm = StageInput.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleVm = StageInput.VehicleViewModel as InterimStageBusVehicleViewModel; vehicleVm.Manufacturer = "adsf"; vehicleVm.ManufacturerAddress = "asdf 123"; vehicleVm.VIN = "1234567890"; @@ -64,7 +64,7 @@ namespace Vecto3GUI2020Test.ViewModelTests IMultiStageViewModelFactory vmFactory = _kernel.Get<IMultiStageViewModelFactory>(); var StageInput = vmFactory.GetCreateNewStepInputViewModel(false) as StageInputViewModel; - var vehicleVm = StageInput.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var vehicleVm = StageInput.VehicleViewModel as InterimStageBusVehicleViewModel; vehicleVm.Manufacturer = "adsf"; vehicleVm.ManufacturerAddress = "asdf 123"; vehicleVm.VIN = "1234567890"; @@ -130,6 +130,14 @@ namespace Vecto3GUI2020Test.ViewModelTests + [Test] + public void CreateStepInput() + { + + + + } + } diff --git a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs index 772927586af252b6da27c05cc419f7b844851ff3..3f85f070fb031a8afe6804fc1486e02e73b0fa74 100644 --- a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs @@ -40,7 +40,7 @@ namespace Vecto3GUI2020Test.ViewModelTests //Set Mandatory Fields var vehicle = - multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel; vehicle.ManufacturerAddress = "Address"; vehicle.Manufacturer = "Manufacturer"; vehicle.VIN = "VIN12345678"; @@ -69,7 +69,7 @@ namespace Vecto3GUI2020Test.ViewModelTests //Set Necessary Fields var vehicleVm = - multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel; vehicleVm.Manufacturer = "adsf"; vehicleVm.ManufacturerAddress = "asdf 123"; @@ -131,7 +131,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var multistagevm = LoadFileFromPath(_finalVif); - var VehicleViewModel = multistagevm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + var VehicleViewModel = multistagevm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; VehicleViewModel.Manufacturer = "Manufacturer"; VehicleViewModel.ManufacturerAddress = "Manufacturer Address"; @@ -169,7 +169,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var jobListVm = _kernel.Get<IJobListViewModel>(); var vehicleVm = - multistagevm.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + multistagevm.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; Assert.IsTrue(vehicleVm.ExemptedVehicle); vehicleVm.Manufacturer = "Test Manufacturer 1"; @@ -210,7 +210,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var jobListVm = _kernel.Get<IJobListViewModel>(); var vehicleVm = - multistagevm.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + multistagevm.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel; Assert.IsTrue(vehicleVm.ExemptedVehicle); vehicleVm.Manufacturer = "Test Manufacturer 1"; @@ -264,7 +264,7 @@ namespace Vecto3GUI2020Test.ViewModelTests multiStageViewModel.ManufacturingStageViewModel.LoadStageInputData(Path.GetFullPath(TestData.stageInputFullSample)); var vehicle = - multiStageViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + multiStageViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel; vehicle.ManufacturerAddress = "Address"; vehicle.Manufacturer = "Manufacturer"; vehicle.VIN = "VIN12345678"; diff --git a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs index 2f459a6b21c7c91698ffe3d2b5fa7bedbf0a3dfb..b87145048f14d137a51b8bc06e9003662db436e9 100644 --- a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs @@ -16,7 +16,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vm = LoadFileFromPath(TestData.primary_vehicle_only); var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; var enteredString = "test"; var modelParam = vehicleVM.ParameterViewModels[nameof(vehicleVM.Model)]; //Null after loading @@ -68,7 +68,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vm = LoadFileFromPath(TestData.primary_vehicle_only); var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; Assert.IsNull(vehicleVM.CurbMassChassis?.Value()); var curbMassParameter = vehicleVM.ParameterViewModels[nameof(vehicleVM.CurbMassChassis)]; @@ -88,7 +88,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vm = LoadFileFromPath(TestData.primary_vehicle_only); var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; var vmConc = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; vmConc.ManufacturingStageViewModel.LoadStageInputData(TestData.stageInputFullSample); Assert.IsFalse(vmConc.ManufacturingStageViewModel.VehicleViewModel.HasErrors); @@ -106,7 +106,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - InterimStageBusVehicleViewModel_v2_8; + InterimStageBusVehicleViewModel; var vehicleData = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle; @@ -133,7 +133,7 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.NotNull(vm); var vehicleViewModel = - vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel; //Assert.NotNull(vm.MultiStageJobViewModel.ManufacturingStages); //Assert.IsNotEmpty(vm.MultiStageJobViewModel.ManufacturingStages); diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs index baded159152531137f0040cd4853ee76cf0d85b0..06239d9eb9a3349bf3f9edf30aa0066381ee41a1 100644 --- a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs +++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs @@ -47,7 +47,7 @@ namespace Vecto3GUI2020Test Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel); - var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel; Assert.NotNull(manstageVehicleViewModel); //Assert.AreEqual(GetTestDataPath(fileName), newMultistageJobViewModel.VifPath); @@ -57,7 +57,7 @@ namespace Vecto3GUI2020Test var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel; Assert.NotNull(auxiliariesViewModel); - var airdragViewModel = (manstageVehicleViewModel as InterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel; + var airdragViewModel = (manstageVehicleViewModel as InterimStageBusVehicleViewModel)?.MultistageAirdragViewModel; Assert.NotNull(airdragViewModel); } return newMultistageJobViewModel; diff --git a/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs b/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs index 1cfd49d07de0a50946c871db6e3e83f11fbb4784..1714092c65d76aac48bd3494a9efb968498188f2 100644 --- a/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs +++ b/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs @@ -28,10 +28,15 @@ namespace TUGraz.VectoCore.Utils.Ninject /// Specifies the number of arguments that are passed to the <see cref="combineToNameDelegate"/> /// </summary> public int takeArguments; - /// <summary> - /// Sets the methods for which these settings apply, leave empty for default settings - /// </summary> - public MethodInfo[] methods; + + //TODO: use expressions instead of method info + // Expression<Func<int, string>> expression = i => i.ToString(); + // MethodInfo method = ((MethodCallExpression)expression.Body).Method; + + /// <summary> + /// Sets the methods for which these settings apply, leave empty for default settings + /// </summary> + public MethodInfo[] methods; } public delegate string CombineToName(params object[] arguments);