public void UpdateModel(IModelDefinition definition, IModelValueProvider model, IModelValueGetter newState) { CopyModelValueProvider copy = new CopyModelValueProvider(definition, true); copy.Update(model, newState); Has = true; Added?.Invoke(); }
protected override void OnSourceInitialized(EventArgs e) { base.OnSourceInitialized(e); UserModelPresenter.GetContainer(this).Definition = modelDefinition; CopyModelValueProvider copy = new CopyModelValueProvider(modelDefinition, true); copy.Update(this, library.Configuration); }
protected override void OnSourceInitialized(EventArgs e) { base.OnSourceInitialized(e); ModelPresenter.Definition = modelDefinition; if (model != null) { CopyModelValueProvider copy = new CopyModelValueProvider(modelDefinition, true); copy.Update(ModelPresenter, model); } else { ModelPresenter.TrySetValue(nameof(Movie.Added), DateTime.Now); } }
public static void Test() { AttributeMetadataReaderCollection metadataReaders = new AttributeMetadataReaderCollection() .Add <CompareAttribute>(new CompareMetadataReader()) .Add <DataTypeAttribute>(new DataTypeMetadataReader()) .Add <DefaultValueAttribute>(new DefaultValueMetadataReader()) .Add <DescriptionAttribute>(new DescriptionMetadataReader()) .Add <DisplayAttribute>(new DisplayMetadataReader()) .Add <RequiredAttribute>(new RequiredMetadataReader()) .Add <StringLengthAttribute>(new StringLengthMetadataReader()); FieldMetadataValidatorCollection fieldMetadataValidators = new FieldMetadataValidatorCollection() .Add(null, null, "Required", new RequiredMetadataValidator()) .Add(null, null, "MatchProperty", new MatchPropertyMetadataValidator()); ReflectionValueUpdaterCollection valueUpdaters = new ReflectionValueUpdaterCollection() .Add <ICollection <int> >(new CollectionItemReflectionValueUpdater <int>()); BindingConverterCollection bindingConverters = new BindingConverterCollection() //.Add(new TypeFieldType(typeof(bool)), new BoolBindingConverter()) //.Add(new TypeFieldType(typeof(int)), new IntBindingConverter()) //.Add(new TypeFieldType(typeof(double)), new DoubleBindingConverter()) //.Add(new TypeFieldType(typeof(string)), new StringBindingConverter()); .AddStandart(); TypeModelDefinitionCollection modelDefinitions = new TypeModelDefinitionCollection() .AddReflectionSearchHandler(metadataReaders); IModelDefinition modelDefinition = modelDefinitions.Get <RegisterUserModel>(); RegisterUserModel model = new RegisterUserModel(); model.Username = "******"; model.Password = "******"; model.PasswordAgain = "y"; IModelValueProvider valueProvider = new ReflectionModelValueProvider(model, valueUpdaters); IBindingModelValueStorage storage = new BindingDictionaryValueStorage() .Add("Username", "Pepa") .Add("Password", "XxYy") //.Add("PasswordAgain", "XxYy") //.Add("Age", "25") .Add("RoleIDs", "1,2,3,4,5,6"); IModelValueGetter bindingGetter = new BindingModelValueGetter(storage, bindingConverters, modelDefinition); CopyModelValueProvider copyProvider = new CopyModelValueProvider(modelDefinition, true); Debug("Copy from dictionary", () => copyProvider.Update(valueProvider, bindingGetter)); Console.WriteLine("RoleIDs: {0}", String.Join(", ", model.RoleIDs)); IValidationHandler <ModelValidatorContext> modelValidator = new FieldMetadataModelValidator(fieldMetadataValidators); Task <IValidationResult> validationResult = Debug("Validate user", () => modelValidator.HandleAsync(new ModelValidatorContext(modelDefinition, valueProvider))); if (!validationResult.IsCompleted) { validationResult.RunSynchronously(); } Console.WriteLine(validationResult.Result); validationResult = Debug("Validate user with binding", () => modelValidator.HandleAsync(new ModelValidatorContext(modelDefinition, bindingGetter))); if (!validationResult.IsCompleted) { validationResult.RunSynchronously(); } Console.WriteLine(validationResult.Result); }
public static void Test() { IFile personXmlFile = LocalFileSystem.FromFilePath("../../PresentationModels/PersonDefinition.xml"); IFile organizationXmlFile = LocalFileSystem.FromFilePath("../../PresentationModels/OrganizationDefinition.xml"); XmlTypeMappingCollection typeMappings = new XmlTypeMappingCollection().AddStandartKeywords(); IModelDefinition personDefiniton = new XmlModelDefinitionBuilder(typeMappings, new FileContentFactory(personXmlFile)).Create(); IModelDefinition organizationDefinition = new XmlModelDefinitionBuilder(typeMappings, new FileContentFactory(organizationXmlFile)).Create(); XmlModelDefinitionSerializer serializer = new XmlModelDefinitionSerializer(typeMappings); using (StringWriter writer = new StringWriter()) { serializer.Serialize(personDefiniton, writer); Console.WriteLine(writer); } IFile mixedXmlFile = LocalFileSystem.FromFilePath("../../PresentationModels/MixedDataSource.xml"); XmlModelValueGetterFactory getterFactory = new XmlModelValueGetterFactory(mixedXmlFile.With <IFileContentReader>().GetContentAsStream()); XmlModelValueGetterCollection persons = getterFactory.Create(personDefiniton); XmlModelValueGetterCollection organizations = getterFactory.Create(organizationDefinition); Console.WriteLine("---------------------"); foreach (IModelValueGetter getter in persons) { Console.WriteLine( "Person: ({0}) {1}, {2}", getter.GetValueOrDefault("ID", -1), getter.GetValueOrDefault("FirstName", String.Empty), getter.GetValueOrDefault("LastName", String.Empty) ); } foreach (IModelValueGetter getter in organizations) { Console.WriteLine( "Organization: ({0}) {1}", getter.GetValueOrDefault("ID", -1), getter.GetValueOrDefault("Name", String.Empty) ); } XmlModelValueSetterFactory setterFactory = new XmlModelValueSetterFactory("DataSource"); CopyModelValueProvider personCopier = new CopyModelValueProvider(personDefiniton, false); foreach (IModelValueGetter getter in persons) { personCopier.Update(setterFactory.Create(personDefiniton), getter); } CopyModelValueProvider organizationCopier = new CopyModelValueProvider(organizationDefinition, false); foreach (IModelValueGetter getter in organizations) { organizationCopier.Update(setterFactory.Create(organizationDefinition), getter); } //IFile newMixedFile = (IFile)LocalFileSystem.FromFilePath("../../PresentationModels/MixedDataSourceNEW.xml"); using (FileStream stream = new FileStream("../../PresentationModels/MixedDataSourceNEW.xml", FileMode.OpenOrCreate)) { setterFactory.SaveToStream(stream); } }