public static void checkArray(Object[] data, Class<?> outType, Checkable checkable) throws CheckableDataException { checkIsNull(data, checkable); int length = data.length; if (checkable.maxLength() != -1 && length > checkable.maxLength()) { String message = StringUtils.unite( "[", data, "] length is ", length, " claim array max length ", checkable.maxLength(), ". data check failed!"); throw new CheckableDataException(message); } if (checkable.minLength() != -1 && length < checkable.minLength()) { String message = StringUtils.unite( "[", data, "] length is ", length, " claim array min length ", checkable.minLength(), ". data check failed!"); throw new CheckableDataException(message); } for (int i = 0; i < length; i++) { String tmp = ConvertUtil.toString(data[i]); if (outType == String[].class) { checkString(tmp, checkable); } else if (outType == Integer[].class || outType == int[].class) { checkInteger(tmp, checkable); } else if (outType == Double[].class || outType == double[].class) { checkDouble(tmp, checkable); } else if (outType == Float[].class || outType == float[].class) { checkFloat(tmp, checkable); } else if (outType == Date[].class) { checkDate(tmp, checkable); } else { checkObject(data[i], outType.getComponentType(), checkable); } } }
public static void checkString(String data, Checkable checkable) throws CheckableDataException { checkIsNull(data, checkable); int length = data.length(); if (checkable.maxLength() != -1 && length > checkable.maxLength()) { String message = StringUtils.unite( "[", data, "] length is ", length, " claim max length ", checkable.maxLength(), ". data check failed!"); throw new CheckableDataException(message); } if (checkable.minLength() != -1 && length < checkable.minLength()) { String message = StringUtils.unite( "[", data, "] length is ", length, " claim min length ", checkable.minLength(), ". data check failed!"); throw new CheckableDataException(message); } if (StringUtils.isNotEmpty(checkable.regex())) { Pattern pattern = Pattern.compile(checkable.regex()); Matcher matcher = pattern.matcher(data); if (!matcher.matches()) { String message = StringUtils.unite("[", data, "] claim regex does not pass. data check failed!"); throw new CheckableDataException(message); } } }