/** * Copyright (C) 2009-2013 FoundationDB, LLC * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.foundationdb.sql.optimizer.plan; import com.foundationdb.ais.model.IndexColumn; public class FullTextField extends FullTextQuery { public enum Type { MATCH, PARSE, LIKE }; private ColumnExpression column; private Type type; private ExpressionNode key; private IndexColumn indexColumn; public FullTextField(ColumnExpression column, Type type, ExpressionNode key) { this.column = column; this.type = type; this.key = key; } public ColumnExpression getColumn() { return column; } public Type getType() { return type; } public ExpressionNode getKey() { return key; } public IndexColumn getIndexColumn() { return indexColumn; } public void setIndexColumn(IndexColumn indexColumn) { this.indexColumn = indexColumn; } public boolean accept(ExpressionVisitor v) { return (column.accept(v) && key.accept(v)); } public void accept(ExpressionRewriteVisitor v) { column = (ColumnExpression)column.accept(v); key = key.accept(v); } public FullTextField duplicate(DuplicateMap map) { return new FullTextField((ColumnExpression)column.duplicate(map), type, (ExpressionNode)key.duplicate(map)); } @Override public String toString() { return type + "(" + column + ", " + key + ")"; } }