KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datadictionarysystem > information > DatabaseInformation


1 package com.daffodilwoods.daffodildb.server.datadictionarysystem.information;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
7 import com.daffodilwoods.daffodildb.server.serversystem.*;
8 import com.daffodilwoods.daffodildb.server.sql99.*;
9 import com.daffodilwoods.daffodildb.server.sql99.common.*;
10 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*;
11 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
12 import com.daffodilwoods.database.general.*;
13 import com.daffodilwoods.database.resource.*;
14
15 public class DatabaseInformation implements _DatabaseInformation, Datatype {
16    _User user;
17    String JavaDoc databaseName;
18    _DataDictionary dataDictionary;
19    _ServerSession connection;
20    ArrayList tablesList;
21    ArrayList proceduresList;
22    ArrayList rolesList;
23    ArrayList viewsList;
24    ArrayList sessionNamesList;
25    ArrayList usersList;
26
27    /*static HashMap hashMap;
28        public static HashMap getDataTypeInfoMap() {
29       if(hashMap == null){
30          hashMap = new HashMap();
31          setDataTypeInfo();
32       }
33       return hashMap;
34        }
35        public static void setDataTypeInfo() {
36       hashMap.put("character", new DataTypeProperties(true,10 , false ,null , 4192 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
37       hashMap.put("char" , new DataTypeProperties(true,10 , false , null ,4192 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
38       hashMap.put("character varying" , new DataTypeProperties(true,10, false , null ,4192 ,1 , true ,Integer.MIN_VALUE , Integer.MIN_VALUE));
39       hashMap.put("char varying" , new DataTypeProperties(true,10 , false , null ,4192 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE)) ;
40       hashMap.put("varchar" , new DataTypeProperties(true,10 , false , null ,4192 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE)) ;
41       hashMap.put("character large object" , new DataTypeProperties(false,10 , false , null ,1073741823 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
42       hashMap.put("char large object" , new DataTypeProperties(false,10 , false , null ,1073741823 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
43       hashMap.put("clob" , new DataTypeProperties(false,10 , false , null ,1073741823 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
44       hashMap.put("blob" , new DataTypeProperties(false,10 , false , null ,1073741823 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
45       hashMap.put("binary large object" , new DataTypeProperties(false,10 , false , null ,1073741823 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
46       hashMap.put("bit", new DataTypeProperties(true,10 , false, null , 4192 ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
47       hashMap.put("bit varying", new DataTypeProperties(true,10 , false, null , 4192 , 1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
48       hashMap.put("numeric", new DataTypeProperties(true,28 , false , null ,Datatype.BIGDECIMAL_PRECISION ,1, true , Integer.MIN_VALUE, Integer.MIN_VALUE));
49       hashMap.put("decimal",new DataTypeProperties(true,28 , false , null ,Datatype.BIGDECIMAL_PRECISION ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
50       hashMap.put("dec",new DataTypeProperties(true,28 , false , null ,Datatype.BIGDECIMAL_PRECISION ,1 , true , Integer.MIN_VALUE , Integer.MIN_VALUE));
51       hashMap.put("int" , new DataTypeProperties(true,Datatype.INTSIZE , true , null ,Integer.MIN_VALUE, Integer.MIN_VALUE , true , Datatype.INT_PRECISION , 0 ));
52       hashMap.put("integer" , new DataTypeProperties(true,Datatype.INTSIZE , true , null ,Integer.MIN_VALUE, Integer.MIN_VALUE , true , Datatype.INT_PRECISION , 0) );
53       hashMap.put("smallint" ,new DataTypeProperties(true,Datatype.SHORTSIZE , true , null ,Integer.MIN_VALUE, Integer.MIN_VALUE , true , Datatype.INT_PRECISION , 0) );
54       hashMap.put("float" , new DataTypeProperties(true,Datatype.FLOATSIZE , false , null , Datatype.FLOAT_PRECISION, 1, true , Datatype.FLOAT_PRECISION , 0 ));
55       hashMap.put("real" , new DataTypeProperties(true,Datatype.REALSIZE , true , null ,Integer.MIN_VALUE , Integer.MIN_VALUE , true , Datatype.REAL_PRECISION , 0));
56       hashMap.put("double precision" , new DataTypeProperties(true,Datatype.DOUBLESIZE , true ,(Object) null ,Integer.MIN_VALUE , Integer.MIN_VALUE , true , Datatype.DOUBLEPRECISION , 0));
57       hashMap.put("boolean" , new DataTypeProperties(true,Datatype.BOOLEANSIZE , true , null , Integer.MIN_VALUE , Integer.MIN_VALUE , true , Datatype.BOOLEAN_PRECISION , 0 ) );
58       hashMap.put("date" , new DataTypeProperties(true,Datatype.DATESIZE , true , null , Integer.MIN_VALUE , Integer.MIN_VALUE , true , 19 , 0) );
59       hashMap.put("time" , new DataTypeProperties(true,Datatype.TIMESIZE , true , null , Integer.MIN_VALUE ,Integer.MIN_VALUE , true, 19 , 0 ));
60       hashMap.put("timestamp" , new DataTypeProperties(true,Datatype.TIMESTAMPSIZE , true, null , Integer.MIN_VALUE ,Integer.MIN_VALUE , true ,23, 0 ));
61        }*/

62
63    public DataTypeProperties getTypeInfo(String JavaDoc key) {
64       return (DataTypeProperties) DatatypeInfoMap.getDataTypeInfoMap().get(key);
65    }
66
67    static Object JavaDoc[][] typeInfo = new Object JavaDoc[][] {
68        {"character", null, null, null, new Integer JavaDoc(4192), new Integer JavaDoc(0), Boolean.TRUE}
69        , {"char", null, null, null, new Integer JavaDoc(4192), new Integer JavaDoc(0), Boolean.TRUE}
70        , {"character varying", null, null, null, new Integer JavaDoc(4192), new Integer JavaDoc(0), Boolean.TRUE}
71        , {"char varying", null, null, null, new Integer JavaDoc(4192), new Integer JavaDoc(0), Boolean.TRUE}
72        , {"varchar", null, null, null, new Integer JavaDoc(4192), new Integer JavaDoc(0), Boolean.TRUE}
73        ,
74
75        {"character large object", null, null, null, new Integer JavaDoc(1073741823), new Integer JavaDoc(0), Boolean.TRUE}
76        , {"char large object", null, null, null, new Integer JavaDoc(1073741823), new Integer JavaDoc(0), Boolean.TRUE}
77        , {"clob", null, null, null, new Integer JavaDoc(1073741823), new Integer JavaDoc(0), Boolean.TRUE}
78        ,
79
80        {"blob", null, null, null, new Integer JavaDoc(1073741823), new Integer JavaDoc(0), Boolean.TRUE}
81        , {"binary large object", null, null, null, new Integer JavaDoc(1073741823), new Integer JavaDoc(0), Boolean.TRUE}
82        ,
83
84        {"bit", null, null, null, new Integer JavaDoc(1073741823), new Integer JavaDoc(0), Boolean.TRUE}
85        , {"bit varying", null, null, null, new Integer JavaDoc(4192), new Integer JavaDoc(0), Boolean.TRUE}
86        ,
87
88        {"numeric", null, null, null, new Integer JavaDoc(28), new Integer JavaDoc(0), Boolean.TRUE}
89        , {"decimal", null, null, null, new Integer JavaDoc(28), new Integer JavaDoc(0), Boolean.TRUE}
90        , {"dec", null, null, null, new Integer JavaDoc(28), new Integer JavaDoc(0), Boolean.TRUE}
91        ,
92
93        {"int", new Integer JavaDoc(Integer.MIN_VALUE), new Integer JavaDoc(Integer.MAX_VALUE), null, new Integer JavaDoc(10), new Integer JavaDoc(0), Boolean.TRUE}
94        , {"integer", new Integer JavaDoc(Integer.MIN_VALUE), new Integer JavaDoc(Integer.MAX_VALUE), null, new Integer JavaDoc(10), new Integer JavaDoc(0), Boolean.TRUE}
95        , // new Short("4"),new Integer(10),null,null,null,new Short("1"),Boolean.FALSE,new Short("2"),Boolean.FALSE,Boolean.FALSE,Boolean.FALSE,null,new Short("0"),new Short("0"),new Integer(4),null,new Integer(10)},
96

97        {"smallint", new Short JavaDoc(Short.MIN_VALUE), new Short JavaDoc(Short.MAX_VALUE), null, new Integer JavaDoc(5), new Integer JavaDoc(0), Boolean.TRUE}
98        ,
99
100        {"float", new Double JavaDoc(Double.MIN_VALUE), new Double JavaDoc(Double.MAX_VALUE), null, new Integer JavaDoc(15), new Integer JavaDoc(0), Boolean.TRUE}
101        , {"real", new Float JavaDoc(Float.MIN_VALUE), new Float JavaDoc(Float.MAX_VALUE), null, new Integer JavaDoc(7), new Integer JavaDoc(0), Boolean.TRUE}
102        , {"double precision", new Double JavaDoc(Double.MIN_VALUE), new Double JavaDoc(Double.MAX_VALUE), null, new Integer JavaDoc(15), new Integer JavaDoc(0), Boolean.TRUE}
103        ,
104
105        {"boolean", null, null, Boolean.FALSE, null, null, Boolean.TRUE}
106        ,
107
108        {"date", null, null, null, new Integer JavaDoc(19), new Integer JavaDoc(0), Boolean.TRUE}
109        , {"time", null, null, null, new Integer JavaDoc(19), new Integer JavaDoc(0), Boolean.TRUE}
110        , {"timeStamp", null, null, null, new Integer JavaDoc(23), new Integer JavaDoc(0), Boolean.TRUE}
111        ,
112    };
113
114    public DatabaseInformation(_User user, String JavaDoc databaseName, _DataDictionary dataDictionary) {
115       this.user = user;
116       this.databaseName = databaseName;
117       this.dataDictionary = dataDictionary;
118       /**
119        * make a connection object to execute query;
120        * use the given databaseName
121        *
122        ** */

123       try {
124          Properties prop = new Properties();
125          prop.setProperty("isvisible", "false");
126          prop.setProperty(_Server.USER, user.getUserName());
127          this.connection = ( (Connection) user.getConnection(databaseName, prop)).getServerSession();
128       } catch (DException ex) {
129       }
130    }
131
132    /**
133     * execute query to get all tables in the database;
134     *
135     * use privilege characteristics to check whether the user has table privilege
136     * cache the tables returned
137     * */

138
139    public ArrayList getAllTables() {
140       if (tablesList == null) {
141          _SelectQueryIterator iterator = null;
142          try {
143             String JavaDoc query = "select table_catalog,table_schema,table_name from " + SystemTables.tables_TableName
144                 + " where table_type = '" + SqlSchemaConstants.baseTableType + "' or table_type = '" + SqlKeywords.TABLE + "' ";
145             iterator = getIterator(query, (Object JavaDoc[])null);
146             tablesList = new ArrayList();
147             Object JavaDoc[] record = null;
148             if (iterator.first()) {
149                _PrivilegeCharacteristics privilegeCharacteristics = dataDictionary.getPrivilegeCharacteristics(user.getUserName(), _PrivilegeCharacteristics.AUTHORIZATION_ROLE);
150                do {
151                   try {
152                      record = (Object JavaDoc[]) iterator.getObject();
153                      QualifiedIdentifier identifier = new QualifiedIdentifier( (String JavaDoc) record[0], (String JavaDoc) record[1], (String JavaDoc) record[2]);
154                      _PrivilegeTable privilageTable = privilegeCharacteristics.getPrivilegeTable(identifier);
155                      if (privilageTable.hasTablePrivileges(privilageTable.SELECT) ||
156                          privilageTable.hasTablePrivileges(privilageTable.DELETE) ||
157                          privilageTable.hasTablePrivileges(privilageTable.INSERT) ||
158                          privilageTable.hasTablePrivileges(privilageTable.UPDATE) ||
159                          privilageTable.hasTablePrivileges(privilageTable.TRIGGER) ||
160                          privilageTable.hasTablePrivileges(privilageTable.REFERENCES))
161                         tablesList.add(identifier);
162                   } catch (DatabaseException e) {
163                      e.printStackTrace();
164                   }
165                } while (iterator.next());
166             }
167          } catch (DException ex) {
168             throw new RuntimeException JavaDoc(ex.getMessage());
169          }
170       }
171       return tablesList;
172    }
173
174    /**
175     * execute query to get all views
176     * use privilege characteristics to check whether the user has privileges
177     * cache the views returned
178     */

179    public ArrayList getAllViews() {
180       try {
181          if (viewsList == null) {
182             String JavaDoc selectQuery = "Select table_catalog,table_schema,table_name from " + SystemTables.views_TableName;
183             _SelectQueryIterator iterator = getIterator(selectQuery, (Object JavaDoc[])null);
184             viewsList = getIdentifierListForThreeColumnRetriever(iterator, true);
185          }
186          return viewsList;
187       } catch (DException ex) {
188          throw new RuntimeException JavaDoc(ex.getMessage());
189       }
190    }
191
192    /**
193     * execute query on the role table to get all the roles;
194     *
195     * */

196    public ArrayList getAllRoles() {
197       try {
198          if (rolesList != null)
199             return rolesList;
200          String JavaDoc selectQuery = "Select role_name from " + SystemTables.roles_TableName;
201          _SelectQueryIterator iterator = getIterator(selectQuery, (Object JavaDoc[])null);
202          rolesList = getIdentifierListForOneColumnRetriever(iterator);
203          return rolesList;
204       } catch (DException ex) {
205          throw new RuntimeException JavaDoc(ex.getMessage());
206       }
207    }
208
209    public ArrayList getAllUsers() {
210       try {
211          if (usersList != null)
212             return usersList;
213          String JavaDoc selectQuery = "Select user_Name,User_password from " + SystemTables.users_TableName;
214          _SelectQueryIterator iterator = getIterator(selectQuery, (Object JavaDoc[])null);
215          usersList = new ArrayList(5);
216          if (iterator.first()) {
217             do {
218                Object JavaDoc[] obj = (Object JavaDoc[]) iterator.getObject();
219                usersList.add(new UserInformation( (String JavaDoc) obj[0], (String JavaDoc) obj[1]));
220             } while (iterator.next());
221          }
222          return usersList;
223       } catch (DException ex) {
224          throw new RuntimeException JavaDoc(ex.getMessage());
225       }
226    }
227
228    /**
229     * execute query to get procedure from the routine table;
230     *
231     * */

232    public ArrayList getAllProcedures() {
233       try {
234          if (proceduresList != null)
235             return proceduresList;
236          String JavaDoc selectQuery = "Select specific_catalog,specific_schema,specific_name from " + SystemTables.routines_TableName;
237          _SelectQueryIterator iterator = getIterator(selectQuery, (Object JavaDoc[])null);
238          proceduresList = getIdentifierListForThreeColumnRetriever(iterator, false);
239          return proceduresList;
240       } catch (DException ex) {
241          throw new RuntimeException JavaDoc(ex.getMessage());
242       }
243    }
244
245    /**
246     * assume method in the user class to get all sessions;
247     *
248     * */

249    public ArrayList getAllSessions() {
250       try {
251          if (sessionNamesList == null) {
252             ArrayList sessionsList = user.getAllSessions(databaseName);
253             if (sessionsList == null)
254                return null;
255             int len = sessionsList.size();
256             sessionNamesList = new ArrayList();
257             for (int i = 0; i < len; i++)
258                sessionNamesList.add( ( (_ServerSession) sessionsList.get(i)).getSessionConstant());
259          }
260          return sessionNamesList;
261       } catch (DException ex) {
262          throw new RuntimeException JavaDoc(ex.getMessage());
263       }
264    }
265
266    public _TableInformation getTableInformation(QualifiedIdentifier tableName) {
267       return (_TableInformation)new TableInformation(dataDictionary, tableName);
268    }
269
270    public _RoleInformation getRoleInformation(String JavaDoc roleName) {
271       try {
272          _SelectQueryIterator iterator = null;
273          RoleInformation roleInformation = new RoleInformation();
274          ArrayList objectsAndRights = new ArrayList();
275          try {
276             String JavaDoc query = "select table_catalog,table_schema,table_name from " + SystemTables.tables_TableName;
277             iterator = getIterator(query, (Object JavaDoc[])null);
278             Object JavaDoc[] record = null;
279             if (iterator.first()) {
280                _PrivilegeCharacteristics privilegeCharacteristics = dataDictionary.getPrivilegeCharacteristics(user.getUserName(), _PrivilegeCharacteristics.AUTHORIZATION_ROLE);
281                do {
282                   try {
283                      record = (Object JavaDoc[]) iterator.getObject();
284                      QualifiedIdentifier identifier = new QualifiedIdentifier( (String JavaDoc) record[0], (String JavaDoc) record[1], (String JavaDoc) record[2]);
285                      _PrivilegeTable privilageTable = privilegeCharacteristics.getPrivilegeTable(identifier);
286                      boolean[] privileges = new boolean[] {
287                          privilageTable.hasTablePrivileges(privilageTable.SELECT),
288                          privilageTable.hasTablePrivileges(privilageTable.INSERT),
289                          privilageTable.hasTablePrivileges(privilageTable.UPDATE),
290                          privilageTable.hasTablePrivileges(privilageTable.DELETE),
291                          privilageTable.hasTablePrivileges(privilageTable.EXECUTE),
292                          privilageTable.hasTablePrivileges(privilageTable.TRIGGER),
293                          privilageTable.hasTablePrivileges(privilageTable.REFERENCES)
294                      };
295                      objectsAndRights.add(new Object JavaDoc[] {identifier.getName(), privileges});
296                   } catch (DException ex) {
297                      throw new RuntimeException JavaDoc(ex.getMessage());
298                   }
299
300                } while (iterator.next());
301             }
302             roleInformation.grantor = getGrantor(roleName);
303          } catch (RetrievalException e) {}
304          roleInformation.objectsAndRights = objectsAndRights;
305          roleInformation.name = roleName;
306          return roleInformation;
307       } catch (DException ex) {
308          throw new RuntimeException JavaDoc(ex.getMessage());
309       }
310    }
311
312    public _UserInformation getUsersInformation(String JavaDoc userName) {
313       try {
314          String JavaDoc query = "select user_password from " + SystemTables.users_TableName + " where user_Name = '" + userName + "'";
315          _SelectQueryIterator iterator = getIterator(query, (Object JavaDoc[])null);
316          if (iterator.first()) {
317             String JavaDoc password = (String JavaDoc) ( (Object JavaDoc[]) iterator.getObject())[0];
318             return new UserInformation(userName, password);
319          }
320          throw new RuntimeException JavaDoc("Invalid user name " + userName);
321       } catch (DException ex) {
322          throw new RuntimeException JavaDoc(ex.getMessage());
323       }
324    }
325
326    private String JavaDoc getGrantor(String JavaDoc roleName) {
327       try {
328          String JavaDoc roleAuthorizationQuery = "select grantor from " + SystemTables.role_authorization_TableName + " where role_name = ? ";
329          _SelectQueryIterator iterator = getIterator(roleAuthorizationQuery, new Object JavaDoc[] {roleName});
330          Object JavaDoc[] record = null;
331          iterator.first();
332          record = (Object JavaDoc[]) iterator.getObject();
333          return (String JavaDoc) record[0];
334       } catch (DException ex) {
335          throw new RuntimeException JavaDoc(ex.getMessage());
336       }
337    }
338
339    public _ViewInformation getViewInformation(QualifiedIdentifier viewName) {
340       try {
341          _ViewCharacteristics viewCharacteristics = dataDictionary.getViewCharacteristics(viewName);
342          ViewInformation viewInformation = new ViewInformation();
343          viewInformation.catalog = viewName.catalog;
344          viewInformation.schema = viewName.schema;
345          viewInformation.name = viewName.name;
346          viewInformation.viewQuery = viewCharacteristics.getViewQuery();
347          viewInformation.is_updatable = viewCharacteristics.isUpdatable();
348          viewInformation.is_insertable_into = viewCharacteristics.isInsertableInto();
349          String JavaDoc[] viewColumns = viewCharacteristics.getViewColumns();
350          ArrayList columns = new ArrayList();
351          for (int i = 0; i < viewColumns.length; i++)
352             columns.add(viewColumns[i]);
353          viewInformation.columns = columns;
354          return viewInformation;
355       } catch (DException ex) {
356          throw new RuntimeException JavaDoc(ex.getMessage());
357       }
358    }
359
360    public _SessionInformation getSessionInformation(Object JavaDoc sessionName) {
361       try {
362          ArrayList allSessions = user.getAllSessions(databaseName);
363          if (allSessions == null)
364             return null;
365          for (int i = 0, size = allSessions.size(); i < size; i++) {
366             _ServerSession serverSession = (_ServerSession) allSessions.get(i);
367             Object JavaDoc session = serverSession.getSessionConstant();
368             /** @todo to uncomment */
369             if (session.equals(sessionName))
370                return new SessionInformation(sessionName.toString(), serverSession.getCurrentUser(), serverSession.getIsolationLevel());
371          }
372          return null;
373       } catch (DException ex) {
374          throw new RuntimeException JavaDoc(ex.getMessage());
375       }
376    }
377
378    public _ProcedureInformation getProcedureInformation(QualifiedIdentifier procedureName) {
379       return new ProcedureInformation(connection, procedureName);
380    }
381
382    /***
383     * make 2-d array and populate with the required information;
384     **/

385    public ArrayList getAllDatabaseTypes() {
386       ArrayList typesList = new ArrayList();
387       int len = typeInfo.length;
388       for (int i = 0; i < len; i++)
389          typesList.add(typeInfo[i]);
390       return typesList;
391    }
392
393    private ArrayList getIdentifierListForOneColumnRetriever(_SelectQueryIterator iterator) {
394       ArrayList identifierList = new ArrayList();
395       try {
396          Object JavaDoc[] record = null;
397          if (iterator.first()) {
398             do {
399                record = (Object JavaDoc[]) iterator.getObject();
400                identifierList.add(new QualifiedIdentifier(null, null, (String JavaDoc) record[0]));
401             } while (iterator.next());
402          }
403       } catch (DException ex) {
404          throw new RuntimeException JavaDoc(ex.getMessage());
405       }
406       return identifierList;
407    }
408
409    private ArrayList getIdentifierListForThreeColumnRetriever(_SelectQueryIterator iterator, boolean flag) {
410       ArrayList identifierList = new ArrayList();
411       try {
412          Object JavaDoc[] record = null;
413          _PrivilegeCharacteristics privilegeCharacteristics = dataDictionary.getPrivilegeCharacteristics(user.getUserName(), _PrivilegeCharacteristics.AUTHORIZATION_ROLE);
414          if (iterator.first()) {
415             do {
416                try {
417                   record = (Object JavaDoc[]) iterator.getObject();
418                   QualifiedIdentifier identifier = new QualifiedIdentifier( (String JavaDoc) record[0], (String JavaDoc) record[1], (String JavaDoc) record[2]);
419                   if (flag) {
420                      _PrivilegeTable privilageTable = privilegeCharacteristics.getPrivilegeTable(identifier);
421                      if (privilageTable.hasTablePrivileges(privilageTable.SELECT) ||
422                          privilageTable.hasTablePrivileges(privilageTable.DELETE) ||
423                          privilageTable.hasTablePrivileges(privilageTable.INSERT) ||
424                          privilageTable.hasTablePrivileges(privilageTable.UPDATE) ||
425                          privilageTable.hasTablePrivileges(privilageTable.TRIGGER) ||
426                          privilageTable.hasTablePrivileges(privilageTable.REFERENCES)) {
427                         identifierList.add(identifier);
428                      }
429                   } else {
430                      _PrivilegeTable privilageTable = privilegeCharacteristics.getRoutinePrivilegeTable();
431                      if (privilageTable.hasExecutionRights(identifier.catalog, identifier.schema, identifier.name))
432                         identifierList.add(identifier);
433                   }
434                } catch (DatabaseException e) {
435                   e.printStackTrace();
436                }
437             } while (iterator.next());
438          }
439       } catch (DException ex) {
440          throw new RuntimeException JavaDoc(ex.getMessage());
441       }
442       return identifierList;
443    }
444
445    private String JavaDoc[] breakTable(String JavaDoc identifier) {
446       String JavaDoc[] breakedTable = new String JavaDoc[3];
447       int table_name_index = identifier.lastIndexOf('.');
448       if (table_name_index == -1) {
449          breakedTable[2] = identifier;
450       } else {
451          breakedTable[2] = identifier.substring(table_name_index + 1);
452          int catalog_index = identifier.indexOf('.');
453          breakedTable[0] = identifier.substring(0, catalog_index);
454          breakedTable[1] = identifier.substring(catalog_index + 1, table_name_index);
455       }
456       return breakedTable;
457    }
458
459    public void refresh() {
460       tablesList = null;
461       viewsList = null;
462       rolesList = null;
463       proceduresList = null;
464       sessionNamesList = null;
465       usersList = null;
466    }
467
468    public void close() throws DException {
469       tablesList = null;
470       viewsList = null;
471       rolesList = null;
472       proceduresList = null;
473       sessionNamesList = null;
474       usersList = null;
475       connection.close();
476    }
477
478    public void refresh(int property) {
479       switch (property) {
480          case TABLES:
481             tablesList = null;
482             break;
483          case PROCEDURES:
484             proceduresList = null;
485             break;
486          case VIEWS:
487             viewsList = null;
488             break;
489          case ROLES:
490             rolesList = null;
491             break;
492          case SESSIONS:
493             sessionNamesList = null;
494             break;
495          case USERS:
496             usersList = null;
497       }
498    }
499
500    private _SelectQueryIterator getIterator(String JavaDoc query, Object JavaDoc[] parameters) throws DException {
501       if (parameters == null)
502          return (_SelectQueryIterator) connection.getGlobalSession().executeQuery(query, 0);
503       _Executer executer = (_Executer) connection.getGlobalSession().executeQueryParameterised(query, 0);
504       return (_SelectQueryIterator) executer.execute(parameters);
505    }
506 }
507
Popular Tags