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 Required{ public Class<?> Validator() default RequiredValidator.class; public String ErrorMessage() default "%fieldname% is required"; public String ErrorMessagRes() default ""; public class RequiredValidator extends ValidatorBase<Required> { @Override public Class<Required> getAcceptedAnnotation() { return Required.class; } @Override protected String doFormatErrorMessage(Context context, Required parameters, String fieldName, String errorMessageFormat) { return errorMessageFormat.replace("%fieldname%", fieldName); } @Override protected boolean doValidate(Context context, Object value, Required parameters, Object model) { if (value==null) return false; if (Boolean.FALSE.equals(value)) return false; if (value instanceof CharSequence){ if (((CharSequence) value).length() == 0) return false; } return true; } } }