boolean isMatch(SqlParams params, int[] loopIndex) { String var = applyLoopIndex(_variable, loopIndex); if (params.contains(var) == false) { return false; } Object value = params.get(var); if (value == null) { return false; } if (_matchValue != null) { return _matchValue.equalsIgnoreCase(value.toString()); } if (value instanceof Boolean) { return ((Boolean) value).booleanValue(); } return true; }
/** * Given a variable or literal string, extract the value. * * @param params the SQL parameters * @param str the value to parse * @return the integer value */ static int extractVariableOrLiteral(SqlParams params, String str) { if (str != null) { if (str.startsWith(":") && str.length() > 1) { String fetchVariableName = extractVariableName(str); if (params.contains(fetchVariableName)) { return ((Number) params.get(fetchVariableName)).intValue(); } } else if (str.matches("[0-9]+")) { return Integer.parseInt(str); } } return 0; }
@Override void toSQL(StringBuilder buf, SqlFragments fragments, SqlParams params, int[] loopIndex) { String key = _includeKey; if (key.startsWith(":")) { String var = extractVariableName(key); if (params.contains(var)) { key = params.get(var).toString(); } } NameSqlFragment unit = fragments.getFragment(key); unit.toSQL(buf, fragments, params, loopIndex); }