From fce4c8af6333cc77af9edb4b2e3950235589431a Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Thu, 21 Dec 2006 23:33:37 +0000 Subject: [PATCH] Added Conditionals.Match for MySQL full text query operator. --- .../jdbc/depot/operator/Conditionals.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/java/com/samskivert/jdbc/depot/operator/Conditionals.java b/src/java/com/samskivert/jdbc/depot/operator/Conditionals.java index 577e129..9f32eb7 100644 --- a/src/java/com/samskivert/jdbc/depot/operator/Conditionals.java +++ b/src/java/com/samskivert/jdbc/depot/operator/Conditionals.java @@ -196,4 +196,45 @@ public abstract class Conditionals protected ColumnExp _column; protected Comparable[] _values; } + + /** The MySQL 'match (...) against (...)' operator. */ + public static class Match + implements SQLOperator + { + public Match (String query, String... pColumns) + { + _query = query; + _columns = new ColumnExp[pColumns.length]; + for (int ii = 0; ii < pColumns.length; ii++) { + _columns[ii] = new ColumnExp(null, pColumns[ii]); + } + } + + public Match (String query, ColumnExp... columns) + { + _query = query; + _columns = columns; + } + + // from SQLExpression + public void appendExpression (Query query, StringBuilder builder) + { + builder.append("match("); + for (ColumnExp column : _columns) { + column.appendExpression(query, builder); + } + builder.append(") against (?)"); + } + + // from SQLExpression + public int bindArguments (PreparedStatement pstmt, int argIdx) + throws SQLException + { + pstmt.setString(argIdx++, _query); + return argIdx; + } + + protected String _query; + protected ColumnExp[] _columns; + } }