/** * Evaluates whether a valid ENUM can be constructed * from the provided enumerators and value. * * @param enumerators the enumerators * @param value the value * @return whether a valid ENUM can be constructed from the provided values */ public static boolean isValid(final String enumerators[], final Value value) { return validate(enumerators, value).equals(Validation.VALID); }
private static void check(final String[] enumerators, final Value value) { check(enumerators); if (validate(enumerators, value) != Validation.VALID) { throw DbException.get(ErrorCode.ENUM_VALUE_NOT_PERMITTED, toString(enumerators), value.toString()); } }
private static Validation validate(final String[] enumerators, final Value value) { final Validation validation = validate(enumerators); if (!validation.equals(Validation.VALID)) { return validation; } if (DataType.isStringType(value.getType())) { final String cleanLabel = sanitize(value.getString()); for (String enumerator : enumerators) { if (cleanLabel.equals(sanitize(enumerator))) { return Validation.VALID; } } return Validation.INVALID; } else { final int ordinal = value.getInt(); if (ordinal < 0 || ordinal >= enumerators.length) { return Validation.INVALID; } return Validation.VALID; } } }
/** * Check for any violations, such as empty * values, duplicate values. * * @param enumerators the enumerators */ public static void check(final String[] enumerators) { switch (validate(enumerators)) { case VALID: return; case EMPTY: throw DbException.get(ErrorCode.ENUM_EMPTY); case DUPLICATE: throw DbException.get(ErrorCode.ENUM_DUPLICATE, toString(enumerators)); default: throw DbException.get(ErrorCode.INVALID_VALUE_2, toString(enumerators)); } }