KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > utils > parser > QueryReWriter


1 package com.daffodilwoods.daffodildb.utils.parser;
2
3 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.*;
4 import com.daffodilwoods.daffodildb.utils.parser.QueryProperty;
5 import com.daffodilwoods.database.resource.DException;
6
7 public class QueryReWriter implements _QueryReWriter{
8
9     String JavaDoc columnList;
10     String JavaDoc orderByClause;
11     String JavaDoc filterClause;
12     String JavaDoc query;
13     queryexpression receivedQuery;
14     boolean clearColumn;
15     boolean clearOrder;
16
17
18
19     public QueryReWriter(String JavaDoc query0) {
20         query = query0;
21
22     }
23     public void addColumnList(String JavaDoc parm1) {
24         columnList = parm1;
25     }
26
27     public void addFilter(String JavaDoc parm1) {
28         filterClause = parm1;
29     }
30
31     public void addOrder(String JavaDoc parm1) {
32         orderByClause = parm1;
33     }
34
35     public void clearColumnList() {
36         clearColumn = true;
37     }
38
39     public void clearOrder() {
40         clearOrder = true;
41     }
42
43     public String JavaDoc getQuery() throws DException{
44       receivedQuery = (queryexpression)Parser.parseQuery(query);
45       QueryProperty queryProperty = receivedQuery.getStrings();
46       StringBuffer JavaDoc newQuery = new StringBuffer JavaDoc();
47       newQuery.append(" Select ");
48
49       if(!clearColumn){
50         newQuery.append(queryProperty.getColumnList());
51         if(columnList != null){
52           newQuery.append(",");
53           newQuery.append(columnList);
54         }
55       }
56       else
57         newQuery.append(columnList);
58
59       newQuery.append(" ");
60       newQuery.append(queryProperty.getFromClause());
61       newQuery.append(" ");
62       String JavaDoc whereClause = queryProperty.getWhereClause();
63
64       if(filterClause == null && whereClause != null )
65         newQuery.append(whereClause);
66
67       if(filterClause!=null )
68         if(whereClause != null){
69          ;//// Removed By Program ** System.out.println("where clause is :::"+whereClause);
70
String JavaDoc substr = whereClause.substring(6);
71            newQuery.append(" where (");
72            newQuery.append(substr);
73            newQuery.append(" ) AND (");
74            newQuery.append(filterClause);
75            newQuery.append(" )");
76         }
77         else{
78           newQuery.append(" where ");
79           newQuery.append(filterClause);
80         }
81         newQuery.append(" ");
82
83         newQuery.append(queryProperty.getGroupByClause()== null?" ":queryProperty.getGroupByClause());
84         newQuery.append(" ");
85         newQuery.append(queryProperty.getHavingClause() == null ? " " : queryProperty.getHavingClause());
86
87         if(!clearOrder){
88           String JavaDoc queryOrder = queryProperty.getOrderByClause();
89           if(queryOrder == null){
90             if( orderByClause != null ){
91               newQuery.append(" order by ");
92               newQuery.append(orderByClause);
93             }
94           }
95           else{
96             newQuery.append(queryProperty.getOrderByClause());
97             if(orderByClause!=null){
98               newQuery.append(",");
99               newQuery.append(orderByClause);
100             }
101           }
102         }
103         else if(orderByClause != null){
104           newQuery.append(" order by ");
105           newQuery.append(orderByClause);
106         }
107
108         try{
109           Parser.parseQuery(newQuery.toString());
110         }catch(DException e){
111           throw new DException("DSE1270",(Object JavaDoc[])null);
112         }
113         return newQuery.toString();
114     }
115 }
116
Popular Tags