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 sessionId; 21 private int queryMethod; 22 private int operationType; 23 24 private String queryorsavepointname; 25 private ArrayList paramsList; 26 private String savelobFilePath; 27 28 private String userName; 29 private String password; 30 private String newDBName; 31 32 public RestoreHandler(ServerSystem serverSystem0, String newDBName0, 33 String clobFilePath0) { 34 serverSystem = serverSystem0; 35 newDBName = newDBName0; 36 savelobFilePath = clobFilePath0; 37 connectionIdMap = new HashMap(); 38 } 39 40 public void setSessionId(Object 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 param) { 61 paramsList.add(param); 62 } 63 64 public void setQueryString(String query0) { 65 queryorsavepointname = query0; 66 } 67 68 public void setSavePointName(String queryorsavepointname0) { 69 queryorsavepointname = queryorsavepointname0; 70 } 71 72 public void setUserName(String user0) { 73 userName = user0; 74 } 75 76 public void setPassword(String password0) { 77 password = password0; 78 } 79 80 public void performOperation() throws DException,SAXException { 81 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 [] 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 [] getParameters(_ParameterMetaData pmd) throws DException { 153 int no = paramsList.size(); 154 Object [] params = new Object [no]; 155 for (int i = 0; i < no; i++) { 156 Object value = paramsList.get(i); 157 int dataType = pmd.getParameterDataType(i); 158 switch (dataType) { 159 case BYTE: 160 case TINYINT: 161 params[i] = new Byte (Byte.parseByte("" + value)); 162 break; 163 case SMALLINT: 164 case SHORT: 165 params[i] = new Short (Short.parseShort("" + value)); 166 break; 167 case INT: 168 case INTEGER: 169 params[i] = new Integer (Integer.parseInt("" + value)); 170 break; 171 case LONG: 172 case BIGINT: 173 params[i] = new Long (Long.parseLong("" + value)); 174 break; 175 case REAL: 176 params[i] = new Float (Float.parseFloat("" + value)); 177 break; 178 case FLOAT: 179 case DOUBLE: 180 case DOUBLEPRECISION: 181 params[i] = new Double (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 (java.sql.Time.parse("" + value)); 207 break; 208 case TIMESTAMP: 209 params[i] = new java.sql.Timestamp (java.sql.Timestamp.parse("" + 210 value)); 211 break; 212 case BLOB: 213 case BINARYLARGEOBJECT: 214 case LONGVARBINARY: 215 Object [] values = (Object []) 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 [] values1 = (Object []) 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 [] {StaticClass. 242 getDataTypeName(dataType)}); 243 } 244 } 245 return params; 246 } 247 248 private _Connection getConnection(Object 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 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 |