Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 5c81e11c authored by Harald Martini's avatar Harald Martini
Browse files

refactored componentviewmodelfactory, added tests for airdrag viewmodels

parent b6df3e27
Branches
Tags
No related merge requests found
Showing
with 780 additions and 471 deletions
...@@ -3,6 +3,7 @@ using System.Windows; ...@@ -3,6 +3,7 @@ using System.Windows;
using Ninject; using Ninject;
using TUGraz.VectoCore; using TUGraz.VectoCore;
using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Ninject;
using VECTO3GUI2020.Ninject.Factories;
using VECTO3GUI2020.Ninject.Vehicle; using VECTO3GUI2020.Ninject.Vehicle;
using VECTO3GUI2020.Properties; using VECTO3GUI2020.Properties;
using Application = System.Windows.Application; using Application = System.Windows.Application;
......
using System;
using Ninject.Extensions.Factory;
using Ninject.Modules;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24;
using TUGraz.VectoCore.Utils;
using TUGraz.VectoCore.Utils.Ninject;
using VECTO3GUI2020.Helper;
using VECTO3GUI2020.ViewModel.Implementation.Common;
using VECTO3GUI2020.ViewModel.Implementation.Document;
using VECTO3GUI2020.ViewModel.Interfaces.Document;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace VECTO3GUI2020.Ninject
{
public class DocumentViewModelFactoryModule : NinjectModule
{
#region Overrides of NinjectModule
public const string DocumentViewModelFactoryScope = nameof(IDocumentViewModelFactory);
public const string MultistepInputScope = nameof(IMultiStepInputViewModelFactory);
public const string DeclarationViewModelScope = nameof(IDeclarationInputViewModelFactory);
public const string NewDocumentViewModelScope = nameof(INewDocumentViewModelFactory);
public const string PrimaryAndStageInputScope = nameof(IPrimaryAndStageInputViewModelFactory);
public override void Load()
{
Bind<IDocumentViewModelFactory>().To<DocumentViewModelFactory>().Named(DocumentViewModelFactoryScope);
#region MultistepViewModel
Bind<IMultiStepInputViewModelFactory>().ToFactory().Named(MultistepInputScope);
Bind<IDocumentViewModel>().To<MultiStageJobViewModel_v0_1>().WhenParentNamed(MultistepInputScope);
#endregion
#region DeclarationInputData
Bind<IDeclarationInputViewModelFactory>().ToFactory( () => new CombineArgumentsToNameInstanceProvider(true,
new [] {
new CombineArgumentsToNameInstanceProvider.MethodSettings() {
methods = new []{typeof(IDeclarationInputViewModelFactory).GetMethod(nameof(IDeclarationInputViewModelFactory.CreateDeclarationViewModel))},
takeArguments = 1,
combineToNameDelegate = (arguments) => {
if (arguments == null || arguments.Length < 1) {
throw new ArgumentException("Invalid number of arguments");
}
if (arguments[0] is IDeclarationInputDataProvider inputData) {
var name = $"{inputData.JobInputData.Vehicle.DataSource.SourceVersion}:{inputData.JobInputData.Vehicle.DataSource.Type}";
return name;
}
throw new ArgumentException($"Invalid argument of type {arguments[0].GetType()}");
}
},
}
)
).Named(DeclarationViewModelScope);
Bind<IDocumentViewModel>().To<SimulationOnlyDeclarationJob>().WhenParentNamed(DeclarationViewModelScope);
var StageInputXMLVersions = new [] {
new { XMLDeclarationConventionalCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE},
new { XMLDeclarationHevCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE},
new { XMLDeclarationPEVCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE},
new { XMLDeclarationExemptedCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE},
new { XMLDeclarationIepcCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE},
};
foreach (var version in StageInputXMLVersions) {
var name = $"{version.NAMESPACE_URI.GetVersionFromNamespaceUri()}:{version.XSD_TYPE}";
Bind<IDocumentViewModel>().To<StageInputViewModel>().WhenParentNamed(DeclarationViewModelScope)
.Named(name);
}
#endregion
#region NewViewModels
Bind<INewDocumentViewModelFactory>().ToFactory().Named(NewDocumentViewModelScope);
Bind<IDocumentViewModel>().ToConstructor<StageInputViewModel>(
constructorArgs => new StageInputViewModel(
constructorArgs.Inject<bool>(),
constructorArgs.Inject<IMultiStageViewModelFactory>(),
constructorArgs.Inject<IAdditionalJobInfoViewModel>()))
.WhenParentNamed(NewDocumentViewModelScope)
.NamedLikeFactoryMethod((INewDocumentViewModelFactory f) => f.GetCreateNewStepInputViewModel(false)); ;
Bind<IDocumentViewModel>().ToConstructor<CreateVifViewModel>(
constructorArgs => new CreateVifViewModel(
constructorArgs.Inject<bool>(),
constructorArgs.Inject<IDialogHelper>(),
constructorArgs.Inject<IXMLInputDataReader>(),
constructorArgs.Inject<IAdditionalJobInfoViewModel>()))
.WhenParentNamed(NewDocumentViewModelScope)
.NamedLikeFactoryMethod((INewDocumentViewModelFactory f) => f.GetCreateNewVifViewModel(false));
#endregion
Bind<IPrimaryAndStageInputViewModelFactory>().ToFactory().Named(PrimaryAndStageInputScope);
Bind<IDocumentViewModel>().To<CreateVifViewModel>().WhenParentNamed(PrimaryAndStageInputScope);
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.AccessControl;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Ninject.Extensions.Factory;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
using TUGraz.VectoCore.Utils;
using TUGraz.VectoCore.Utils.Ninject;
using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components;
using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components;
namespace VECTO3GUI2020.Ninject.Factories
{
public interface IComponentViewModelFactoryInternal
{
IComponentViewModel CreateComponentViewModel(DataSource source, object inputData);
ICommonComponentViewModel CreateCommonComponentViewModel(object inputData);
}
public class ComponentViewModelFactoryModule : AbstractNinjectModule
{
private IComponentViewModelFactoryInternal factory;
private const string scopeName = nameof(IComponentViewModelFactory);
private const string common = "common";
#region Overrides of NinjectModule
public override void Load()
{
Bind<IComponentViewModelFactory>().To<ComponentViewModelFactory>();
Bind<IComponentViewModelFactoryInternal>().ToFactory(() => new CombineArgumentsToNameInstanceProvider(new[] {
new CombineArgumentsToNameInstanceProvider.MethodSettings() {
methods = new []{typeof(IComponentViewModelFactoryInternal).GetMethod(nameof(IComponentViewModelFactoryInternal.CreateComponentViewModel))},
combineToNameDelegate = CombineToNameDelegate,
skipArguments = 1,
takeArguments = 1,
},
new CombineArgumentsToNameInstanceProvider.MethodSettings() {
methods = new []{typeof(IComponentViewModelFactoryInternal).GetMethod(nameof(IComponentViewModelFactoryInternal.CreateCommonComponentViewModel))},
combineToNameDelegate = arguments => common,
skipArguments = 0,
takeArguments = 0,
}
})).Named(scopeName);
Bind<ICommonComponentViewModel>().To<CommonComponentViewModel>().WhenAnyAncestorNamed(scopeName).Named(common);
AddInternalComponentBinding<AirDragViewModel_v1_0>(XMLDeclarationAirdragDataProviderV10.NAMESPACE_URI, XMLDeclarationAirdragDataProviderV10.XSD_TYPE);
AddInternalComponentBinding<AirDragViewModel_v2_0>(XMLDeclarationAirdragDataProviderV20.NAMESPACE_URI, XMLDeclarationAirdragDataProviderV20.XSD_TYPE);
AddInternalComponentBinding<AirDragViewModel_v2_4>(XMLDeclarationAirdragDataProviderV24.NAMESPACE_URI, XMLDeclarationAirdragDataProviderV24.XSD_TYPE);
}
private void AddInternalComponentBinding<TConcrete>(XNamespace ns, string type) where TConcrete : IComponentViewModel
{
Bind<IComponentViewModel>().To<TConcrete>().WhenAnyAncestorNamed(scopeName).Named(CombineToName(ns, type));
}
private string CombineToNameDelegate(object[] arguments)
{
if (arguments.Length >= 1 && arguments[0] is DataSource dataSource) {
XNamespace ns = dataSource.TypeVersion;
var type = dataSource.Type;
return CombineToName(ns, xsdType: type);
}
throw new ArgumentException($"First argument must be of type {typeof(DataSource)}");
}
private string CombineToName(XNamespace ns, string xsdType)
{
return XMLHelper.CombineNamespace(ns, xsdType);
}
#endregion
}
}
using System;
using Ninject.Extensions.Factory;
using Ninject.Modules;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24;
using TUGraz.VectoCore.Utils;
using TUGraz.VectoCore.Utils.Ninject;
using VECTO3GUI2020.Helper;
using VECTO3GUI2020.ViewModel.Implementation.Common;
using VECTO3GUI2020.ViewModel.Implementation.Document;
using VECTO3GUI2020.ViewModel.Interfaces.Document;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace VECTO3GUI2020.Ninject.Factories
{
public class DocumentViewModelFactoryModule : NinjectModule
{
#region Overrides of NinjectModule
public const string DocumentViewModelFactoryScope = nameof(IDocumentViewModelFactory);
public const string MultistepInputScope = nameof(IMultiStepInputViewModelFactory);
public const string DeclarationViewModelScope = nameof(IDeclarationInputViewModelFactory);
public const string NewDocumentViewModelScope = nameof(INewDocumentViewModelFactory);
public const string PrimaryAndStageInputScope = nameof(IPrimaryAndStageInputViewModelFactory);
public override void Load()
{
Bind<IDocumentViewModelFactory>().To<DocumentViewModelFactory>().Named(DocumentViewModelFactoryScope);
#region MultistepViewModel
Bind<IMultiStepInputViewModelFactory>().ToFactory().Named(MultistepInputScope);
Bind<IDocumentViewModel>().To<MultiStageJobViewModel_v0_1>().WhenParentNamed(MultistepInputScope);
#endregion
#region DeclarationInputData
Bind<IDeclarationInputViewModelFactory>().ToFactory(() => new CombineArgumentsToNameInstanceProvider(true,
new[] {
new CombineArgumentsToNameInstanceProvider.MethodSettings() {
methods = new []{typeof(IDeclarationInputViewModelFactory).GetMethod(nameof(IDeclarationInputViewModelFactory.CreateDeclarationViewModel))},
takeArguments = 1,
combineToNameDelegate = (arguments) => {
if (arguments == null || arguments.Length < 1) {
throw new ArgumentException("Invalid number of arguments");
}
if (arguments[0] is IDeclarationInputDataProvider inputData) {
var name = $"{inputData.JobInputData.Vehicle.DataSource.SourceVersion}:{inputData.JobInputData.Vehicle.DataSource.Type}";
return name;
}
throw new ArgumentException($"Invalid argument of type {arguments[0].GetType()}");
}
},
}
)
).Named(DeclarationViewModelScope);
Bind<IDocumentViewModel>().To<SimulationOnlyDeclarationJob>().WhenParentNamed(DeclarationViewModelScope);
var StageInputXMLVersions = new[] {
new { XMLDeclarationConventionalCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE},
new { AbstractXMLDeclarationCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE},
new { AbstractXMLDeclarationCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE},
new { XMLDeclarationExemptedCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE},
new { AbstractXMLDeclarationCompletedBusDataProviderV24.NAMESPACE_URI, XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE},
};
foreach (var version in StageInputXMLVersions)
{
var name = $"{version.NAMESPACE_URI.GetVersionFromNamespaceUri()}:{version.XSD_TYPE}";
Bind<IDocumentViewModel>().To<StageInputViewModel>().WhenParentNamed(DeclarationViewModelScope)
.Named(name);
}
#endregion
#region NewViewModels
Bind<INewDocumentViewModelFactory>().ToFactory().Named(NewDocumentViewModelScope);
Bind<IDocumentViewModel>().ToConstructor(
constructorArgs => new StageInputViewModel(
constructorArgs.Inject<bool>(),
constructorArgs.Inject<IMultiStageViewModelFactory>(),
constructorArgs.Inject<IAdditionalJobInfoViewModel>()))
.WhenParentNamed(NewDocumentViewModelScope)
.NamedLikeFactoryMethod((INewDocumentViewModelFactory f) => f.GetCreateNewStepInputViewModel(false)); ;
Bind<IDocumentViewModel>().ToConstructor(
constructorArgs => new CreateVifViewModel(
constructorArgs.Inject<bool>(),
constructorArgs.Inject<IDialogHelper>(),
constructorArgs.Inject<IXMLInputDataReader>(),
constructorArgs.Inject<IAdditionalJobInfoViewModel>()))
.WhenParentNamed(NewDocumentViewModelScope)
.NamedLikeFactoryMethod((INewDocumentViewModelFactory f) => f.GetCreateNewVifViewModel(false));
#endregion
Bind<IPrimaryAndStageInputViewModelFactory>().ToFactory().Named(PrimaryAndStageInputScope);
Bind<IDocumentViewModel>().To<CreateVifViewModel>().WhenParentNamed(PrimaryAndStageInputScope);
}
#endregion
}
}
...@@ -13,13 +13,14 @@ using VECTO3GUI2020.ViewModel.Interfaces.JobEdit; ...@@ -13,13 +13,14 @@ using VECTO3GUI2020.ViewModel.Interfaces.JobEdit;
using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace VECTO3GUI2020.Ninject namespace VECTO3GUI2020.Ninject.Factories
{ {
public class FactoryModule : AbstractNinjectModule public class FactoryModule : AbstractNinjectModule
{ {
public override void Load() public override void Load()
{ {
LoadModule<DocumentViewModelFactoryModule>(); LoadModule<DocumentViewModelFactoryModule>();
LoadModule<ComponentViewModelFactoryModule>();
Bind<IXMLWriterFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider(fallback: true)); Bind<IXMLWriterFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider(fallback: true));
...@@ -29,8 +30,7 @@ namespace VECTO3GUI2020.Ninject ...@@ -29,8 +30,7 @@ namespace VECTO3GUI2020.Ninject
Bind<IComponentViewModelFactory>().ToFactory(
() => new UseFirstArgumentTypeAsNameInstanceProvider(true));
Bind<IMultiStageViewModelFactory>().To<MultiStageViewModelFactory>(). Bind<IMultiStageViewModelFactory>().To<MultiStageViewModelFactory>().
......
using Ninject;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24;
using TUGraz.VectoCore.Models.Simulation;
using TUGraz.VectoCore.Utils;
using VECTO3GUI2020.ViewModel.Implementation;
using VECTO3GUI2020.ViewModel.Implementation.Common;
using VECTO3GUI2020.ViewModel.Implementation.Document;
using VECTO3GUI2020.ViewModel.Interfaces;
using VECTO3GUI2020.ViewModel.Interfaces.Common;
using VECTO3GUI2020.ViewModel.Interfaces.Document;
using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace VECTO3GUI2020.Ninject.Factories
{
public class MultiStageViewModelFactory : IMultiStageViewModelFactory
{
private IMultiStageViewModelFactoryDefaultInstanceProvider _multiStageVmFactoryDefaultInstanceProvider;
private IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
_multistageViewModelFactoryFirstParameterAsNameInstanceProvider;
private readonly IDocumentViewModelFactory _documentViewModelFactory;
public MultiStageViewModelFactory(
IMultiStageViewModelFactoryDefaultInstanceProvider multiStageVmFactoryDefaultInstanceProvider,
IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider multistageViewModelFactoryFirstParameterAsNameInstanceProvider,
IDocumentViewModelFactory documentViewModelFactory)
{
_multiStageVmFactoryDefaultInstanceProvider = multiStageVmFactoryDefaultInstanceProvider;
_multistageViewModelFactoryFirstParameterAsNameInstanceProvider = multistageViewModelFactoryFirstParameterAsNameInstanceProvider;
_documentViewModelFactory = documentViewModelFactory;
}
#region Implementation of IMultiStageViewModelFactoryDefaultInstanceProvider
public IViewModelBase GetNewMultistageJobViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetNewMultistageJobViewModel();
}
public IMultiStageJobViewModel GetMultiStageJobViewModel(IMultistepBusInputDataProvider inputData)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetMultiStageJobViewModel(inputData);
}
public IVehicleViewModel GetInterimStageVehicleViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetInterimStageVehicleViewModel();
}
public IVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, bool exempted)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetInterimStageVehicleViewModel(consolidatedVehicleData, exempted);
}
public IManufacturingStageViewModel GetManufacturingStageViewModel(
IManufacturingStageInputData consolidatedManufacturingStageInputData, bool exempted)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetManufacturingStageViewModel(consolidatedManufacturingStageInputData, exempted);
}
public IMultistageAirdragViewModel GetMultistageAirdragViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetMultistageAirdragViewModel();
}
public IMultistageAirdragViewModel GetMultistageAirdragViewModel(IAirdragDeclarationInputData consolidatedAirdragInputData)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetMultistageAirdragViewModel(consolidatedAirdragInputData);
}
public IMultistageAuxiliariesViewModel GetAuxiliariesViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel();
}
public IMultistageAuxiliariesViewModel
GetAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel(consolidatedAuxiliariesInputData);
}
//public ICreateVifViewModel GetCreateNewVifViewModel(bool completed)
//{
// return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel(completed);
//}
//public ICreateVifViewModel GetCreateNewVifViewModel()
//{
// return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel();
//}
#endregion
#region Implementation of IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
public IVehicleViewModel CreateStageInputVehicleViewModel(string inputProviderType)
{
return _multistageViewModelFactoryFirstParameterAsNameInstanceProvider.CreateStageInputVehicleViewModel(inputProviderType);
}
#endregion
#region Implementation of IDocumentViewModelFactory
public IDocumentViewModel CreateDocumentViewModel(IInputDataProvider declarationInput)
{
return _documentViewModelFactory.CreateDocumentViewModel(declarationInput);
}
public IDocumentViewModel GetCreateNewStepInputViewModel(bool exemptedVehicle)
{
return _documentViewModelFactory.GetCreateNewStepInputViewModel(exemptedVehicle);
}
public IDocumentViewModel GetCreateNewVifViewModel(bool completed)
{
return _documentViewModelFactory.GetCreateNewVifViewModel(completed);
}
#endregion
}
}
\ No newline at end of file
using Ninject.Extensions.Factory;
using Ninject.Modules;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
using VECTO3GUI2020.Model.Multistage;
using VECTO3GUI2020.ViewModel.Implementation.Common;
using VECTO3GUI2020.ViewModel.Interfaces.Common;
using VECTO3GUI2020.ViewModel.Interfaces.Document;
using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace VECTO3GUI2020.Ninject.Factories
{
// public class MultistageViewModelModule : NinjectModule
// {
// public override void Load()
// {
// Bind<IViewModelBase>().To<NewMultiStageJobViewModel>().
// NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetNewMultistageJobViewModel());
// Bind<IMultiStageJobViewModel>().To<MultiStageJobViewModel_v0_1>().
// NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultiStageJobViewModel(null));
// Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>().
// 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));
// Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelNewVif>()
// .WhenInjectedInto(typeof(ICreateVifViewModel));
// Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelStageInput>()
// .WhenInjectedInto(typeof(IStageViewModelBase));
// Bind<JSONJob>().ToSelf();
// }
//}
}
using System;
using Ninject.Extensions.Factory;
using Ninject.Modules;
using VECTO3GUI2020.Ninject.Util;
using VECTO3GUI2020.Util.XML.Implementation;
using VECTO3GUI2020.Util.XML.Implementation.ComponentWriter;
using VECTO3GUI2020.Util.XML.Implementation.DocumentWriter;
using VECTO3GUI2020.Util.XML.Interfaces;
namespace VECTO3GUI2020.Ninject.Factories
{
public class XMLWriterFactoryModule : NinjectModule
{
public override void Load()
{
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>();
}
}
}
using Ninject;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24;
using TUGraz.VectoCore.Models.Simulation;
using TUGraz.VectoCore.Utils;
using VECTO3GUI2020.ViewModel.Implementation;
using VECTO3GUI2020.ViewModel.Implementation.Common;
using VECTO3GUI2020.ViewModel.Implementation.Document;
using VECTO3GUI2020.ViewModel.Interfaces;
using VECTO3GUI2020.ViewModel.Interfaces.Common;
using VECTO3GUI2020.ViewModel.Interfaces.Document;
using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace VECTO3GUI2020.Ninject
{
public class MultiStageViewModelFactory : IMultiStageViewModelFactory
{
private IMultiStageViewModelFactoryDefaultInstanceProvider _multiStageVmFactoryDefaultInstanceProvider;
private IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
_multistageViewModelFactoryFirstParameterAsNameInstanceProvider;
private readonly IDocumentViewModelFactory _documentViewModelFactory;
public MultiStageViewModelFactory(
IMultiStageViewModelFactoryDefaultInstanceProvider multiStageVmFactoryDefaultInstanceProvider,
IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider multistageViewModelFactoryFirstParameterAsNameInstanceProvider,
IDocumentViewModelFactory documentViewModelFactory)
{
_multiStageVmFactoryDefaultInstanceProvider = multiStageVmFactoryDefaultInstanceProvider;
_multistageViewModelFactoryFirstParameterAsNameInstanceProvider = multistageViewModelFactoryFirstParameterAsNameInstanceProvider;
_documentViewModelFactory = documentViewModelFactory;
}
#region Implementation of IMultiStageViewModelFactoryDefaultInstanceProvider
public IViewModelBase GetNewMultistageJobViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetNewMultistageJobViewModel();
}
public IMultiStageJobViewModel GetMultiStageJobViewModel(IMultistepBusInputDataProvider inputData)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetMultiStageJobViewModel(inputData);
}
public IVehicleViewModel GetInterimStageVehicleViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetInterimStageVehicleViewModel();
}
public IVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, bool exempted)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetInterimStageVehicleViewModel(consolidatedVehicleData, exempted);
}
public IManufacturingStageViewModel GetManufacturingStageViewModel(
IManufacturingStageInputData consolidatedManufacturingStageInputData, bool exempted)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetManufacturingStageViewModel(consolidatedManufacturingStageInputData, exempted);
}
public IMultistageAirdragViewModel GetMultistageAirdragViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetMultistageAirdragViewModel();
}
public IMultistageAirdragViewModel GetMultistageAirdragViewModel(IAirdragDeclarationInputData consolidatedAirdragInputData)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetMultistageAirdragViewModel(consolidatedAirdragInputData);
}
public IMultistageAuxiliariesViewModel GetAuxiliariesViewModel()
{
return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel();
}
public IMultistageAuxiliariesViewModel
GetAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData)
{
return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel(consolidatedAuxiliariesInputData);
}
//public ICreateVifViewModel GetCreateNewVifViewModel(bool completed)
//{
// return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel(completed);
//}
//public ICreateVifViewModel GetCreateNewVifViewModel()
//{
// return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel();
//}
#endregion
#region Implementation of IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
public IVehicleViewModel CreateStageInputVehicleViewModel(string inputProviderType)
{
return _multistageViewModelFactoryFirstParameterAsNameInstanceProvider.CreateStageInputVehicleViewModel(inputProviderType);
}
#endregion
#region Implementation of IDocumentViewModelFactory
public IDocumentViewModel CreateDocumentViewModel(IInputDataProvider declarationInput)
{
return _documentViewModelFactory.CreateDocumentViewModel(declarationInput);
}
public IDocumentViewModel GetCreateNewStepInputViewModel(bool exemptedVehicle)
{
return _documentViewModelFactory.GetCreateNewStepInputViewModel(exemptedVehicle);
}
public IDocumentViewModel GetCreateNewVifViewModel(bool completed)
{
return _documentViewModelFactory.GetCreateNewVifViewModel(completed);
}
#endregion
}
}
\ No newline at end of file
using Ninject.Extensions.Factory;
using Ninject.Modules;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
using VECTO3GUI2020.Model.Multistage;
using VECTO3GUI2020.ViewModel.Implementation.Common;
using VECTO3GUI2020.ViewModel.Interfaces.Common;
using VECTO3GUI2020.ViewModel.Interfaces.Document;
using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
namespace VECTO3GUI2020.Ninject
{
// public class MultistageViewModelModule : NinjectModule
// {
// public override void Load()
// {
// Bind<IViewModelBase>().To<NewMultiStageJobViewModel>().
// NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetNewMultistageJobViewModel());
// Bind<IMultiStageJobViewModel>().To<MultiStageJobViewModel_v0_1>().
// NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultiStageJobViewModel(null));
// Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>().
// 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));
// Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelNewVif>()
// .WhenInjectedInto(typeof(ICreateVifViewModel));
// Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelStageInput>()
// .WhenInjectedInto(typeof(IStageViewModelBase));
// Bind<JSONJob>().ToSelf();
// }
//}
}
using System;
using Ninject.Extensions.Factory;
using Ninject.Modules;
using VECTO3GUI2020.Ninject.Util;
using VECTO3GUI2020.Util.XML.Implementation;
using VECTO3GUI2020.Util.XML.Implementation.ComponentWriter;
using VECTO3GUI2020.Util.XML.Implementation.DocumentWriter;
using VECTO3GUI2020.Util.XML.Interfaces;
namespace VECTO3GUI2020.Ninject
{
public class XMLWriterFactoryModule : NinjectModule
{
public override void Load()
{
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>();
}
}
}
...@@ -34,7 +34,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components ...@@ -34,7 +34,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components
public AirDragViewModel(IXMLAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) public AirDragViewModel(IAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory)
{ {
LabelVisible = true; LabelVisible = true;
IsReadOnly = false; IsReadOnly = false;
...@@ -146,7 +146,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components ...@@ -146,7 +146,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components
public class AirDragViewModel_v1_0 : AirDragViewModel public class AirDragViewModel_v1_0 : AirDragViewModel
{ {
public static readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV10).FullName; public static readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV10).FullName;
public AirDragViewModel_v1_0(IXMLAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory) public AirDragViewModel_v1_0(IAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory)
{ {
} }
...@@ -163,7 +163,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components ...@@ -163,7 +163,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components
{ {
public static new readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV20).FullName; public static new readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV20).FullName;
public AirDragViewModel_v2_0(IXMLAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory) public AirDragViewModel_v2_0(IAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory)
{ {
} }
...@@ -197,7 +197,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components ...@@ -197,7 +197,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components
{ {
public new static readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV24).FullName; public new static readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV24).FullName;
public AirDragViewModel_v2_4(IXMLAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory) public AirDragViewModel_v2_4(IAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory)
{ {
LabelVisible = false; LabelVisible = false;
IsReadOnly = true; IsReadOnly = true;
......
...@@ -62,7 +62,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components ...@@ -62,7 +62,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components
foreach (var auxiliary in _inputData.Auxiliaries) foreach (var auxiliary in _inputData.Auxiliaries)
{ {
Debug.Assert(auxiliary.Technology.Count == 1); Debug.Assert(auxiliary.Technology.Count == 1);
var componentViewModel = _componentViewModelFactory.CreateComponentViewModel(auxiliary as IXMLAuxiliaryDeclarationInputData); var componentViewModel = _componentViewModelFactory.CreateComponentViewModel(auxiliary);
AuxiliaryViewModels.Add(componentViewModel as IAuxiliaryViewModel); AuxiliaryViewModels.Add(componentViewModel as IAuxiliaryViewModel);
} }
} }
......
using TUGraz.VectoCommon.InputData; using System;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
using VECTO3GUI2020.Ninject.Factories;
namespace VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components namespace VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components
{ {
...@@ -10,12 +12,105 @@ namespace VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components ...@@ -10,12 +12,105 @@ namespace VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components
/// </summary> /// </summary>
/// <param name="inputData">The Type of the input Data is used to resolve a Named Binding and is also passed to the constructor</param> /// <param name="inputData">The Type of the input Data is used to resolve a Named Binding and is also passed to the constructor</param>
/// <returns></returns> /// <returns></returns>
IComponentViewModel CreateComponentViewModel(object inputData); IComponentViewModel CreateComponentViewModel(IComponentInputData inputData);
IVehicleViewModel CreateVehicleViewModel(IVehicleDeclarationInputData inputData); IVehicleViewModel CreateVehicleViewModel(IVehicleDeclarationInputData inputData);
IAdasViewModel CreateAdasViewModel(IAdvancedDriverAssistantSystemDeclarationInputData inputData); IAdasViewModel CreateAdasViewModel(IAdvancedDriverAssistantSystemDeclarationInputData inputData);
IEngineModeViewModel CreateEngineModeViewModel(IEngineModeDeclarationInputData inputData); IEngineModeViewModel CreateEngineModeViewModel(IEngineModeDeclarationInputData inputData);
IEngineFuelViewModel CreateEngineFuelViewModel(IEngineFuelDeclarationInputData inputData); IEngineFuelViewModel CreateEngineFuelViewModel(IEngineFuelDeclarationInputData inputData);
IComponentsViewModel CreateComponentsViewModel(IXMLVehicleComponentsDeclaration inputData); IComponentsViewModel CreateComponentsViewModel(IXMLVehicleComponentsDeclaration inputData);
ICommonComponentViewModel CreateCommonComponentViewModel(IComponentInputData inputData); ICommonComponentViewModel CreateCommonComponentViewModel(IComponentInputData inputData);
IComponentViewModel CreateComponentViewModel(ITransmissionInputData inputData);
IComponentViewModel CreateComponentViewModel(IPTOTransmissionInputData inputData);
IComponentViewModel CreateComponentViewModel(IAxlesDeclarationInputData inputData);
IComponentViewModel CreateComponentViewModel(IAxleDeclarationInputData inputData);
IComponentViewModel CreateComponentViewModel(IAuxiliariesDeclarationInputData inputData);
IComponentViewModel CreateComponentViewModel(IAuxiliaryDeclarationInputData inputData);
}
public class ComponentViewModelFactory : IComponentViewModelFactory
{
private readonly IComponentViewModelFactoryInternal _internalFactory;
#region Implementation of IComponentViewModelFactory
public ComponentViewModelFactory(IComponentViewModelFactoryInternal internalFactory)
{
_internalFactory = internalFactory;
}
public IComponentViewModel CreateComponentViewModel(IComponentInputData inputData)
{
return CreateComponentViewModel(inputData.DataSource, inputData);
}
private IComponentViewModel CreateComponentViewModel<TIn>(DataSource dataSource, TIn inputData)
{
return _internalFactory.CreateComponentViewModel(dataSource, inputData);
}
public IVehicleViewModel CreateVehicleViewModel(IVehicleDeclarationInputData inputData)
{
throw new NotImplementedException();
}
public IAdasViewModel CreateAdasViewModel(IAdvancedDriverAssistantSystemDeclarationInputData inputData)
{
throw new NotImplementedException();
}
public IEngineModeViewModel CreateEngineModeViewModel(IEngineModeDeclarationInputData inputData)
{
throw new NotImplementedException();
}
public IEngineFuelViewModel CreateEngineFuelViewModel(IEngineFuelDeclarationInputData inputData)
{
throw new NotImplementedException();
}
public IComponentsViewModel CreateComponentsViewModel(IXMLVehicleComponentsDeclaration inputData)
{
throw new NotImplementedException();
}
public ICommonComponentViewModel CreateCommonComponentViewModel(IComponentInputData inputData)
{
return _internalFactory.CreateCommonComponentViewModel(inputData);
}
public IComponentViewModel CreateComponentViewModel(ITransmissionInputData inputData)
{
throw new NotImplementedException();
}
public IComponentViewModel CreateComponentViewModel(IPTOTransmissionInputData inputData)
{
throw new NotImplementedException();
}
public IComponentViewModel CreateComponentViewModel(IAxlesDeclarationInputData inputData)
{
throw new NotImplementedException();
}
public IComponentViewModel CreateComponentViewModel(IAxleDeclarationInputData inputData)
{
throw new NotImplementedException();
}
public IComponentViewModel CreateComponentViewModel(IAuxiliariesDeclarationInputData inputData)
{
throw new NotImplementedException();
}
public IComponentViewModel CreateComponentViewModel(IAuxiliaryDeclarationInputData inputData)
{
throw new NotImplementedException();
}
#endregion
} }
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VECTO3GUI2020.ViewModel.MultiStage.Factories
{
}
...@@ -13,6 +13,7 @@ using TUGraz.VectoCommon.InputData; ...@@ -13,6 +13,7 @@ using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Resources;
using TUGraz.VectoCommon.Utils; using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Utils; using TUGraz.VectoCore.Utils;
...@@ -20,7 +21,7 @@ namespace Vecto3GUI2020Test; ...@@ -20,7 +21,7 @@ namespace Vecto3GUI2020Test;
public static class InputMock public static class InputMock
{ {
public static IVehicleDeclarationInputData GetMockVehicle(out Mock<IVehicleDeclarationInputData> mock, bool createAirdrag = false) public static IVehicleDeclarationInputData GetMockVehicle(out Mock<IVehicleDeclarationInputData> mock)
{ {
mock = new Mock<IVehicleDeclarationInputData>(); mock = new Mock<IVehicleDeclarationInputData>();
...@@ -50,20 +51,7 @@ public static class InputMock ...@@ -50,20 +51,7 @@ public static class InputMock
mock.SetupGet(v => v.DoorDriveTechnology).Returns(ConsumerTechnology.Electrically); mock.SetupGet(v => v.DoorDriveTechnology).Returns(ConsumerTechnology.Electrically);
mock.SetupGet(v => v.VehicleDeclarationType).Returns(VehicleDeclarationType.interim); mock.SetupGet(v => v.VehicleDeclarationType).Returns(VehicleDeclarationType.interim);
mock.SetupGet(v => v.VehicleTypeApprovalNumber).Returns("1234567890"); mock.SetupGet(v => v.VehicleTypeApprovalNumber).Returns("1234567890");
mock.SetupGet(v => v.Components).Returns(() => { mock.SetupGet(v => v.Components).Returns(GetComponentsMock());
var exp =
new List<Tuple<Expression<Func<IVehicleComponentsDeclaration, IAirdragDeclarationInputData>>,
IAirdragDeclarationInputData>>();
if (createAirdrag) {
exp.Add(new Tuple<Expression<Func<IVehicleComponentsDeclaration, IAirdragDeclarationInputData>>, IAirdragDeclarationInputData>(
e => e.AirdragInputData,
CreateAirdragComponentData(out _)));
}
return GetMockComponent(out _, exp.ToArray());
}
);
var obj = mock.Object; var obj = mock.Object;
...@@ -72,29 +60,18 @@ public static class InputMock ...@@ -72,29 +60,18 @@ public static class InputMock
return mock.Object; return mock.Object;
} }
public static IVehicleDeclarationInputData GetMockVehicle() private static IVehicleComponentsDeclaration GetComponentsMock()
{ {
return GetMockVehicle(out _, false); var mock = new Mock<IVehicleComponentsDeclaration>();
return mock.Object;
} }
public static IVehicleDeclarationInputData GetMockVehicle(bool createAirdrag) public static IVehicleDeclarationInputData GetMockVehicle()
{ {
return GetMockVehicle(out _, createAirdrag); return GetMockVehicle(out _);
} }
public static IAirdragDeclarationInputData CreateAirdragComponentData(out Mock<IAirdragDeclarationInputData> mock)
{
mock = new Mock<IAirdragDeclarationInputData>();
mock.SetupGet(a => a.Manufacturer).Returns("Manufacturer");
mock.SetupGet(a => a.Model).Returns("Model");
mock.SetupGet(a => a.Date).Returns(DateTime.Today);
mock.SetupGet(a => a.AppVersion).Returns("APPVERSION");
mock.SetupGet(a => a.SavedInDeclarationMode).Returns(true);
mock.SetupGet(a => a.AirDragArea).Returns(6.66.SI<SquareMeter>());
mock.SetupGet(a => a.AirDragArea_0).Returns(7.77.SI<SquareMeter>());
mock.SetupGet(a => a.TransferredAirDragArea).Returns(8.88.SI<SquareMeter>());
return mock.Object;
}
public static IDeclarationJobInputData GetDeclarationJobInputData(out Mock<IDeclarationJobInputData> mock, VectoSimulationJobType jobType) public static IDeclarationJobInputData GetDeclarationJobInputData(out Mock<IDeclarationJobInputData> mock, VectoSimulationJobType jobType)
{ {
...@@ -144,26 +121,40 @@ public static class InputMock ...@@ -144,26 +121,40 @@ public static class InputMock
return mock.Object; return mock.Object;
} }
// Syntax GetMockVehicle().AddAirdragComponent().SetAirdragVersion(). and so on ...
public static IVehicleDeclarationInputData AddAirdragComponent(this IVehicleDeclarationInputData mocked, XNamespace version)
public static IVehicleComponentsDeclaration GetMockComponent(out Mock<IVehicleComponentsDeclaration> mock,
params Tuple<Expression<Func<IVehicleComponentsDeclaration, IAirdragDeclarationInputData>>, IAirdragDeclarationInputData>[] expressions)
{ {
mock = new Mock<IVehicleComponentsDeclaration>(); Mock.Get(mocked.Components).SetupGet(c => c.AirdragInputData).Returns(CreateAirdragComponentData(out _, version));
foreach (var expression in expressions) { return mocked;
mock.Setup(expression.Item1).Returns(expression.Item2);
}
return mock.Object;
} }
// Syntax GetMockVehicle().AddAirdragComponent().SetAirdragVersion(). and so on ... private static IAirdragDeclarationInputData CreateAirdragComponentData(out Mock<IAirdragDeclarationInputData> mock, XNamespace version)
public static IVehicleDeclarationInputData AddAirdragComponent(this IVehicleDeclarationInputData mocked)
{ {
throw new NotFiniteNumberException(); mock = new Mock<IAirdragDeclarationInputData>();
mock.SetupGet(a => a.Manufacturer).Returns("Manufacturer");
mock.SetupGet(a => a.Model).Returns("Model");
mock.SetupGet(a => a.Date).Returns(DateTime.Today);
mock.SetupGet(a => a.AppVersion).Returns("APPVERSION");
mock.SetupGet(a => a.SavedInDeclarationMode).Returns(true);
mock.SetupGet(a => a.AirDragArea).Returns(6.66.SI<SquareMeter>());
mock.SetupGet(a => a.AirDragArea_0).Returns(7.77.SI<SquareMeter>());
mock.SetupGet(a => a.TransferredAirDragArea).Returns(8.88.SI<SquareMeter>());
return mocked; if (version == XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24) {
mock.SetupGet(a => a.DataSource).Returns(
GetMockDataSource(XMLDeclarationAirdragDataProviderV24.XSD_TYPE, version));
} else {
mock.SetupGet(a => a.DataSource).Returns(
GetMockDataSource(XMLDeclarationAirdragDataProviderV20.XSD_TYPE, version));
}
//mock.SetupGet(a => a.DataSource.SourceVersion).Returns(version.GetVersionFromNamespaceUri);
//mock.SetupGet(a => a.DataSource.Type).Returns(XMLDeclarationAirdragDataProviderV20.XSD_TYPE);
//mock.SetupGet(a => a.DataSource.TypeVersion).Returns(version.NamespaceName);
return mock.Object;
} }
public static IVehicleDeclarationInputData SetAirdragVersion(this IVehicleDeclarationInputData mocked, XNamespace version) public static IVehicleDeclarationInputData SetAirdragVersion(this IVehicleDeclarationInputData mocked, XNamespace version)
{ {
if (mocked.Components.AirdragInputData == null) { if (mocked.Components.AirdragInputData == null) {
...@@ -181,4 +172,15 @@ public static class InputMock ...@@ -181,4 +172,15 @@ public static class InputMock
return mocked; return mocked;
} }
private static DataSource GetMockDataSource(string typeName, XNamespace version)
{
return new DataSource() {
SourceFile = "Mocked",
SourceType = DataSourceType.Missing,
Type = typeName,
TypeVersion = version.NamespaceName,
SourceVersion = version.GetVersionFromNamespaceUri(),
};
}
} }
\ No newline at end of file
...@@ -7,6 +7,7 @@ using TUGraz.VectoCore; ...@@ -7,6 +7,7 @@ using TUGraz.VectoCore;
using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML;
using VECTO3GUI2020.Helper; using VECTO3GUI2020.Helper;
using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Ninject;
using VECTO3GUI2020.Ninject.Factories;
using VECTO3GUI2020.Ninject.Vehicle; using VECTO3GUI2020.Ninject.Vehicle;
using Vecto3GUI2020Test.Utils; using Vecto3GUI2020Test.Utils;
......
...@@ -15,6 +15,7 @@ public class MockDialogHelper : IDialogHelper ...@@ -15,6 +15,7 @@ public class MockDialogHelper : IDialogHelper
{ {
public enum DialogType public enum DialogType
{ {
Info,
Error Error
} }
...@@ -106,6 +107,7 @@ public class MockDialogHelper : IDialogHelper ...@@ -106,6 +107,7 @@ public class MockDialogHelper : IDialogHelper
lock (_dialogs) { lock (_dialogs) {
_dialogs.Add(new Dialog() { _dialogs.Add(new Dialog() {
Message = $"[{caption}] {messageBoxText}", Message = $"[{caption}] {messageBoxText}",
Type = Dialog.DialogType.Info,
}); });
} }
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
<Folder Include="HelperTests\" /> <Folder Include="HelperTests\" />
<Folder Include="TestData\bugreports\" /> <Folder Include="TestData\bugreports\" />
<Folder Include="TestData\output\" /> <Folder Include="TestData\output\" />
<Folder Include="ViewModelTests\FactoryTests\" />
<Folder Include="XML\XMLInput\" /> <Folder Include="XML\XMLInput\" />
<Folder Include="XML\XMLWritingTest\TestDataCreator\" /> <Folder Include="XML\XMLWritingTest\TestDataCreator\" />
</ItemGroup> </ItemGroup>
......
using System.Xml.Linq;
using Ninject;
using NUnit.Framework;
using TUGraz.VectoCore.Utils;
using VECTO3GUI2020.Ninject.Factories;
using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components;
using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components;
using Vecto3GUI2020Test.Utils;
namespace Vecto3GUI2020Test.ViewModelTests.FactoryTests;
[TestFixture]
public class ComponentViewModelFactoryTest
{
private IComponentViewModelFactory _componentViewModelFactory;
private IKernel _kernel;
private MockDialogHelper _mockDialogHelper;
[SetUp]
public void Setup()
{
_kernel = TestHelper.GetKernel(out _mockDialogHelper, out _);
_componentViewModelFactory = _kernel.Get<IComponentViewModelFactory>();
}
[TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V10)]
[TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20)]
[TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24)]
public void CreateAirdragViewModel(string version)
{
XNamespace ns = version;
var airdragData = InputMock.GetMockVehicle().AddAirdragComponent(ns).Components.AirdragInputData;
Assert.NotNull(airdragData);
Assert.AreEqual(version, airdragData.DataSource.TypeVersion);
var componentViewModel = _componentViewModelFactory.CreateComponentViewModel(airdragData);
_mockDialogHelper.AssertNoErrorDialogs();
Assert.NotNull(componentViewModel);
var airdragVm = componentViewModel as IAirDragViewModel;
Assert.NotNull(airdragVm);
switch (airdragVm) {
//since the vms are derived from each other order matters
case AirDragViewModel_v2_4:
Assert.AreEqual(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, version);
break;
case AirDragViewModel_v2_0:
Assert.AreEqual(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20, version);
break;
case AirDragViewModel_v1_0:
Assert.AreEqual(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V10, version);
break;
default:
Assert.Fail($"Unexpected type {airdragVm.GetType()}");
break;
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment