/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.query.sql.v7;
import java.util.List;
import org.teiid.query.parser.QueryParser;
import org.teiid.query.parser.TeiidNodeFactory.ASTNodes;
import org.teiid.query.sql.AbstractTestFactory;
import org.teiid.query.sql.lang.CompareCriteria;
import org.teiid.query.sql.lang.CriteriaSelector;
import org.teiid.query.sql.lang.HasCriteria;
import org.teiid.query.sql.lang.TranslateCriteria;
import org.teiid.query.sql.proc.Block;
import org.teiid.query.sql.proc.CreateUpdateProcedureCommand;
import org.teiid.query.sql.proc.IfStatement;
import org.teiid.query.sql.proc.RaiseErrorStatement;
import org.teiid.query.sql.symbol.AggregateSymbol;
import org.teiid.query.sql.symbol.Expression;
import org.teiid.query.sql.symbol.ExpressionSymbol;
import org.teiid.query.sql.symbol.WindowFunction;
/**
*
*/
@SuppressWarnings( { "javadoc", "nls" } )
public class Test7Factory extends AbstractTestFactory {
/**
* @param parser
*/
public Test7Factory(QueryParser parser) {
super(parser);
}
@Override
public Expression wrapExpression(Expression expr, String... exprName) {
String name = "expr";
if (exprName != null && exprName.length > 0)
name = exprName[0];
ExpressionSymbol exprSymbol = newNode(ASTNodes.EXPRESSION_SYMBOL);
exprSymbol.setName(name);
exprSymbol.setExpression(expr);
return exprSymbol;
}
@Override
public AggregateSymbol newAggregateSymbol(String name, boolean isDistinct, Expression expression) {
AggregateSymbol as = newNode(ASTNodes.AGGREGATE_SYMBOL);
as.setName(name);
as.setAggregateFunction(name);
as.setDistinct(isDistinct);
as.setExpression(expression);
return as;
}
public AggregateSymbol newAggregateSymbol(String name, String functionName, boolean isDistinct, Expression expression) {
AggregateSymbol as = newNode(ASTNodes.AGGREGATE_SYMBOL);
as.setName(name);
as.setAggregateFunction(functionName);
as.setDistinct(isDistinct);
as.setExpression(expression);
return as;
}
@Override
public WindowFunction newWindowFunction(String name) {
WindowFunction windowFunction = newNode(ASTNodes.WINDOW_FUNCTION);
windowFunction.setName(name);
return windowFunction;
}
public CriteriaSelector newCriteriaSelector() {
CriteriaSelector cs = newNode(ASTNodes.CRITERIA_SELECTOR);
return cs;
}
public CreateUpdateProcedureCommand newCreateUpdateProcedureCommand() {
CreateUpdateProcedureCommand cupc = newNode(ASTNodes.CREATE_UPDATE_PROCEDURE_COMMAND);
return cupc;
}
public CreateUpdateProcedureCommand newCreateUpdateProcedureCommand(Block b) {
CreateUpdateProcedureCommand command = newCreateUpdateProcedureCommand();
command.setBlock(b);
return command;
}
public HasCriteria newHasCriteria(CriteriaSelector critSelector) {
HasCriteria hasSelector = newNode(ASTNodes.HAS_CRITERIA);
hasSelector.setSelector(critSelector);
return hasSelector;
}
public TranslateCriteria newTranslateCriteria() {
TranslateCriteria tc = newNode(ASTNodes.TRANSLATE_CRITERIA);
return tc;
}
public TranslateCriteria newTranslateCriteria(CriteriaSelector critSelector, List<CompareCriteria> critList) {
TranslateCriteria tc = newTranslateCriteria();
tc.setSelector(critSelector);
tc.setTranslations(critList);
return tc;
}
public IfStatement newIfStatement(Block ifBlock, Block elseBlock, HasCriteria hasSelector) {
IfStatement ifStmt = newNode(ASTNodes.IF_STATEMENT);
ifStmt.setIfBlock(ifBlock);
ifStmt.setElseBlock(elseBlock);
ifStmt.setCondition(hasSelector);
return ifStmt;
}
@Override
public RaiseErrorStatement newRaiseStatement(Expression expr) {
RaiseErrorStatement raiseStatement = newNode(ASTNodes.RAISE_ERROR_STATEMENT);
raiseStatement.setExpression(expr);
return raiseStatement;
}
}