Search in sources :

Example 66 with Node

use of org.apache.cayenne.access.sqlbuilder.sqltree.Node in project cayenne by apache.

the class QualifierTranslatorIT method testCompoundPK.

@Test
public void testCompoundPK() {
    CompoundPkTestEntity testEntity = ObjectSelect.query(CompoundPkTestEntity.class).selectFirst(context);
    assertNotNull(testEntity);
    ObjectSelect<CompoundFkTestEntity> query = ObjectSelect.query(CompoundFkTestEntity.class).where(CompoundFkTestEntity.TO_COMPOUND_PK.eq(testEntity)).and(CompoundFkTestEntity.NAME.like("test%")).and(CompoundFkTestEntity.NAME.contains("a"));
    DefaultSelectTranslator translator = new DefaultSelectTranslator(query, runtime.getDataDomain().getDefaultNode().getAdapter(), context.getEntityResolver());
    QualifierTranslator qualifierTranslator = translator.getContext().getQualifierTranslator();
    Node node = qualifierTranslator.translate(query.getWhere());
    SQLGenerationVisitor visitor = new SQLGenerationVisitor(new StringBuilderAppendable());
    node.visit(visitor);
    assertEquals(" ( ( ( t0.F_KEY1 = 'PK1' ) AND ( t0.F_KEY2 = 'PK2' ) ) AND t0.NAME LIKE 'test%' ) AND t0.NAME LIKE '%a%'", visitor.getSQLString());
}
Also used : CompoundPkTestEntity(org.apache.cayenne.testdo.compound.CompoundPkTestEntity) StringBuilderAppendable(org.apache.cayenne.access.sqlbuilder.StringBuilderAppendable) Node(org.apache.cayenne.access.sqlbuilder.sqltree.Node) SQLGenerationVisitor(org.apache.cayenne.access.sqlbuilder.SQLGenerationVisitor) CompoundFkTestEntity(org.apache.cayenne.testdo.compound.CompoundFkTestEntity) Test(org.junit.Test)

Example 67 with Node

use of org.apache.cayenne.access.sqlbuilder.sqltree.Node in project cayenne by apache.

the class QualifierTranslationStageTest method perform.

@Test
public void perform() {
    QualifierTranslationStage stage = new QualifierTranslationStage();
    stage.perform(context);
    assertNotNull(context.getQualifierNode());
    // Content of "Qualifier" node:
    // 
    // OpExpression
    // /        \
    // Column     Value
    Node op = context.getQualifierNode();
    assertThat(op, instanceOf(OpExpressionNode.class));
    assertEquals(">=", ((OpExpressionNode) op).getOp());
    assertEquals(2, op.getChildrenCount());
    assertThat(op.getChild(0), instanceOf(ColumnNode.class));
    assertThat(op.getChild(1), instanceOf(ValueNode.class));
    ColumnNode columnNode = (ColumnNode) op.getChild(0);
    ValueNode valueNode = (ValueNode) op.getChild(1);
    assertEquals("path", columnNode.getColumn());
    assertEquals(10, valueNode.getValue());
}
Also used : OpExpressionNode(org.apache.cayenne.access.sqlbuilder.sqltree.OpExpressionNode) ValueNode(org.apache.cayenne.access.sqlbuilder.sqltree.ValueNode) ColumnNode(org.apache.cayenne.access.sqlbuilder.sqltree.ColumnNode) WhereNode(org.apache.cayenne.access.sqlbuilder.sqltree.WhereNode) Node(org.apache.cayenne.access.sqlbuilder.sqltree.Node) OpExpressionNode(org.apache.cayenne.access.sqlbuilder.sqltree.OpExpressionNode) ColumnNode(org.apache.cayenne.access.sqlbuilder.sqltree.ColumnNode) ValueNode(org.apache.cayenne.access.sqlbuilder.sqltree.ValueNode) Test(org.junit.Test)

Aggregations

Node (org.apache.cayenne.access.sqlbuilder.sqltree.Node)67 Test (org.junit.Test)32 ColumnNode (org.apache.cayenne.access.sqlbuilder.sqltree.ColumnNode)15 OpExpressionNode (org.apache.cayenne.access.sqlbuilder.sqltree.OpExpressionNode)15 FunctionNode (org.apache.cayenne.access.sqlbuilder.sqltree.FunctionNode)14 LimitOffsetNode (org.apache.cayenne.access.sqlbuilder.sqltree.LimitOffsetNode)13 TextNode (org.apache.cayenne.access.sqlbuilder.sqltree.TextNode)11 EmptyNode (org.apache.cayenne.access.sqlbuilder.sqltree.EmptyNode)9 ValueNode (org.apache.cayenne.access.sqlbuilder.sqltree.ValueNode)9 DbEntity (org.apache.cayenne.map.DbEntity)9 SelectNode (org.apache.cayenne.access.sqlbuilder.sqltree.SelectNode)8 InsertNode (org.apache.cayenne.access.sqlbuilder.sqltree.InsertNode)6 TrimmingColumnNode (org.apache.cayenne.access.sqlbuilder.sqltree.TrimmingColumnNode)6 QuotingAppendable (org.apache.cayenne.access.sqlbuilder.QuotingAppendable)5 UpdateNode (org.apache.cayenne.access.sqlbuilder.sqltree.UpdateNode)5 DeleteNode (org.apache.cayenne.access.sqlbuilder.sqltree.DeleteNode)4 InNode (org.apache.cayenne.access.sqlbuilder.sqltree.InNode)4 MysqlLimitOffsetNode (org.apache.cayenne.dba.mysql.sqltree.MysqlLimitOffsetNode)4 Expression (org.apache.cayenne.exp.Expression)4 SimpleNode (org.apache.cayenne.exp.parser.SimpleNode)4