private static Rule<View> getEmailRule(Field field, View view, Email email) { if (!TextView.class.isAssignableFrom(view.getClass())) { Log.w(TAG, String.format(WARN_TEXT, field.getName(), Regex.class.getSimpleName())); return null; } // int messageResId = email.messageResId(); // String message = messageResId != 0 ? view.getContext().getString(messageResId) : // email.message(); // return Rules.or(message, Rules.eq(null, Rules.EMPTY_STRING), Rules.regex(message, // Rules.REGEX_EMAIL, true)); int messageResId = email.messageResId(); String message = messageResId != 0 ? view.getContext().getString(messageResId) : email.message(); if (email.empty()) { return Rules.or( message, Rules.eq(null, Rules.EMPTY_STRING), Rules.regex(message, Rules.REGEX_EMAIL, true)); } List<Rule<?>> rules = new ArrayList<Rule<?>>(); rules.add(Rules.required(message, true)); rules.add(Rules.regex(message, Rules.REGEX_EMAIL, true)); Rule<?>[] ruleArray = new Rule<?>[rules.size()]; rules.toArray(ruleArray); return Rules.and(message, ruleArray); }
private static Rule<View> getIpAddressRule(Field field, View view, IpAddress ipAddress) { if (!TextView.class.isAssignableFrom(view.getClass())) { Log.w(TAG, String.format(WARN_TEXT, field.getName(), IpAddress.class.getSimpleName())); return null; } int messageResId = ipAddress.messageResId(); String message = messageResId != 0 ? view.getContext().getString(messageResId) : ipAddress.message(); return Rules.or( message, Rules.eq(null, Rules.EMPTY_STRING), Rules.regex(message, Rules.REGEX_IP_ADDRESS, true)); }
private static Rule<TextView> getRegexRule(Field field, View view, Regex regexRule) { if (!TextView.class.isAssignableFrom(view.getClass())) { Log.w(TAG, String.format(WARN_TEXT, field.getName(), Regex.class.getSimpleName())); return null; } Context context = view.getContext(); int messageResId = regexRule.messageResId(); String message = messageResId != 0 ? context.getString(messageResId) : regexRule.message(); int patternResId = regexRule.patternResId(); String pattern = patternResId != 0 ? view.getContext().getString(patternResId) : regexRule.pattern(); return Rules.regex(message, pattern, regexRule.trim()); }
private static Rule<View> getNumberRule(Field field, View view, NumberRule numberRule) { if (!TextView.class.isAssignableFrom(view.getClass())) { Log.w(TAG, String.format(WARN_TEXT, field.getName(), NumberRule.class.getSimpleName())); return null; } else if (numberRule.type() == null) { throw new IllegalArgumentException( String.format("@%s.type() cannot be null.", NumberRule.class.getSimpleName())); } List<Rule<?>> rules = new ArrayList<Rule<?>>(); int messageResId = numberRule.messageResId(); String message = messageResId != 0 ? view.getContext().getString(messageResId) : numberRule.message(); switch (numberRule.type()) { case INTEGER: case LONG: Rules.regex(null, Rules.REGEX_INTEGER, true); break; case FLOAT: case DOUBLE: Rules.regex(null, Rules.REGEX_DECIMAL, true); break; } if (numberRule.lt() != Double.MIN_VALUE) { String ltNumber = String.valueOf(numberRule.lt()); double number = Double.parseDouble(ltNumber); switch (numberRule.type()) { case INTEGER: rules.add(Rules.lt(null, ((int) number))); break; case LONG: rules.add(Rules.lt(null, ((long) number))); break; case FLOAT: rules.add(Rules.lt(null, Float.parseFloat(ltNumber))); break; case DOUBLE: rules.add(Rules.lt(null, Double.parseDouble(ltNumber))); break; } } if (numberRule.gt() != Double.MAX_VALUE) { String gtNumber = String.valueOf(numberRule.gt()); double number = Double.parseDouble(gtNumber); switch (numberRule.type()) { case INTEGER: rules.add(Rules.gt(null, ((int) number))); break; case LONG: rules.add(Rules.gt(null, ((long) number))); break; case FLOAT: rules.add(Rules.gt(null, Float.parseFloat(gtNumber))); break; case DOUBLE: rules.add(Rules.gt(null, Double.parseDouble(gtNumber))); break; } } if (numberRule.eq() != Double.MAX_VALUE) { String eqNumber = String.valueOf(numberRule.eq()); double number = Double.parseDouble(eqNumber); switch (numberRule.type()) { case INTEGER: rules.add(Rules.eq(null, ((int) number))); break; case LONG: rules.add(Rules.eq(null, ((long) number))); break; case FLOAT: rules.add(Rules.eq(null, Float.parseFloat(eqNumber))); break; case DOUBLE: rules.add(Rules.eq(null, Double.parseDouble(eqNumber))); break; } } Rule<?>[] ruleArray = new Rule<?>[rules.size()]; rules.toArray(ruleArray); return Rules.and(message, ruleArray); }