KickJava   Java API By Example, From Geeks To Geeks.

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


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 ReadOnlyConnection extends Connection implements _Connection {
20
21   public ReadOnlyConnection() throws DException {
22   }
23     public ReadOnlyConnection( 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           throw new DException("DSE5558", (Object JavaDoc[])null);
76        }
77        else
78          return getPreparedStatement(parsedQuery, query, type);
79
80      }
81
82  public _PreparedStatement getPreparedStatement(Object JavaDoc parsedQuery,String JavaDoc query,int type) throws DException{
83     if( parsedQuery instanceof queryexpression ){
84         queryexpression qurexp = (queryexpression)parsedQuery;
85         ServerSessionWrapper sersewr = new ServerSessionWrapper(this);
86         if(type == IteratorConstants.UPDATABLE)
87           if(!qurexp.isSimpleQuery(sersewr))
88             type = IteratorConstants.NONSCROLLABLE;
89          sersewr.setType(type);
90          _Executer executer = (_Executer) qurexp.run( sersewr );
91          ParameterMetaData parameterMetaData = new ParameterMetaData(query, qurexp.getParameterInfo());
92          Object JavaDoc[] parameters = qurexp.getParameters(this);
93         PreparedStatement preparedStatment = new PreparedStatement(executer,
94                                                    parameters == null
95                                                    ? 0 : parameters.length,parameterMetaData,query, verboseUser, this);
96         preparedStatment.setQueryType(PreparedStatement.queryexpression);
97         return preparedStatment;
98      }
99      if( parsedQuery instanceof SQLdatastatement ){
100           throw new DException("DSE5558", (Object JavaDoc[])null);
101
102      }
103      if(parsedQuery instanceof SQLschemastatement ){
104           throw new DException("DSE5558", (Object JavaDoc[])null);
105      }
106      if( parsedQuery instanceof SQLtransactionstatement ){
107          throw new DException("DSE5558", (Object JavaDoc[])null);
108
109      }
110      if( parsedQuery instanceof SQLsessionstatement ){
111          NonPreparedStatement nps = new NonPreparedStatement( this, (StatementExecuter)parsedQuery, verboseUser);
112          nps.setQueryType(PreparedStatement.SQLsessionstatement);
113          return nps;
114      }
115      if( parsedQuery instanceof SQLcontrolstatement ){
116          if( ((String JavaDoc)getUserSession().getTransactionAccessMode()).equalsIgnoreCase("Read Only"))
117              throw new DException("DSE5558", (Object JavaDoc[])null);
118
119          _StatementExecutionContext sec = getStatementExecutionContext();
120          SQLcontrolstatement sqlcontrolstatement = (SQLcontrolstatement)parsedQuery;
121          Object JavaDoc[] parameters = sqlcontrolstatement.getParameters(this);
122          _Executer executer = (_Executer) sqlcontrolstatement.run( sec );
123          ParameterMetaData pmd = new ParameterMetaData(query,sqlcontrolstatement.getParameterInfo());
124          PreparedStatement preparedStatment = new PreparedStatement(executer,
125                                                 parameters == null ? 0: parameters.length ,pmd,query, verboseUser, this);
126          preparedStatment.setQueryType(PreparedStatement.callstatement);
127          return preparedStatment;
128
129      }
130    throw new DException("DSE565",new Object JavaDoc[]{"Query"});
131  }
132
133
134
135 /*
136
137 */

138     public Object JavaDoc[] executeBatch(String JavaDoc query) throws DException{
139
140       Object JavaDoc[] parsedQuery = null;
141       try {
142         parsedQuery = (Object JavaDoc [])Parser.parseBatch(query);
143       }
144       catch (DException ex) {
145         PrintHandler.print(query, verboseUser, ex);
146         throw ex;
147       }
148       Object JavaDoc[] result = new Object JavaDoc[parsedQuery.length];
149       for (int i = 0; i < result.length; i++) {
150         PrintHandler.print(" " + parsedQuery[i].toString());
151          if( parsedQuery[i] instanceof insertstatement){
152               throw new DException("DSE5558", (Object JavaDoc[])null);
153          }
154          else if( parsedQuery[i] instanceof updatestatementsearched){
155               throw new DException("DSE5558", (Object JavaDoc[])null);
156
157          }
158          else if(parsedQuery[i] instanceof deletestatementsearched){
159               throw new DException("DSE5558", (Object JavaDoc[])null);
160          }
161          else if(parsedQuery[i] instanceof queryexpression){
162             queryexpression qs = (queryexpression) parsedQuery[i];
163             qs.checkSemantic( this,true );
164             ParameterInfo[] parameterInfo = qs.getParameterInfo();
165             if( parameterInfo != null && parameterInfo.length > 0 ){
166                ParameterMetaData parameterMetaData = new ParameterMetaData(query, parameterInfo);
167                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.SELECT, parameterMetaData );
168                result[i] = qsd;
169             }
170             else
171             {
172                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.SELECT, null );
173                result[i] = qsd;
174             }
175          }
176          else if(parsedQuery[i] instanceof SQLcontrolstatement){
177             SQLcontrolstatement cs = (SQLcontrolstatement) parsedQuery[i];
178             if(!(cs instanceof callstatement)){
179                throw new DException("DSE531", null);
180             }
181             _StatementExecutionContext sec = getStatementExecutionContext();
182             cs.run(sec);
183             ParameterInfo[] parameterInfo = cs.getParameterInfo();
184             if( parameterInfo != null && parameterInfo.length > 0 ){
185                ParameterMetaData parameterMetaData = new ParameterMetaData(query, parameterInfo);
186                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.CALLSTATEMENT, parameterMetaData );
187                result[i] = qsd;
188             }
189             else
190             {
191                QueryInfo qsd = new QueryInfo(parsedQuery[i].toString(), QueryInfo.CALLSTATEMENT, null );
192                result[i] = qsd;
193             }
194          }
195          else{
196              if( parsedQuery[i] instanceof SQLsessionstatement ){
197                  _StatementExecutionContext sec = getStatementExecutionContext();
198                  ((SQLsessionstatement)parsedQuery[i]).run( sec );
199              }else if (parsedQuery[i] instanceof SQLschemastatement ){
200                   throw new DException("DSE5558", (Object JavaDoc[])null);
201              }
202              else if(parsedQuery[i] instanceof SQLdatastatement) {
203                throw new DException("DSE8090",null);
204              }
205              else if(parsedQuery[i] instanceof declarecursor) {
206                 declarecursor ds = (declarecursor) parsedQuery[i];
207                 _StatementExecutionContext sec = getStatementExecutionContext();
208                 ds.run( sec );
209              }
210              else
211                ( (StatementExecuter) parsedQuery[i]).run(this);
212              result[i] = new QueryInfo(parsedQuery[i].toString(), QueryInfo.OTHERS, null);
213          }
214       }
215       return result;
216     }
217
218     public _ServerSession getServerSession() {
219        return this;
220     }
221 /*
222     public _Connection getChildConnection() throws DException{
223         String c_databaseURL = super.databaseURL;
224         Connection connection = new Connection( super.databaseURL, super.userSession.getChildUserSession(), super.serverSystem );
225         connection.setModuleSchema(this.getModuleSchema());
226         connection.setModuleCatalog(this.getModuleCatalog());
227         connection.setCurrentSchema(this.getCurrentSchema());
228         connection.setCurrentCatalog(this.getCurrentCatalog());
229         connection.commit = this.commit;
230         connection.connectionStatus = this.connectionStatus;
231         connection.autoCommit = this.autoCommit;
232         return connection;
233     }
234 */

235 }
236
Popular Tags