KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > serversystem > RestoreHandler


1 package com.daffodilwoods.daffodildb.server.serversystem;
2
3 import java.util.*;
4
5 import org.xml.sax.*;
6 import com.daffodilwoods.daffodildb.server.sql99.common.*;
7 import com.daffodilwoods.daffodildb.utils.*;
8 import com.daffodilwoods.database.general.*;
9 import com.daffodilwoods.database.resource.*;
10 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.Utility;
11
12 public class RestoreHandler
13     implements SaveModeConstants, Datatypes {
14
15   private ServerSystem serverSystem;
16   private Properties properties;
17   private HashMap connectionIdMap;
18   private _Connection connection;
19
20   private Object JavaDoc sessionId;
21   private int queryMethod;
22   private int operationType;
23
24   private String JavaDoc queryorsavepointname;
25   private ArrayList paramsList;
26   private String JavaDoc savelobFilePath;
27
28   private String JavaDoc userName;
29   private String JavaDoc password;
30   private String JavaDoc newDBName;
31
32   public RestoreHandler(ServerSystem serverSystem0, String JavaDoc newDBName0,
33                         String JavaDoc clobFilePath0) {
34     serverSystem = serverSystem0;
35     newDBName = newDBName0;
36     savelobFilePath = clobFilePath0;
37     connectionIdMap = new HashMap();
38   }
39
40   public void setSessionId(Object JavaDoc sessionId0) {
41     sessionId = sessionId0;
42   }
43
44   public void setQueryMethod(int queryOrMethod0) {
45     queryMethod = queryOrMethod0;
46   }
47
48   public void setOperatorType(int opType0) {
49     operationType = opType0;
50   }
51
52   public void setConnection(_Connection connection0) {
53     connection = connection0;
54   }
55
56   public void setParameters(ArrayList paramsList0) {
57     paramsList = paramsList0;
58   }
59
60   public void addParameter(Object JavaDoc param) {
61     paramsList.add(param);
62   }
63
64   public void setQueryString(String JavaDoc query0) {
65     queryorsavepointname = query0;
66   }
67
68   public void setSavePointName(String JavaDoc queryorsavepointname0) {
69     queryorsavepointname = queryorsavepointname0;
70   }
71
72   public void setUserName(String JavaDoc user0) {
73     userName = user0;
74   }
75
76   public void setPassword(String JavaDoc password0) {
77     password = password0;
78   }
79
80   public void performOperation() throws DException,SAXException {
81         /*System.out.println(" Query To Execute " +
82                            queryorsavepointname + " queryMethod " +
83                            queryMethod + " operationType " + operationType);*/

84         switch (queryMethod) {
85           case QUERY:
86             connection = getConnection(sessionId);
87             switch (operationType) {
88               case PREPARED:
89                 _PreparedStatement prStt = connection.getPreparedStatement(
90                     queryorsavepointname, 0);
91                 Object JavaDoc[] params = getParameters(prStt.getParameterMetaData());
92                 prStt.execute(params);
93                 break;
94               case NON_PREPARED:
95                 connection.execute(queryorsavepointname, 0, 0);
96                 break;
97               default:
98                 break;
99             }
100             break;
101           case METHOD:
102             switch (operationType) {
103               case STARTCONNECTION:
104                 startConnection(sessionId);
105                 break;
106               case COMMIT:
107                 connection = getConnection(sessionId);
108                 connection.commit();
109                 break;
110               case ROLLBACK:
111                 connection = getConnection(sessionId);
112                 connection.rollback();
113                 break;
114               case SETSAVEPOINT:
115                 connection = getConnection(sessionId);
116                 connection.setSavePoint(queryorsavepointname);
117                 break;
118               case RELEASESAVEPOINT:
119                 connection = getConnection(sessionId);
120                 connection.releaseSavePoint(queryorsavepointname);
121                 break;
122               case COMMITSAVEPOINT:
123                 connection = getConnection(sessionId);
124                 connection.commitSavePoint();
125                 break;
126               case ROLLBACKSAVEPOINT:
127                 connection = getConnection(sessionId);
128                 connection.rollbackSavePoint(queryorsavepointname);
129                 break;
130               case SETCOMMITON:
131                 connection = getConnection(sessionId);
132                 connection.setAutoCommit(true);
133                 break;
134               case SETCOMMITOFF:
135                 connection = getConnection(sessionId);
136                 connection.setAutoCommit(false);
137                 break;
138               case CLOSE:
139                 connection = getConnection(sessionId);
140                 connection.close();
141                 connectionIdMap.remove(sessionId);
142                 break;
143               default:
144                 break;
145             }
146             break;
147           default:
148             break;
149         }
150   }
151
152   private Object JavaDoc[] getParameters(_ParameterMetaData pmd) throws DException {
153     int no = paramsList.size();
154     Object JavaDoc[] params = new Object JavaDoc[no];
155     for (int i = 0; i < no; i++) {
156       Object JavaDoc value = paramsList.get(i);
157       int dataType = pmd.getParameterDataType(i);
158       switch (dataType) {
159         case BYTE:
160         case TINYINT:
161           params[i] = new Byte JavaDoc(Byte.parseByte("" + value));
162           break;
163         case SMALLINT:
164         case SHORT:
165           params[i] = new Short JavaDoc(Short.parseShort("" + value));
166           break;
167         case INT:
168         case INTEGER:
169           params[i] = new Integer JavaDoc(Integer.parseInt("" + value));
170           break;
171         case LONG:
172         case BIGINT:
173           params[i] = new Long JavaDoc(Long.parseLong("" + value));
174           break;
175         case REAL:
176           params[i] = new Float JavaDoc(Float.parseFloat("" + value));
177           break;
178         case FLOAT:
179         case DOUBLE:
180         case DOUBLEPRECISION:
181           params[i] = new Double JavaDoc(Double.parseDouble("" + value));
182           break;
183         case NUMERIC:
184         case DECIMAL:
185         case DEC:
186         case BIGDECIMAL:
187           params[i] = value;
188           break;
189         case VARCHAR:
190         case CHAR:
191         case CHARACTERVARYING:
192         case CHARVARYING:
193         case CHARACTER:
194           if((value+"").equals("parametervalueisnull"))
195             params[i] = null;
196           else
197             params[i] = value;
198           break;
199         case BOOLEAN:
200           params[i] = Utility.getBooleanValue(""+value);
201           break;
202         case DATE:
203           params[i] = new DBDate(java.sql.Date.parse("" + value));
204           break;
205         case TIME:
206           params[i] = new java.sql.Time JavaDoc(java.sql.Time.parse("" + value));
207           break;
208         case TIMESTAMP:
209           params[i] = new java.sql.Timestamp JavaDoc(java.sql.Timestamp.parse("" +
210               value));
211           break;
212         case BLOB:
213         case BINARYLARGEOBJECT:
214         case LONGVARBINARY:
215           Object JavaDoc[] values = (Object JavaDoc[]) value;
216           params[i] = new BlobSaveMode(Integer.parseInt(""+values[0]),Integer.parseInt(""+values[1]),savelobFilePath);
217           break;
218         case CLOB:
219         case CHARACTERLARGEOBJECT:
220         case CHARLARGEOBJECT:
221         case LONGVARCHAR:
222           Object JavaDoc[] values1 = (Object JavaDoc[]) value;
223           params[i] = new ClobSaveMode(Integer.parseInt(""+values1[0]),Integer.parseInt(""+values1[1]),savelobFilePath);
224           break;
225         case BIT:
226         case BITVARYING:
227         case VARBINARY:
228         case BINARY:
229           params[i] = (""+value).getBytes();
230           break;
231         case MODULE:
232         case SUM:
233         case ARRAY:
234         case RECORD:
235         case RECORDSET:
236         case TIME_WITH_TIMEZONE:
237         case TIMESTAMP_WITH_TIMEZONE:
238         case REF:
239         case STRUCT:
240           throw new DException("DSE514",
241                                new Object JavaDoc[] {StaticClass.
242                                getDataTypeName(dataType)});
243       }
244     }
245     return params;
246   }
247
248   private _Connection getConnection(Object JavaDoc sessionId) throws SAXException {
249     _Connection connection = (_Connection) connectionIdMap.get(sessionId);
250     if (connection != null)
251       return connection;
252     try {
253       connection = serverSystem.getConnection(newDBName, properties);
254     }
255     catch (DException ex) {
256       throw new SAXException(ex);
257     }
258     connectionIdMap.put(sessionId, connection);
259     return connection;
260   }
261
262   private _Connection startConnection(Object JavaDoc sessionId) throws SAXException {
263     try {
264       properties = new Properties();
265       properties.put("user",userName);
266       properties.put("password",password);
267       properties.put("create","true");
268       connection = serverSystem.getConnection(newDBName, properties);
269       connectionIdMap.put(sessionId, connection);
270     }
271     catch (DException ex) {
272       throw new SAXException(ex);
273     }
274     return connection;
275   }
276 }
277
Popular Tags