use of org.apache.cayenne.access.sqlbuilder.sqltree.Node in project cayenne by apache.
the class BaseBatchTranslator method doTranslate.
/**
* This method applies {@link org.apache.cayenne.access.translator.select.BaseSQLTreeProcessor} to the
* provided SQL tree node and generates SQL string from it.
*
* @param nodeBuilder SQL tree node builder
* @return SQL string
*/
protected String doTranslate(NodeBuilder nodeBuilder) {
Node node = nodeBuilder.build();
// convert to database flavour
node = context.getAdapter().getSqlTreeProcessor().process(node);
// generate SQL
SQLGenerationVisitor visitor = new SQLGenerationVisitor(new DefaultQuotingAppendable(context));
node.visit(visitor);
bindings = context.getBindings().toArray(new DbAttributeBinding[0]);
return visitor.getSQLString();
}
use of org.apache.cayenne.access.sqlbuilder.sqltree.Node in project cayenne by apache.
the class ExpressionNodeBuilder method not.
public ExpressionNodeBuilder not() {
return new ExpressionNodeBuilder(() -> {
Node and = new NotNode();
and.addChild(left.build());
return and;
});
}
use of org.apache.cayenne.access.sqlbuilder.sqltree.Node in project cayenne by apache.
the class OrderingNodeBuilder method build.
@Override
public Node build() {
Node node = new EmptyNode();
node.addChild(column.build());
node.addChild(new TextNode(direction));
return node;
}
use of org.apache.cayenne.access.sqlbuilder.sqltree.Node in project cayenne by apache.
the class QualifierTranslator method objectNode.
@Override
public void objectNode(Object leaf, Expression parentNode) {
if (expressionsToSkip.contains(parentNode)) {
return;
}
if (parentNode.getType() == OBJ_PATH || parentNode.getType() == DB_PATH || parentNode.getType() == DBID_PATH) {
return;
}
ValueNodeBuilder valueNodeBuilder = value(leaf).attribute(findDbAttribute(parentNode));
if (parentNode.getType() == Expression.LIST) {
valueNodeBuilder.array(true);
}
Node nextNode = valueNodeBuilder.build();
currentNode.addChild(nextNode);
nextNode.setParent(currentNode);
}
use of org.apache.cayenne.access.sqlbuilder.sqltree.Node in project cayenne by apache.
the class SQLGenerationStage method perform.
@Override
public void perform(TranslatorContext context) {
if (context.isSkipSQLGeneration()) {
return;
}
// Build final SQL tree
Node node = context.getSelectBuilder().build();
// convert to database flavour
node = context.getAdapter().getSqlTreeProcessor().process(node);
// generate SQL
SQLGenerationVisitor visitor = new SQLGenerationVisitor(new DefaultQuotingAppendable(context));
node.visit(visitor);
context.setFinalSQL(visitor.getSQLString());
}
Aggregations