/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/arangodb/visitor/ArangoDBVisitor.java
51 строка
2 KB
Patrick
Add support for computed functions for ArangoDB
23 мар 2021, 01:03
23 мар 2021, 01:03
242c245
Код
Авторство
О чём код?
package sqlancer.arangodb.visitor; import sqlancer.arangodb.ast.ArangoDBConstant; import sqlancer.arangodb.ast.ArangoDBExpression; import sqlancer.arangodb.ast.ArangoDBSelect; import sqlancer.arangodb.query.ArangoDBSelectQuery; import sqlancer.common.ast.newast.ColumnReferenceNode; import sqlancer.common.ast.newast.NewBinaryOperatorNode; import sqlancer.common.ast.newast.NewFunctionNode; import sqlancer.common.ast.newast.NewUnaryPrefixOperatorNode; import sqlancer.common.ast.newast.Node; public abstract class ArangoDBVisitor<E> { protected abstract void visit(ArangoDBSelect<E> expression); protected abstract void visit(ColumnReferenceNode<E, ?> expression); protected abstract void visit(ArangoDBConstant expression); protected abstract void visit(NewBinaryOperatorNode<E> expression); protected abstract void visit(NewUnaryPrefixOperatorNode<E> expression); protected abstract void visit(NewFunctionNode<E, ?> expression); @SuppressWarnings("unchecked") public void visit(Node<E> expressionNode) { if (expressionNode instanceof ArangoDBSelect) { visit((ArangoDBSelect<E>) expressionNode); } else if (expressionNode instanceof ColumnReferenceNode<?, ?>) { visit((ColumnReferenceNode<E, ?>) expressionNode); } else if (expressionNode instanceof ArangoDBConstant) { visit((ArangoDBConstant) expressionNode); } else if (expressionNode instanceof NewBinaryOperatorNode<?>) { visit((NewBinaryOperatorNode<E>) expressionNode); } else if (expressionNode instanceof NewUnaryPrefixOperatorNode<?>) { visit((NewUnaryPrefixOperatorNode<E>) expressionNode); } else if (expressionNode instanceof NewFunctionNode<?, ?>) { visit((NewFunctionNode<E, ?>) expressionNode); } else { throw new AssertionError(expressionNode); } } public static ArangoDBSelectQuery asSelectQuery(Node<ArangoDBExpression> expressionNode) { ArangoDBToQueryVisitor visitor = new ArangoDBToQueryVisitor(); visitor.visit(expressionNode); return visitor.getQuery(); } }