KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.daffodilwoods.daffodildb.server.serversystem;
2
3 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
4 import com.daffodilwoods.daffodildb.server.sessionsystem.*;
5 import com.daffodilwoods.daffodildb.server.sql99.*;
6 import com.daffodilwoods.daffodildb.server.sql99.common.*;
7 import com.daffodilwoods.daffodildb.server.sql99.dcl.sqlcontrolstatement.*;
8 import com.daffodilwoods.daffodildb.server.sql99.dcl.sqlsessionstatement.*;
9 import com.daffodilwoods.daffodildb.server.sql99.dcl.sqltransactionstatement.*;
10 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemamanipulation.*;
11 import com.daffodilwoods.daffodildb.server.sql99.dml.*;
12 import com.daffodilwoods.daffodildb.server.sql99.dml.declarecursor.*;
13 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*;
14 import com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents.*;
15 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.*;
16 import com.daffodilwoods.daffodildb.utils.parser.*;
17 import com.daffodilwoods.database.general.*;
18 import com.daffodilwoods.database.resource.*;
19 public class Connection extends ServerSession implements _Connection {
20
21   public Connection() throws DException {
22   }
23     public Connection( String JavaDoc databaseURL, _UserSession userSession,ServerSystem serverSystem) throws DException {
24       super(databaseURL, userSession, serverSystem);
25     }
26
27
28
29    public Object JavaDoc parseQuery(String JavaDoc query) throws DException {
30         return Parser.parseQuery( query );
31     }
32
33
34
35     public _PreparedStatement getPreparedStatement( String JavaDoc query ) throws DException{
36       return getPreparedStatement(query,getType() );
37     }
38
39
40    public _PreparedStatement getPreparedStatement( String JavaDoc query ,int type) throws DException{
41        long time = System.currentTimeMillis();
42        long time1 = -1;
43        try {
44          if (connectionStatus)
45            throw new DException("DSE279", null);
46          Object JavaDoc parsedQuery = Parser.parseQuery(query);
47          time1 = System.currentTimeMillis() - time;
48          return getPreparedStatement(parsedQuery, query, type);
49
50        }
51        catch (RuntimeException JavaDoc re) {
52          PrintHandler.print(query, verboseUser, re);
53          throw re;
54        }
55        catch (DException ex) {
56          PrintHandler.print(query, verboseUser, ex);
57          throw ex;
58        }
59        finally {
60          time = System.currentTimeMillis() - time;
61          if (time > 25)
62          ;//// Removed By Program ** System.out.println(Thread.currentThread() +
63
}
64      }
65
66      public _PreparedStatement getPreparedStatement(String JavaDoc query, int type,
67                                                     int autoGeneratedType,
68                                                     Object JavaDoc autoGenetatedValues) throws
69          DException {
70
71        if (connectionStatus)
72          throw new DException("DSE279", null);
73        Object JavaDoc parsedQuery = Parser.parseQuery(query);
74        if (parsedQuery instanceof SQLdatastatement) {
75          if ( ( (String JavaDoc) getUserSession().getTransactionAccessMode()).
76              equalsIgnoreCase("Read Only"))
77            throw new DException("DSE1184", (Object JavaDoc[])null);
78          _StatementExecutionContext sec = getStatementExecutionContext();
79          SQLdatastatement sqldatastatement = (SQLdatastatement) parsedQuery;
80          Object JavaDoc[] parameters = sqldatastatement.getParameters(this);
81          sec.setAutoGeneratedInfo(autoGeneratedType, autoGenetatedValues);
82          _Executer executer = (_Executer) sqldatastatement.run(sec);
83          ParameterMetaData parameterMetaData = new ParameterMetaData(query, ((SQLdatachangestatement) parsedQuery).getParameterInfo());
84          PreparedStatement preparedStatment = new PreparedStatement(executer,
85              parameters == null ? 0 : parameters.length, parameterMetaData, query, verboseUser,this);
86          preparedStatment.setQueryType(PreparedStatement.SQLdatastatement);
87          return preparedStatment;
88        }
89        else
90          return getPreparedStatement(parsedQuery, query, type);
91
92      }
93
94  public _PreparedStatement getPreparedStatement(Object JavaDoc parsedQuery,String JavaDoc query,int type) throws DException{
95     if( parsedQuery instanceof queryexpression ){
96         queryexpression qurexp = (queryexpression)parsedQuery;
97         ServerSessionWrapper sersewr = new ServerSessionWrapper(this);
98         if(type == IteratorConstants.UPDATABLE)
99           if(!qurexp.isSimpleQuery(sersewr))
100             type = IteratorConstants.NONSCROLLABLE;
101          sersewr.setType(type);
102          _Executer executer = (_Executer) qurexp.run( sersewr );
103          ParameterMetaData parameterMetaData = new ParameterMetaData(query, qurexp.getParameterInfo());
104          Object JavaDoc[] parameters = qurexp.getParameters(this);
105         PreparedStatement preparedStatment = new PreparedStatement(executer,
106                                                    parameters == null
107                                                    ? 0 : parameters.length,parameterMetaData,query, verboseUser,this);
108         preparedStatment.setQueryType(PreparedStatement.queryexpression);
109         return preparedStatment;
110      }
111      if( parsedQuery instanceof SQLdatastatement ){
112          if( ((String JavaDoc)getUserSession().getTransactionAccessMode()).equalsIgnoreCase("Read Only"))
113              throw new DException("DSE1184", (Object JavaDoc[])null);
114
115          _StatementExecutionContext sec = getStatementExecutionContext();
116          SQLdatastatement sqldatastatement = (SQLdatastatement)parsedQuery;
117          Object JavaDoc[] parameters = sqldatastatement.getParameters(this);
118          _Executer executer = (_Executer) sqldatastatement.run( sec );
119          ParameterMetaData parameterMetaData = new ParameterMetaData(query, ((SQLdatachangestatement) parsedQuery).getParameterInfo());
120          PreparedStatement preparedStatment = new PreparedStatement(executer,
121                                                 parameters == null ? 0: parameters.length ,parameterMetaData ,query, verboseUser,this);
122          preparedStatment.setQueryType(PreparedStatement.SQLdatastatement);
123          return preparedStatment;
124
125      }
126      if(parsedQuery instanceof SQLschemastatement ){
127          if( ((String JavaDoc)getUserSession().getTransactionAccessMode()).equalsIgnoreCase("Read Only"))
128              throw new DException("DSE1184", (Object JavaDoc[])null);
129          NonPreparedStatement nps = new NonPreparedStatement(this, (StatementExecuter)parsedQuery, verboseUser);
130          nps.setQueryType(PreparedStatement.SQLschemastatement);
131          return nps;
132      }
133      if( parsedQuery instanceof SQLtransactionstatement ){
134          NonPreparedStatement nps = new NonPreparedStatement(this, (StatementExecuter)parsedQuery, verboseUser);
135          nps.setQueryType(PreparedStatement.SQLtransactionstatement);
136          return nps;
137
138      }
139      if( parsedQuery instanceof SQLsessionstatement ){
140          NonPreparedStatement nps = new NonPreparedStatement(this, (StatementExecuter)parsedQuery, verboseUser);
141          nps.setQueryType(PreparedStatement.SQLsessionstatement);
142          return nps;
143      }
144      if( parsedQuery instanceof SQLcontrolstatement ){
145
146          _StatementExecutionContext sec = getStatementExecutionContext();
147          SQLcontrolstatement sqlcontrolstatement = (SQLcontrolstatement)parsedQuery;
148          Object JavaDoc[] parameters = sqlcontrolstatement.getParameters(this);
149          _Executer executer = (_Executer) sqlcontrolstatement.run( sec );
150          ParameterMetaData pmd = new ParameterMetaData(query,sqlcontrolstatement.getParameterInfo());
151          PreparedStatement preparedStatment = new PreparedStatement(executer,
152                                                 parameters == null ? 0: parameters.length ,pmd,query, verboseUser,this);
153          preparedStatment.setQueryType(PreparedStatement.callstatement);
154          return preparedStatment;
155
156      }
157    throw new DException("DSE565",new Object JavaDoc[]{"Query"});
158  }
159
160
161
162 /*
163
164 */

165     public Object JavaDoc[] executeBatch(String JavaDoc query) throws DException{
166       Object JavaDoc[] parsedQuery = null;
167       try {
168         parsedQuery = (Object JavaDoc [])Parser.parseBatch(query);
169       }
170       catch (DException ex) {
171         PrintHandler.print(query, verboseUser, ex);
172         throw ex;
173       }
174       Object JavaDoc[] result = new Object JavaDoc[parsedQuery.length];
175       for (int i = 0; i < result.length; i++) {
176         PrintHandler.print(" " + parsedQuery[i].toString());
177          if( parsedQuery[i] instanceof insertstatement){
178             if(super.userSession.getTransactionAccessMode().equals("Read Only"))
179                throw new DException("DSE1184", (Object JavaDoc[])null);
180
181             insertstatement in = (insertstatement) parsedQuery[i];
182             _StatementExecutionContext sec = getStatementExecutionContext();
183             in.run( sec );
184             ParameterInfo[] parameterInfo = in.getParameterInfo();
185             if( parameterInfo != null && parameterInfo.length > 0){
186                ParameterMetaData parameterMetaData = new ParameterMetaData(query, parameterInfo);
187                QueryInfo qi = new QueryInfo(parsedQuery[i].toString(), QueryInfo.INSERT, parameterMetaData );
188                result[i] = qi;
189             }
190             else
191             {
192                QueryInfo qi = new QueryInfo(parsedQuery[i].toString(), QueryInfo.INSERT , null );
193                result[i] = qi;
194             }
195          }
196          else if( parsedQuery[i] instanceof updatestatementsearched){
197             if(super.userSession.getTransactionAccessMode().equals("Read Only"))
198                throw new DException("DSE1184", (Object JavaDoc[])null);
199             updatestatementsearched up = (updatestatementsearched) parsedQuery[i];
200             _StatementExecutionContext sec = getStatementExecutionContext();
201             up.run( sec );
202             ParameterInfo[] parameterInfo = up.getParameterInfo();
203             if( parameterInfo != null && parameterInfo.length > 0){
204                ParameterMetaData parameterMetaData = new ParameterMetaData(query, parameterInfo);
205                QueryInfo qu = new QueryInfo(parsedQuery[i].toString(), QueryInfo.UPDATE, parameterMetaData );
206                result[i] = qu;
207             }
208             else
209             {
210                QueryInfo qu = new QueryInfo(parsedQuery[i].toString(), QueryInfo.UPDATE, null );
211                result[i] = qu;
212             }
213
214          }
215          else if(parsedQuery[i] instanceof deletestatementsearched){
216             if(super.userSession.getTransactionAccessMode().equals("Read Only"))
217                throw new DException("DSE1184", (Object JavaDoc[])null);
218             deletestatementsearched ds = (deletestatementsearched) parsedQuery[i];
219             _StatementExecutionContext sec = getStatementExecutionContext();
220             ds.run( sec );
221             ParameterInfo[] parameterInfo = ds.getParameterInfo();
222             if( parameterInfo != null && parameterInfo.length > 0){
223                ParameterMetaData parameterMetaData = new ParameterMetaData(query, parameterInfo);
224                QueryInfo qd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.DELETE, parameterMetaData );
225                result[i] = qd;
226             }
227             else
228             {
229                QueryInfo qd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.DELETE, null );
230                result[i] = qd;
231             }
232          }
233          else if(parsedQuery[i] instanceof queryexpression){
234             queryexpression qs = (queryexpression) parsedQuery[i];
235             qs.checkSemantic( this,true );
236             ParameterInfo[] parameterInfo = qs.getParameterInfo();
237             if( parameterInfo != null && parameterInfo.length > 0 ){
238                ParameterMetaData parameterMetaData = new ParameterMetaData(query, parameterInfo);
239                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.SELECT, parameterMetaData );
240                result[i] = qsd;
241             }
242             else
243             {
244                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.SELECT, null );
245                result[i] = qsd;
246             }
247          }
248          else if(parsedQuery[i] instanceof SQLcontrolstatement){
249             SQLcontrolstatement cs = (SQLcontrolstatement) parsedQuery[i];
250             if(!(cs instanceof callstatement)){
251                throw new DException("DSE531", null);
252             }
253             _StatementExecutionContext sec = getStatementExecutionContext();
254             cs.checkSemantic(this);
255             ParameterInfo[] parameterInfo = cs.getParameterInfo();
256             if( parameterInfo != null && parameterInfo.length > 0 ){
257                ParameterMetaData parameterMetaData = new ParameterMetaData(query, parameterInfo);
258                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.CALLSTATEMENT, parameterMetaData );
259                result[i] = qsd;
260             }
261             else
262             {
263                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.CALLSTATEMENT, null );
264                result[i] = qsd;
265             }
266          }
267          else{
268              if( parsedQuery[i] instanceof SQLsessionstatement ){
269                  _StatementExecutionContext sec = getStatementExecutionContext();
270                  ((SQLsessionstatement)parsedQuery[i]).run( sec );
271              }else if (parsedQuery[i] instanceof SQLschemastatement ){
272                commit();
273                _ServerSession ss = getSystemServerSession();
274                _DataDictionary dd = getDataDictionary();
275                dd.lockDDL();
276               try {
277                 try {
278                   ( (StatementExecuter) parsedQuery[i]).run(this);
279                 }
280                 catch (DException ex) {
281                   dd.restoreGeneratedKeys();
282                   createIndexesList.clear();
283
284                   ss.rollback();
285                   throw ex;
286                 }
287
288                 if(!(parsedQuery[i] instanceof dropdatabasestatement)){
289                   ((ServerSession)ss).createIndexesList = createIndexesList;
290                   ss.commit();
291                   createIndexesList.clear();
292                 }
293               }
294               finally {
295                 dd.releaseDDL();
296               }
297              }
298              else if(parsedQuery[i] instanceof SQLdatastatement) {
299                throw new DException("DSE8090",null);
300              }
301              else if(parsedQuery[i] instanceof declarecursor) {
302                 throw new DException("DSE2053",null);
303              }
304              else
305                ( (StatementExecuter) parsedQuery[i]).run(this);
306              result[i] = new QueryInfo(parsedQuery[i].toString(), QueryInfo.OTHERS, null);
307          }
308       }
309       return result;
310     }
311
312     public _ServerSession getServerSession() {
313        return this;
314     }
315     public boolean isClosed() throws DException{
316        return connectionStatus;
317     }
318 /*
319     public _Connection getChildConnection() throws DException{
320         String c_databaseURL = super.databaseURL;
321         Connection connection = new Connection( super.databaseURL, super.userSession.getChildUserSession(), super.serverSystem );
322         connection.setModuleSchema(this.getModuleSchema());
323         connection.setModuleCatalog(this.getModuleCatalog());
324         connection.setCurrentSchema(this.getCurrentSchema());
325         connection.setCurrentCatalog(this.getCurrentCatalog());
326         connection.commit = this.commit;
327         connection.connectionStatus = this.connectionStatus;
328         connection.autoCommit = this.autoCommit;
329         return connection;
330     }
331 */

332 }
333
Popular Tags