public CmdApplicationConfigurationViewModel Create(CmdApplicationMeta meta) { if (meta == null) throw new ArgumentNullException(nameof(meta)); var properties = new List<ParameterViewModel>(); foreach (var parameterMeta in meta.ParameterMetas) { ParameterViewModel viewModel = null; if (parameterMeta.ParameterType == typeof(NameValueParameter)) { viewModel = new NameValueParameterViewModel(parameterMeta.Name, parameterMeta.DisplayName); } else if (parameterMeta.ParameterType == typeof(NameOnlyParameter)) { viewModel = new NameOnlyParameterViewModel(parameterMeta.Name, parameterMeta.DisplayName); } else { throw new ArgumentException(string.Format("Type {0} not supported for parameter {1}", parameterMeta.ParameterType, parameterMeta.Name)); } properties.Add(viewModel); } return new CmdApplicationConfigurationViewModel(meta, properties, Channel, StringParsers); }
public void CreateWithInvalidParameterMetaTypeThrowsException( Name name, Name applicationName, Name parameterName, IChannel<SaveCmdApplicationConfigurationCommand> channel, CmdApplicationConfigurationViewModelFactory sut) { var parameter = new Mock<IParameter>(); var meta = new CmdApplicationMeta( name, applicationName, new List<ParameterMeta>() { ParameterMeta.Create<IParameter>(parameterName) }); Assert.Throws<ArgumentException>(() => sut.Create(meta)); }
public CmdApplicationConfigurationViewModel Create( CmdApplicationConfiguration applicationConfiguration, CmdApplicationMeta applicationMeta) { if (applicationConfiguration == null) throw new ArgumentNullException(nameof(applicationConfiguration)); if (applicationMeta == null) throw new ArgumentNullException(nameof(applicationMeta)); var properties = new List<ParameterViewModel>(); foreach (var parameterMeta in applicationMeta.ParameterMetas) { ParameterViewModel viewModel = null; if (parameterMeta.ParameterType == typeof(NameValueParameter)) { viewModel = new NameValueParameterViewModel(parameterMeta.Name, parameterMeta.DisplayName); viewModel.WithParameter(applicationConfiguration .Parameters .FirstOrDefault(a => a.Name == parameterMeta.Name)); } else if (parameterMeta.ParameterType == typeof(NameOnlyParameter)) { viewModel = new NameOnlyParameterViewModel(parameterMeta.Name, parameterMeta.DisplayName); viewModel.WithParameter(applicationConfiguration.Parameters.FirstOrDefault(a => a.Name == parameterMeta.Name)); } else { throw new ArgumentException(string.Format("Type {0} not supported for parameter {1}", parameterMeta.ParameterType, parameterMeta.Name)); } properties.Add(viewModel); } var returnValue = new CmdApplicationConfigurationViewModel( applicationMeta, properties, Channel, StringParsers); returnValue.FriendlyName = (string)applicationConfiguration.Name; return returnValue; }
public Maybe <CmdApplicationConfiguration> Parse(T data, CmdApplicationMeta applicationMeta) { var friendlyName = this.GetFriendlyName(data, applicationMeta); var parameters = this.GetParameters(data, applicationMeta); if (parameters == null || !parameters.Any()) { return(Maybe.Empty <CmdApplicationConfiguration>()); } if (friendlyName == null) { friendlyName = Name.EmptyName; } var configuration = new CmdApplicationConfiguration( friendlyName, applicationMeta.ApplicationName, new System.Collections.ObjectModel.ReadOnlyCollection <IParameter>(parameters) ); return(Maybe.ToMaybe(configuration)); }
private CmdApplicationConfiguration CreateCmdApplicationConfiguration( string friendlyName, CmdApplicationMeta meta) { var parameterList = new List<IParameter>(); IParameter parameter = new NameOnlyParameter((Name)"-E"); parameterList.Add(parameter); parameter = new NameValueParameter((Name)"-S", "Value"); parameterList.Add(parameter); var configuration = new CmdApplicationConfiguration( (Name)friendlyName, (Name)meta.ApplicationName, new ReadOnlyCollection<IParameter>(parameterList)); return configuration; }
protected abstract IList <IParameter> GetParameters(T data, CmdApplicationMeta applicationMeta);
protected abstract Name GetFriendlyName(T data, CmdApplicationMeta applicationMeta);