package gueei.binding.labs.validation.validators;
import gueei.binding.labs.validation.ValidatorBase;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.regex.Pattern;
import android.content.Context;
@Retention(RetentionPolicy.RUNTIME)
public @interface RegexMatch{
public Class<?> Validator() default RegexMatchValidator.class;
public String Pattern();
public String ErrorMessage() default "%fieldname% does not match the regext pattern: %pattern%";
public String ErrorMessageRes() default "";
public class RegexMatchValidator extends ValidatorBase<RegexMatch> {
@Override
public Class<RegexMatch> getAcceptedAnnotation() {
return RegexMatch.class;
}
@Override
protected String doFormatErrorMessage(Context context,
RegexMatch parameters, String fieldName,
String errorMessageFormat) {
return errorMessageFormat
.replace("%fieldname%", fieldName)
.replace("%pattern%", parameters.Pattern());
}
@Override
protected boolean doValidate(Context context, Object value,
RegexMatch parameters, Object model) {
// That do not violate with required field
if (value==null) return true;
if (value instanceof CharSequence){
return Pattern.matches(parameters.Pattern(), ((CharSequence)value));
}
// if not CharSequence, just return true
return true;
}
}
}