/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2008.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.sail.rdbms.evaluation;
/**
* Facilitates the building of a regular expression in SQL.
*
* @author James Leigh
*
*/
public class SqlRegexBuilder {
private SqlExprBuilder where;
private SqlExprBuilder value;
private SqlExprBuilder pattern;
private SqlExprBuilder flags;
public SqlRegexBuilder(SqlExprBuilder where, QueryBuilderFactory factory) {
super();
this.where = where;
value = factory.createSqlExprBuilder();
pattern = factory.createSqlExprBuilder();
flags = factory.createSqlExprBuilder();
}
public SqlExprBuilder value() {
return value;
}
public SqlExprBuilder pattern() {
return pattern;
}
public SqlExprBuilder flags() {
return flags;
}
public SqlExprBuilder close() {
appendRegExp(where);
return where;
}
protected void appendRegExp(SqlExprBuilder where) {
where.append("REGEXP(");
appendValue(where);
where.append(", ");
appendPattern(where);
where.append(", ");
appendFlags(where);
where.append(")");
}
protected SqlExprBuilder appendValue(SqlExprBuilder where) {
where.append(value.toSql());
where.addParameters(value.getParameters());
return where;
}
protected SqlExprBuilder appendPattern(SqlExprBuilder where) {
where.append(pattern.toSql());
where.addParameters(pattern.getParameters());
return where;
}
protected SqlExprBuilder appendFlags(SqlExprBuilder where) {
where.append(flags.toSql());
where.addParameters(flags.getParameters());
return where;
}
}