using System; using System.Text.RegularExpressions; using System.CodeDom; using Composite.Data.Validation; namespace Composite.Validation.CustomValidators { // Microsoft validation attribute public sealed class EmailValidatorAttribute : Microsoft.Practices.EnterpriseLibrary.Validation.Validators.ValueValidatorAttribute { protected override Microsoft.Practices.EnterpriseLibrary.Validation.Validator DoCreateValidator(Type targetType) { return new EmailValidator(); } } public sealed class EmailValidator : Microsoft.Practices.EnterpriseLibrary.Validation.Validator { private readonly string EMAILREGEX = @"^(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)$"; public EmailValidator() : base("Email Validation", "Email") { } protected override string DefaultMessageTemplate { get { return "Email Validation"; } } // This method does the actual validation protected override void DoValidate(object objectToValidate, object currentTarget, string key, Microsoft.Practices.EnterpriseLibrary.Validation.ValidationResults validationResults) { string email = (string)objectToValidate; if (!Regex.IsMatch(email, EMAILREGEX)) { LogValidationResult(validationResults, "This is not email", currentTarget, key); } } } public sealed class EmailValidatorPropertyValidatorBuilder : PropertyValidatorBuilder { public override Attribute GetAttribute() { return new EmailValidatorAttribute(); } public override CodeAttributeDeclaration GetCodeAttributeDeclaration() { return new CodeAttributeDeclaration(new CodeTypeReference(typeof(EmailValidatorAttribute))); } } public sealed class EmailValidatorContainer { /// /// Function to mapped to a C1 function in console /// /// public static PropertyValidatorBuilder EmailValidator() { return new EmailValidatorPropertyValidatorBuilder(); } } }