KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > tools > shell > QueryExecuter


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 JavaDoc[] info;
17
18   /**
19    * QueryExecuter
20    *
21    * @param bufferedReader BufferedReader
22    */

23   public QueryExecuter(BufferedReader bufferedReader) {
24     rd = bufferedReader;
25   }
26
27   public void execute(String JavaDoc query, _Connection connection) throws Exception JavaDoc {
28     if (query.trim().equals("")) {
29       return;
30     }
31     Object JavaDoc executeresult = new Object JavaDoc();
32     String JavaDoc 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 JavaDoc[] 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 JavaDoc 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 JavaDoc[] setParamatersValue(Object JavaDoc[] parameters,
71                                        _ParameterMetaData metaData) throws
72        Exception JavaDoc {
73      int count = metaData.getParameterCount();
74      parameters = new Object JavaDoc[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 JavaDoc 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 JavaDoc e) {
90            i--;
91            DisplayOutput.printError("Incompatible Data type:", e);
92          }
93        }
94      }
95      return parameters;
96    }
97
98
99    private Object JavaDoc getWrappedObject(String JavaDoc value, int dataType) throws Exception JavaDoc {
100      try {
101        return getConvertObject(value,
102                                Utilities.
103                                getCorrespondingSqlTypeOfDatabaseType(dataType));
104      }
105      catch (RuntimeException JavaDoc ex) {
106        throw ex;
107      }
108    }
109
110   private Object JavaDoc getConvertObject(Object JavaDoc obj, int type) throws Exception JavaDoc {
111
112     if (obj == null) {
113       return null;
114     }
115     try {
116       String JavaDoc str = (String JavaDoc) obj;
117       str = str.trim();
118       switch (type) {
119         case Types.TINYINT:
120         case Types.SMALLINT:
121         case Types.INTEGER:
122           return new Integer JavaDoc(str);
123         case Types.BIGINT:
124           return new Long JavaDoc(str);
125         case Types.REAL:
126           return new Float JavaDoc(str);
127         case Types.FLOAT:
128           return new Double JavaDoc(str);
129         case Types.DOUBLE:
130           return new Double JavaDoc(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 JavaDoc(! (str.equalsIgnoreCase("false") ||
137                                 str.equalsIgnoreCase("0")));
138         case Types.BIT:
139           return new Boolean JavaDoc(! (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 JavaDoc sqe) {
159       throw sqe;
160     }
161
162   }
163
164 }
165
Popular Tags