KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > cayenne > access > jdbc > EJBQLSelectTranslator


1 /*****************************************************************
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  ****************************************************************/

19 package org.apache.cayenne.access.jdbc;
20
21 import org.apache.cayenne.ejbql.EJBQLBaseVisitor;
22 import org.apache.cayenne.ejbql.EJBQLExpression;
23
24 /**
25  * A translator of EJBQL select statements into SQL.
26  *
27  * @since 3.0
28  * @author Andrus Adamchik
29  */

30 class EJBQLSelectTranslator extends EJBQLBaseVisitor {
31
32     private EJBQLTranslationContext context;
33
34     EJBQLSelectTranslator(EJBQLTranslationContext context) {
35         this.context = context;
36     }
37
38     EJBQLTranslationContext getContext() {
39         return context;
40     }
41
42     public boolean visitDistinct(EJBQLExpression expression) {
43         context.append(" DISTINCT");
44         return true;
45     }
46
47     public boolean visitFrom(EJBQLExpression expression, int finishedChildIndex) {
48         context.append(" FROM");
49         expression.visit(new EJBQLFromTranslator(context));
50         return false;
51     }
52
53     public boolean visitOrderBy(EJBQLExpression expression) {
54         context.append(" ORDER BY");
55         expression.visit(new EJBQLOrderByTranslator(context));
56         return false;
57     }
58
59     public boolean visitSelect(EJBQLExpression expression) {
60         context.append("SELECT");
61         return true;
62     }
63
64     public boolean visitSelectExpressions(EJBQLExpression expression) {
65         expression.visit(new EJBQLSelectColumnsTranslator(context));
66         return false;
67     }
68
69     public boolean visitWhere(EJBQLExpression expression) {
70         context.append(" WHERE");
71         expression.visit(new EJBQLConditionTranslator(context));
72         return false;
73     }
74 }
75
Popular Tags