/**============================================================ * 版权: 久其软件 版权所有 (c) * 包: com.jiuqi.njt.util * 修改记录: * 日期 作者 内容 * ============================================================*/ package com.jiuqi.util; import android.text.TextUtils; /** * <p>校验规则</p> * <p>默认提供了如下校验规则,可以直接调用validator.addRules添加 * <pre> *IS_DIGITS_ONLY 是否为纯数字 *IS_NOT_EMPTY 不可为空验证规则 *IS_MOBILE_NUMBER 是否为手机号 *IS_CHINAUNICOM_MOBILE_NUMBER 是否为中国联通手机号规则 *IS_VALID_EMAIL 是否合法的电子邮件 *IS_REACH_MAX_LENGTH 是否超出最大允许长度 * </pre> * </p> * <p> * 如果需要自己扩展,需要构造时传入规则名称 * </p> * <p>Copyright: 版权所有 (c)<br> * Company: 久其</p> */ public abstract class ValidateRule{ private final String ruleName; public ValidateRule(String ruleName){ this.ruleName = ruleName; } public String getRuleName(){ return ruleName; } @Override public int hashCode(){ final int prime = 31; int result = 1; result = prime * result + ((ruleName == null) ? 0 : ruleName.hashCode()); return result; } @Override public boolean equals(Object obj){ if(this == obj) return true; if(obj == null) return false; if(getClass() != obj.getClass()) return false; ValidateRule other = (ValidateRule)obj; if(ruleName == null){ if(other.ruleName != null) return false; } else if(!ruleName.equals(other.ruleName)) return false; return true; } /** * 是否为纯数字 */ public static ValidateRule IS_DIGITS_ONLY = new ValidateRule("IS_DIGITS_ONLY"){ @Override public ReturnObject doValidate(CharSequence text){ ReturnObject ro = new ReturnObject("是否为纯数字"); if(TextUtils.isDigitsOnly(text)){ ro.isSuccess = true; } else{ ro.isSuccess = false; ro.data = "字符串不是纯数字"; } return ro; } }; /** * 不可为空验证规则 */ public static ValidateRule IS_NOT_EMPTY = new ValidateRule("IS_NOT_EMPTY"){ @Override public ReturnObject doValidate(CharSequence text){ ReturnObject ro = new ReturnObject(this.getRuleName()); if(TextUtils.isEmpty(text)){ ro.isSuccess = false; ro.data = "字符串为空"; } else{ ro.isSuccess = true; } return ro; } }; /** * 是否为手机号 */ public static ValidateRule IS_MOBILE_NUMBER = new ValidateRule("IS_MOBILE_NUMBER"){ @Override public ReturnObject doValidate(CharSequence text){ ReturnObject ro = new ReturnObject(this.getRuleName()); if(PatternUtils.isMobileNO(text)){ ro.isSuccess = true; } else{ ro.isSuccess = false; ro.data = "不是手机号格式"; } return ro; } }; /** * 是否为中国联通手机号规则 */ public static ValidateRule IS_CHINAUNICOM_MOBILE_NUMBER = new ValidateRule("IS_CHINAUNICOM_MOBILE_NUMBER"){ @Override public ReturnObject doValidate(CharSequence text){ ReturnObject ro = new ReturnObject(this.getRuleName()); if(PatternUtils.isChinaUnicom(text.toString())){ ro.isSuccess = true; } else{ ro.isSuccess = false; ro.data = "不是中国联通手机号"; } return ro; } }; /** * 是否合法的电子邮件 */ public static ValidateRule IS_VALID_EMAIL = new ValidateRule("IS_VALID_EMAIL"){ @Override public ReturnObject doValidate(CharSequence text){ ReturnObject ro = new ReturnObject(this.getRuleName()); if(PatternUtils.isEmail(text)){ ro.isSuccess = true; } else{ ro.isSuccess = false; ro.data = "不符合电子邮件格式"; } return ro; } }; /** * 是否超出最大允许长度 */ public static ValidateRule IS_REACH_MAX_LENGTH = new ValidateRule("IS_REACH_MAX_LENGTH"){ @Override public ReturnObject doValidate(CharSequence text){ ReturnObject ro = new ReturnObject(this.getRuleName()); if(text.length() > Constants.TEXT_INPUT_MAX_LENGTH){ ro.isSuccess = false; ro.data = "字符串超长"; } else{ ro.isSuccess = true; } return ro; } }; protected abstract ReturnObject doValidate(CharSequence text); }