package gueei.binding.labs.validation.validators; import gueei.binding.labs.validation.ValidatorBase; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import android.content.Context; @Retention(RetentionPolicy.RUNTIME) public @interface MaxLength{ public Class<?> Validator() default MaxLengthValidator.class; public int Length(); public String ErrorMessage() default "%fieldname% cannot have more than %length% characters"; public String ErrorMessageRes() default ""; public class MaxLengthValidator extends ValidatorBase<MaxLength> { @Override public Class<MaxLength> getAcceptedAnnotation() { return MaxLength.class; } @Override protected String doFormatErrorMessage(Context context, MaxLength parameters, String fieldName, String errorMessageFormat) { return errorMessageFormat .replace("%fieldname%", fieldName) .replace("%length%", parameters.Length() + ""); } @Override protected boolean doValidate(Context context, Object value, MaxLength parameters, Object model) { if (value==null) return false; if (!(value instanceof CharSequence)) return true; return ((CharSequence)value).length() <= parameters.Length(); } } }