Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData Class Reference

List of all members.

Public Member Functions

 VirtualDatabaseDynamicMetaData (VirtualDatabase database)
java.sql.ResultSet getPrimaryKeys (String catalog, String schema, String table)
DriverResultSet getColumns (String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
Object getSchemas ()
DriverResultSet getTables (String catalog, String schemaPattern, String tableNamePattern, String[] types)
DriverResultSet getProcedures (String catalog, String schemaPattern, String procedureNamePattern)
DriverResultSet getCatalogs (ArrayList list)
DriverResultSet getTableTypes ()
DriverResultSet getTablePrivileges (String catalog, String schemaPattern, String tableNamePattern)
DriverResultSet getProcedureColumns (String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern)

Static Public Attributes

final int NULL_VALUE = -999

Detailed Description

Class that gathers the dynamic metadata for a virtual database, that means all the metadata subject to changes during the lifetime of the application.

Author:
Julie.Marguerite

Emmanuel Cecchet

Nicolas Modrzyk

Definition at line 51 of file VirtualDatabaseDynamicMetaData.java.


Constructor & Destructor Documentation

org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.VirtualDatabaseDynamicMetaData VirtualDatabase  database  ) 
 

Reference the database for this metadata. Do not fetch any data at this time

Parameters:
database to link this metadata to

Definition at line 69 of file VirtualDatabaseDynamicMetaData.java.

References org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getRequestManager(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getVirtualDatabaseName(), and org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.logger.

00070   {
00071     this.vdbName = database.getVirtualDatabaseName();
00072     requestManager = database.getRequestManager();
00073     if (requestManager == null)
00074       throw new RuntimeException(
00075           "Null request manager in VirtualDatabaseMetaData");
00076 
00077     this.logger = Trace
00078         .getLogger("org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseWorkerThread."
00079             + vdbName + ".metadata");
00080   }


Member Function Documentation

DriverResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getCatalogs ArrayList  list  ) 
 

get list of Catalogs (database)

Parameters:
list of database from the controller
Returns:
ResultSet with list of catalogs

Definition at line 328 of file VirtualDatabaseDynamicMetaData.java.

00329   {
00330     int size = list.size();
00331     ArrayList data = new ArrayList(size);
00332     for (int i = 0; i < size; i++)
00333     {
00334       Object[] row = new Object[1];
00335       row[0] = (String) list.get(i);
00336       data.add(row);
00337     }
00338     DriverResultSet rs = new DriverResultSet(getCatalogsFields, data);
00339     return rs;
00340   }

DriverResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getColumns String  catalog,
String  schemaPattern,
String  tableNamePattern,
String  columnNamePattern
 

See also:
java.sql.DatabaseMetaData#getColumns

Definition at line 156 of file VirtualDatabaseDynamicMetaData.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumns(), org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTables(), and org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getType().

00158   {
00159     if (logger.isDebugEnabled())
00160       logger.debug("Getting columns for " + vdbName);
00161     DatabaseSchema dbs = this.getDatabaseSchema();
00162     if (dbs == null)
00163       return null;
00164 
00165     if (tableNamePattern == null)
00166       tableNamePattern = "%"; // if null is passed then select
00167     // all tables
00168 
00169     if (columnNamePattern == null)
00170       columnNamePattern = "%"; // if null is passed then
00171 
00172     // Build the ResultSet
00173     ArrayList tables = dbs.getTables();
00174     int size = tables.size();
00175     ArrayList data = new ArrayList();
00176 
00177     for (int i = 0; i < size; i++)
00178     {
00179       DatabaseTable t = (DatabaseTable) tables.get(i);
00180 
00181       if (tableNamePattern.equals("%") || tableNamePattern.equals(t.getName()))
00182       {
00183         if (logger.isDebugEnabled())
00184           logger.debug("Found table " + t.getName());
00185         ArrayList columns = t.getColumns();
00186         for (int j = 0; j < columns.size(); j++)
00187         {
00188           DatabaseColumn c = (DatabaseColumn) columns.get(j);
00189           if (columnNamePattern.equals("%")
00190               || columnNamePattern.equals(c.getName()))
00191           {
00192             if (logger.isDebugEnabled())
00193               logger.debug("Found column " + c.getName());
00194             Object[] row = new Object[18];
00195             row[0] = vdbName; // TABLE_CAT
00196             row[1] = null; // TABLE_SCHEM
00197             row[2] = t.getName(); // TABLE_NAME
00198             row[3] = c.getName(); // COLUMN_NAME
00199             row[4] = new Integer(c.getType()); // DATA_TYPE
00200             row[5] = null; // TYPE_NAME
00201             row[6] = null; // COLUMN_SIZE
00202             row[7] = null; // BUFFER_LENGTH
00203             row[8] = null; // DECIMAL_DIGITS
00204             row[9] = null; // NUM_PREC_RADIX
00205             row[10] = null; // NULLABLE
00206             row[11] = null; // REMARKS
00207             row[12] = null; // COLUMN_DEF
00208             row[13] = null; // SQL_DATA_TYPE
00209             row[14] = null; // SQL_DATETIME_SUB
00210             row[15] = null; // CHAR_OCTET_LENGTH
00211             row[16] = null; // ORDINAL_POSITION
00212             row[17] = ""; // IS_NULLABLE
00213             data.add(row);
00214           }
00215         }
00216       }
00217     }
00218     DriverResultSet rs = new DriverResultSet(getColumnsFields, data);
00219     return rs;
00220   }

java.sql.ResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getPrimaryKeys String  catalog,
String  schema,
String  table
 

Gets a description of a table's primary key columns. They are ordered by COLUMN_NAME.

See also:
java.sql.DatabaseMetaData#getPrimaryKeys

Definition at line 101 of file VirtualDatabaseDynamicMetaData.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumns(), org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTables(), org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getType(), and org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.isUnique.

00103   {
00104     if (logger.isDebugEnabled())
00105       logger.debug("Getting getPrimaryKeys for " + vdbName);
00106     DatabaseSchema dbs = this.getDatabaseSchema();
00107     if (dbs == null)
00108       return null;
00109 
00110     if (table == null)
00111       table = "%"; // if null is passed then
00112     // select all tables
00113 
00114     // Build the ResultSet
00115     ArrayList tables = dbs.getTables();
00116     int size = tables.size();
00117     ArrayList data = new ArrayList();
00118 
00119     for (int i = 0; i < size; i++)
00120     {
00121       DatabaseTable t = (DatabaseTable) tables.get(i);
00122       if (table.equals("%") || table.equals(t.getName()))
00123       {
00124         ArrayList columns = t.getColumns();
00125         for (int j = 0; j < columns.size(); j++)
00126         {
00127           DatabaseColumn c = (DatabaseColumn) columns.get(j);
00128           if (c.isUnique())
00129           {
00130             if (logger.isDebugEnabled())
00131               logger.debug("Found primary key" + c.getName());
00132             Object[] row = new Object[6];
00133             row[0] = vdbName; // TABLE_CAT
00134             row[1] = null; // TABLE_SCHEM
00135             row[2] = t.getName(); // TABLE_NAME
00136             row[3] = c.getName(); // COLUMN_NAME
00137             row[4] = new Integer(c.getType()); // KEY_SEQ
00138             row[5] = c.getName(); // PK_NAME
00139             data.add(row);
00140           }
00141           else
00142           {
00143             if (logger.isDebugEnabled())
00144               logger.debug("Key " + c.getName() + " is not unique");
00145           }
00146         }
00147       }
00148     }
00149     DriverResultSet rs = new DriverResultSet(getPrimaryKeysFields, data);
00150     return rs;
00151   }

DriverResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getProcedureColumns String  catalog,
String  schemaPattern,
String  procedureNamePattern,
String  columnNamePattern
 

See also:
org.objectweb.cjdbc.driver.DatabaseMetaData.getProcedureColumns

Definition at line 411 of file VirtualDatabaseDynamicMetaData.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getColumnType(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getDataType(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getLength(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getNullable(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getParameters(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getPrecision(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedures(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getRadix(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getRemarks(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getScale(), and org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter.getTypeName().

00414   {
00415     DatabaseSchema dbs = this.getDatabaseSchema();
00416     if (dbs == null)
00417       return null;
00418 
00419     if (procedureNamePattern == null)
00420       procedureNamePattern = "%";
00421 
00422     if (columnNamePattern == null)
00423       columnNamePattern = "%";
00424 
00425     //Build the ResultSet
00426     ArrayList procedures = dbs.getProcedures();
00427     int size = procedures.size();
00428     ArrayList data = new ArrayList();
00429     for (int i = 0; i < size; i++)
00430     {
00431       DatabaseProcedure t = (DatabaseProcedure) procedures.get(i);
00432       if (procedureNamePattern.equals("%")
00433           || procedureNamePattern.equals(t.getName()))
00434       {
00435         if (logger.isDebugEnabled())
00436           logger.debug("Found matching procedure " + t.getName());
00437 
00438         ArrayList params = t.getParameters();
00439         int sizep = params.size();
00440         DatabaseProcedureParameter param;
00441         for (int k = 0; k < sizep; k++)
00442         {
00443           param = (DatabaseProcedureParameter) params.get(k);
00444           if (columnNamePattern.equals("%")
00445               || columnNamePattern.equals(t.getName()))
00446           {
00447             if (logger.isDebugEnabled())
00448               logger.debug("Found matching procedure parameter"
00449                   + param.getName());
00450 
00451             Object[] row = new Object[13];
00452             row[0] = vdbName; // PROCEDURE_CAT
00453             row[1] = null; // PROCEDURE_SCHEM
00454             row[2] = t.getName(); // PROCEDURE_NAME
00455             row[3] = param.getName(); // COLUMN_NAME
00456             row[4] = new Integer(param.getColumnType()); // COLUMN_TYPE
00457             row[5] = new Integer(param.getDataType()); // DATA_TYPE
00458             row[6] = param.getTypeName(); // TYPE_NAME
00459             row[7] = new Float(param.getPrecision()); // PRECISION
00460             row[8] = new Integer(param.getLength()); // LENGTH
00461             row[9] = new Integer(param.getScale()); // SCALE
00462             row[10] = new Integer(param.getRadix()); // RADIX
00463             row[11] = new Integer(param.getNullable()); // NULLABLE
00464             row[12] = param.getRemarks();
00465 
00466             data.add(row);
00467           }
00468         }
00469       }
00470     }
00471     DriverResultSet rs = new DriverResultSet(getProcedureColumnsFields, data);
00472     return rs;
00473   }

DriverResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getProcedures String  catalog,
String  schemaPattern,
String  procedureNamePattern
 

See also:
org.objectweb.cjdbc.driver.DatabaseMetaData.getProcedures

Definition at line 283 of file VirtualDatabaseDynamicMetaData.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedures(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getProcedureType(), and org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getRemarks().

00285   {
00286     DatabaseSchema dbs = this.getDatabaseSchema();
00287     if (dbs == null)
00288       return null;
00289 
00290     if (procedureNamePattern == null)
00291       procedureNamePattern = "%"; // if null is passed then
00292     // select all procedures
00293 
00294     // Build the ResultSet
00295     ArrayList procedures = dbs.getProcedures();
00296     int size = procedures.size();
00297     ArrayList data = new ArrayList();
00298     for (int i = 0; i < size; i++)
00299     {
00300       DatabaseProcedure t = (DatabaseProcedure) procedures.get(i);
00301       if (procedureNamePattern.equals("%")
00302           || procedureNamePattern.equals(t.getName()))
00303       {
00304         if (logger.isDebugEnabled())
00305           logger.debug("Found procedure " + t.getName());
00306         Object[] row = new Object[8];
00307         row[0] = vdbName; // PROCEDURE_CAT
00308         row[1] = null; // PROCEDURE_SCHEM
00309         row[2] = t.getName(); // PROCEDURE_NAME
00310         row[3] = null; // reserved for future use
00311         row[4] = null; // reserved for future use
00312         row[5] = null; // reserved for future use
00313         row[6] = t.getRemarks(); // REMARKS
00314         row[7] = new Integer(t.getProcedureType()); // PROCEDURE_TYPE
00315         data.add(row);
00316       }
00317     }
00318     DriverResultSet rs = new DriverResultSet(getProceduresFields, data);
00319     return rs;
00320   }

Object org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getSchemas  ) 
 

See also:
java.sql.DatabaseMetaData#getSchemas()
TODO: what do we put in schemas ? The JDBC reference and API is somewhat unclear !

Definition at line 228 of file VirtualDatabaseDynamicMetaData.java.

00229   {
00230     ArrayList data = new ArrayList();
00231     DriverResultSet rs = new DriverResultSet(getSchemasFields, data);
00232     return rs;
00233   }

DriverResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getTablePrivileges String  catalog,
String  schemaPattern,
String  tableNamePattern
 

See also:
org.objectweb.cjdbc.driver.DatabaseMetaData.getTableTypes

Definition at line 358 of file VirtualDatabaseDynamicMetaData.java.

References org.objectweb.cjdbc.common.users.AbstractDatabaseUser.getLogin(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTables(), and org.objectweb.cjdbc.controller.authentication.AuthenticationManager.getVirtualLogins().

00360   {
00361     AuthenticationManager manager = requestManager.getVirtualDatabase()
00362         .getAuthenticationManager();
00363     DatabaseSchema dbs = this.getDatabaseSchema();
00364     if (dbs == null)
00365       return null;
00366 
00367     if (tableNamePattern == null)
00368       // if null is passed then select all tables
00369       tableNamePattern = "%";
00370 
00371     ArrayList tables = dbs.getTables();
00372     int size = tables.size();
00373     ArrayList data = new ArrayList();
00374 
00375     ArrayList virtualLogins = manager.getVirtualLogins();
00376     int vsize = virtualLogins.size();
00377     VirtualDatabaseUser vu;
00378 
00379     for (int i = 0; i < size; i++)
00380     {
00381       DatabaseTable t = (DatabaseTable) tables.get(i);
00382       if (tableNamePattern.equals("%") || tableNamePattern.equals(t.getName()))
00383       {
00384         for (int j = 0; j < vsize; j++)
00385         {
00386           vu = (VirtualDatabaseUser) virtualLogins.get(0);
00387 
00388           if (logger.isDebugEnabled())
00389             logger.debug("Found privilege for user:" + vu.getLogin()
00390                 + " on table:" + t.getName());
00391           Object[] row = new Object[7];
00392           row[0] = vdbName; // table cat
00393           row[1] = null; // table schema
00394           row[2] = t.getName(); // table name
00395           row[3] = null; // grantor
00396           row[4] = vu.getLogin(); // grantee
00397           row[5] = "UPDATE"; // privilege
00398           row[6] = "NO"; //IS_GRANTABLE
00399           data.add(row);
00400         }
00401       }
00402     }
00403 
00404     DriverResultSet rs = new DriverResultSet(getTablePrivilegesFields, data);
00405     return rs;
00406   }

DriverResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getTables String  catalog,
String  schemaPattern,
String  tableNamePattern,
String[]  types
 

See also:
org.objectweb.cjdbc.driver.DatabaseMetaData.getTables(String, String, String, String[])

Definition at line 239 of file VirtualDatabaseDynamicMetaData.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTables().

00241   {
00242     DatabaseSchema dbs = this.getDatabaseSchema();
00243     if (dbs == null)
00244       return null;
00245 
00246     if (tableNamePattern == null)
00247       // if null is passed then select all tables
00248       tableNamePattern = "%";
00249 
00250     // Build the ResultSet
00251     ArrayList tables = dbs.getTables();
00252     int size = tables.size();
00253     ArrayList data = new ArrayList();
00254     for (int i = 0; i < size; i++)
00255     {
00256       DatabaseTable t = (DatabaseTable) tables.get(i);
00257       if (tableNamePattern.equals("%")
00258           || t.getName().indexOf(tableNamePattern) != -1)
00259       {
00260         if (logger.isDebugEnabled())
00261           logger.debug("Found table " + t.getName());
00262         Object[] row = new Object[10];
00263         row[0] = vdbName; // TABLE_CAT
00264         row[1] = null; // TABLE_SCHEM
00265         row[2] = t.getName(); // TABLE_NAME
00266         row[3] = "TABLE"; // TABLE_TYPE
00267         row[4] = null; // REMARKS
00268         row[5] = null; // TYPE_CAT
00269         row[6] = null; // TYPE_SCHEM
00270         row[7] = null; // TYPE_NAME
00271         row[8] = null; // SELF_REFERENCING_COL_NAME
00272         row[9] = "SYSTEM"; // REF_GENERATION
00273         data.add(row);
00274       }
00275     }
00276     DriverResultSet rs = new DriverResultSet(getTablesFields, data);
00277     return rs;
00278   }

DriverResultSet org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getTableTypes  ) 
 

See also:
org.objectweb.cjdbc.driver.DatabaseMetaData.getTableTypes

Definition at line 345 of file VirtualDatabaseDynamicMetaData.java.

00346   {
00347     ArrayList list = new ArrayList(1);
00348     Object[] row = new Object[1];
00349     row[0] = "TABLE";
00350     list.add(row);
00351     DriverResultSet rs = new DriverResultSet(getTableTypesFields, list);
00352     return rs;
00353   }


Member Data Documentation

final int org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.NULL_VALUE = -999 [static]
 

Detect a null valu for int

Definition at line 55 of file VirtualDatabaseDynamicMetaData.java.


The documentation for this class was generated from the following file:
Generated on Mon Apr 11 22:04:46 2005 for C-JDBC by  doxygen 1.3.9.1