1 package com.daffodilwoods.tools.shell; 2 3 import java.io.*; 4 import java.math.*; 5 import java.sql.*; 6 7 import com.daffodilwoods.daffodildb.server.serversystem.*; 8 import com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents.*; 9 import com.daffodilwoods.database.general.*; 10 import in.co.daffodil.db.jdbc.*; 11 12 public class QueryExecuter { 13 public boolean isRMI = false; 14 static final int BOOLEAN = 16; 15 private BufferedReader rd; 16 private Object [] info; 17 18 23 public QueryExecuter(BufferedReader bufferedReader) { 24 rd = bufferedReader; 25 } 26 27 public void execute(String query, _Connection connection) throws Exception { 28 if (query.trim().equals("")) { 29 return; 30 } 31 Object executeresult = new Object (); 32 String queryToBeExecuted = EscapeParser.parse(query); 33 info = connection.executeBatch(queryToBeExecuted); 34 QueryInfo queryInfo; 35 boolean more = false; 36 for (int i = 0; i < info.length; i++) { 37 queryInfo = (QueryInfo) info[i]; 38 _ParameterMetaData metaData = queryInfo.getMetaData(); 39 Object [] paramaters = null; 40 _PreparedStatement ps = null; 41 int queryType = queryInfo.getType(); 42 if (queryType != QueryInfo.OTHERS) { 43 ps = connection.getPreparedStatement(queryInfo.getQuery(), 44 IteratorConstants.NONSCROLLABLE); 45 } 46 do { 47 if (metaData != null) { 48 more = true; 49 paramaters = setParamatersValue(paramaters, metaData); 50 } 51 if (queryType != QueryInfo.OTHERS) { 52 executeresult = ps.execute(paramaters); 53 } 54 DisplayOutput.displayOutput(query, executeresult, queryType); 55 if (more) { 56 DisplayOutput.display("\n More " + 57 query.substring(0, query.indexOf(" ")) + 58 " to execute ? [Y/N] :"); 59 String m = rd.readLine(); 60 if (m == null) { 61 m = "N"; 62 } 63 more = m.trim().equalsIgnoreCase("Y") ? true : false; 64 } 65 } 66 while (more); 67 } 68 } 69 70 private Object [] setParamatersValue(Object [] parameters, 71 _ParameterMetaData metaData) throws 72 Exception { 73 int count = metaData.getParameterCount(); 74 parameters = new Object [count]; 75 DisplayOutput.displayLn(""); 76 for (int i = 0; i < count; i++) { 77 DisplayOutput.display(" Enter the value of [" + 78 metaData.getParameterName(i) + 79 "]\t: "); 80 String value = rd.readLine(); 81 if (value == null || value.trim().length() == 0) { 82 parameters[i] = null; 83 } 84 else { 85 try { 86 parameters[i] = getWrappedObject(value, 87 metaData.getParameterDataType(i)); 88 } 89 catch (NumberFormatException e) { 90 i--; 91 DisplayOutput.printError("Incompatible Data type:", e); 92 } 93 } 94 } 95 return parameters; 96 } 97 98 99 private Object getWrappedObject(String value, int dataType) throws Exception { 100 try { 101 return getConvertObject(value, 102 Utilities. 103 getCorrespondingSqlTypeOfDatabaseType(dataType)); 104 } 105 catch (RuntimeException ex) { 106 throw ex; 107 } 108 } 109 110 private Object getConvertObject(Object obj, int type) throws Exception { 111 112 if (obj == null) { 113 return null; 114 } 115 try { 116 String str = (String ) obj; 117 str = str.trim(); 118 switch (type) { 119 case Types.TINYINT: 120 case Types.SMALLINT: 121 case Types.INTEGER: 122 return new Integer (str); 123 case Types.BIGINT: 124 return new Long (str); 125 case Types.REAL: 126 return new Float (str); 127 case Types.FLOAT: 128 return new Double (str); 129 case Types.DOUBLE: 130 return new Double (str); 131 case Types.DECIMAL: 132 return new BigDecimal(str); 133 case Types.NUMERIC: 134 return new BigDecimal(str); 135 case BOOLEAN: 136 return new Boolean (! (str.equalsIgnoreCase("false") || 137 str.equalsIgnoreCase("0"))); 138 case Types.BIT: 139 return new Boolean (! (str.equalsIgnoreCase("false") || 140 str.equalsIgnoreCase("0"))); 141 case Types.CHAR: 142 return str; 143 case Types.VARCHAR: 144 return str; 145 case Types.LONGVARCHAR: 146 return str; 147 case Types.DATE: 148 return java.sql.Date.valueOf(str); 149 case Types.TIME: 150 return java.sql.Time.valueOf(str); 151 case Types.TIMESTAMP: 152 return java.sql.Timestamp.valueOf(str); 153 case Types.CLOB: 154 return str; 155 } 156 return obj; 157 } 158 catch (Exception sqe) { 159 throw sqe; 160 } 161 162 } 163 164 } 165 | Popular Tags |