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 columnList; 10 String orderByClause; 11 String filterClause; 12 String query; 13 queryexpression receivedQuery; 14 boolean clearColumn; 15 boolean clearOrder; 16 17 18 19 public QueryReWriter(String query0) { 20 query = query0; 21 22 } 23 public void addColumnList(String parm1) { 24 columnList = parm1; 25 } 26 27 public void addFilter(String parm1) { 28 filterClause = parm1; 29 } 30 31 public void addOrder(String 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 getQuery() throws DException{ 44 receivedQuery = (queryexpression)Parser.parseQuery(query); 45 QueryProperty queryProperty = receivedQuery.getStrings(); 46 StringBuffer newQuery = new StringBuffer (); 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 whereClause = queryProperty.getWhereClause(); 63 64 if(filterClause == null && whereClause != null ) 65 newQuery.append(whereClause); 66 67 if(filterClause!=null ) 68 if(whereClause != null){ 69 ; String 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 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 [])null); 112 } 113 return newQuery.toString(); 114 } 115 } 116 | Popular Tags |