org.objectweb.cjdbc.controller.virtualdatabase
Class VirtualDatabaseDynamicMetaData

java.lang.Object
  extended byorg.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData

public class VirtualDatabaseDynamicMetaData
extends java.lang.Object

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

Nested Class Summary
private  class VirtualDatabaseDynamicMetaData.ConnectionAndDatabaseMetaData
          This class defines a ConnectionAndDatabaseMetaData used to carry metadata and connection related information to properly release the connection later on.
 
Field Summary
private static Field[] getAttributesFields
           
private static Field[] getBestRowIdentifierAndVersionColumnsFields
           
private static Field[] getCatalogsFields
           
private static Field[] getColumnPrivilegesFields
           
private static Field[] getColumnsFields
           
private static Field[] getCrossReferenceOrImportExportedKeysFields
           
private static Field[] getIndexInfoFields
           
private static Field[] getPrimaryKeysFields
           
private static Field[] getProcedureColumnsFields
           
private static Field[] getProceduresFields
           
private static Field[] getSchemasFields
           
private static Field[] getSuperTablesFields
           
private static Field[] getSuperTypesFields
           
private static Field[] getTablePrivilegesFields
           
private static Field[] getTablesFields
           
private static Field[] getTableTypesFields
           
private static Field[] getTypeInfoFields
           
private static Field[] getUDTsFields
           
private  Trace logger
          Logger instance.
static int NULL_VALUE
          Detect a null valu for int
private  RequestManager requestManager
           
private  java.lang.String vdbName
           
 
Constructor Summary
VirtualDatabaseDynamicMetaData(VirtualDatabase database)
          Reference the database for this metadata.
 
Method Summary
 DriverResultSet getAttributes(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String typeNamePattern, java.lang.String attributeNamePattern)
           
 DriverResultSet getBestRowIdentifier(java.lang.String login, java.lang.String catalog, java.lang.String schema, java.lang.String table, int scope, boolean nullable)
           
 DriverResultSet getCatalogs(java.util.ArrayList list)
          Build a list of Catalogs from a givem list of virtual database names
 DriverResultSet getColumnPrivileges(java.lang.String login, java.lang.String catalog, java.lang.String schema, java.lang.String table, java.lang.String columnNamePattern)
           
 DriverResultSet getColumns(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String columnNamePattern)
           
 DriverResultSet getCrossReference(java.lang.String login, java.lang.String primaryCatalog, java.lang.String primarySchema, java.lang.String primaryTable, java.lang.String foreignCatalog, java.lang.String foreignSchema, java.lang.String foreignTable)
           
 DriverResultSet getExportedKeys(java.lang.String login, java.lang.String catalog, java.lang.String schema, java.lang.String table)
           
private  DatabaseBackend getFirstAvailableBackend()
          Get the first available backend from the virtual database
 DriverResultSet getImportedKeys(java.lang.String login, java.lang.String catalog, java.lang.String schema, java.lang.String table)
           
 DriverResultSet getIndexInfo(java.lang.String login, java.lang.String catalog, java.lang.String schema, java.lang.String table, boolean unique, boolean approximate)
           
private  VirtualDatabaseDynamicMetaData.ConnectionAndDatabaseMetaData getMetaDataFromFirstAvailableBackend(java.lang.String login)
          Get DatabaseMetaData from the first available backend.
 DriverResultSet getPrimaryKeys(java.lang.String login, java.lang.String catalog, java.lang.String schema, java.lang.String table)
          Gets a description of a table's primary key columns for the given login.
 DriverResultSet getProcedureColumns(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String procedureNamePattern, java.lang.String columnNamePattern)
           
 DriverResultSet getProcedures(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String procedureNamePattern)
           
 DriverResultSet getSchemas(java.lang.String login)
          Will return the schema from the call to getSchemas() on the first available node.
 DriverResultSet getSuperTables(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)
           
 DriverResultSet getSuperTypes(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)
           
 DriverResultSet getTablePrivileges(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern)
           
 DriverResultSet getTables(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String[] types)
           
 DriverResultSet getTableTypes(java.lang.String login)
           
 DriverResultSet getTypeInfo(java.lang.String login)
           
 DriverResultSet getUDTs(java.lang.String login, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, int[] types)
           
 DriverResultSet getVersionColumns(java.lang.String login, java.lang.String catalog, java.lang.String schema, java.lang.String table)
           
private  void releaseConnection(VirtualDatabaseDynamicMetaData.ConnectionAndDatabaseMetaData info)
          Release the connection used to fetch the metadata
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NULL_VALUE

public static final int NULL_VALUE
Detect a null valu for int

See Also:
Constant Field Values

vdbName

private java.lang.String vdbName

requestManager

private RequestManager requestManager

logger

private Trace logger
Logger instance.


getAttributesFields

private static Field[] getAttributesFields
See Also:
DatabaseMetaData.getAttributes(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getBestRowIdentifierAndVersionColumnsFields

private static Field[] getBestRowIdentifierAndVersionColumnsFields
See Also:
DatabaseMetaData.getBestRowIdentifier(java.lang.String, java.lang.String, java.lang.String, int, boolean)

getCatalogsFields

private static Field[] getCatalogsFields
See Also:
DatabaseMetaData.getCatalogs()

getColumnPrivilegesFields

private static Field[] getColumnPrivilegesFields
See Also:
DatabaseMetaData.getColumnPrivileges(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getColumnsFields

private static Field[] getColumnsFields
See Also:
DatabaseMetaData.getColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getCrossReferenceOrImportExportedKeysFields

private static Field[] getCrossReferenceOrImportExportedKeysFields
See Also:
DatabaseMetaData.getCrossReference(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String), DatabaseMetaData.getImportedKeys(java.lang.String, java.lang.String, java.lang.String)

getIndexInfoFields

private static Field[] getIndexInfoFields
See Also:
DatabaseMetaData.getIndexInfo(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)

getPrimaryKeysFields

private static Field[] getPrimaryKeysFields
See Also:
DatabaseMetaData.getPrimaryKeys(java.lang.String, java.lang.String, java.lang.String)

getProcedureColumnsFields

private static Field[] getProcedureColumnsFields
See Also:
DatabaseMetaData.getProcedureColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getProceduresFields

private static Field[] getProceduresFields
See Also:
DatabaseMetaData.getProcedures(java.lang.String, java.lang.String, java.lang.String)

getSchemasFields

private static Field[] getSchemasFields
See Also:
DatabaseMetaData.getSchemas()

getSuperTablesFields

private static Field[] getSuperTablesFields
See Also:
DatabaseMetaData.getSuperTables(java.lang.String, java.lang.String, java.lang.String)

getSuperTypesFields

private static Field[] getSuperTypesFields
See Also:
DatabaseMetaData.getSuperTypes(java.lang.String, java.lang.String, java.lang.String)

getTablePrivilegesFields

private static Field[] getTablePrivilegesFields
See Also:
DatabaseMetaData.getTablePrivileges(java.lang.String, java.lang.String, java.lang.String)

getTablesFields

private static Field[] getTablesFields
See Also:
DatabaseMetaData.getTables(String, String, String, String[])

getTableTypesFields

private static Field[] getTableTypesFields
See Also:
DatabaseMetaData.getTableTypes()

getTypeInfoFields

private static Field[] getTypeInfoFields
See Also:
DatabaseMetaData.getTypeInfo()

getUDTsFields

private static Field[] getUDTsFields
See Also:
DatabaseMetaData.getUDTs(java.lang.String, java.lang.String, java.lang.String, int[])
Constructor Detail

VirtualDatabaseDynamicMetaData

public VirtualDatabaseDynamicMetaData(VirtualDatabase database)
Reference the database for this metadata. Do not fetch any data at this time

Parameters:
database - to link this metadata to
Method Detail

getAttributes

public DriverResultSet getAttributes(java.lang.String login,
                                     java.lang.String catalog,
                                     java.lang.String schemaPattern,
                                     java.lang.String typeNamePattern,
                                     java.lang.String attributeNamePattern)
                              throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getAttributes(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getBestRowIdentifier

public DriverResultSet getBestRowIdentifier(java.lang.String login,
                                            java.lang.String catalog,
                                            java.lang.String schema,
                                            java.lang.String table,
                                            int scope,
                                            boolean nullable)
                                     throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getBestRowIdentifier(java.lang.String, java.lang.String, java.lang.String, int, boolean)

getCatalogs

public DriverResultSet getCatalogs(java.util.ArrayList list)
Build a list of Catalogs from a givem list of virtual database names

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

getColumnPrivileges

public DriverResultSet getColumnPrivileges(java.lang.String login,
                                           java.lang.String catalog,
                                           java.lang.String schema,
                                           java.lang.String table,
                                           java.lang.String columnNamePattern)
                                    throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getColumnPrivileges(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getColumns

public DriverResultSet getColumns(java.lang.String login,
                                  java.lang.String catalog,
                                  java.lang.String schemaPattern,
                                  java.lang.String tableNamePattern,
                                  java.lang.String columnNamePattern)
                           throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getCrossReference

public DriverResultSet getCrossReference(java.lang.String login,
                                         java.lang.String primaryCatalog,
                                         java.lang.String primarySchema,
                                         java.lang.String primaryTable,
                                         java.lang.String foreignCatalog,
                                         java.lang.String foreignSchema,
                                         java.lang.String foreignTable)
                                  throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getCrossReference(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getExportedKeys

public DriverResultSet getExportedKeys(java.lang.String login,
                                       java.lang.String catalog,
                                       java.lang.String schema,
                                       java.lang.String table)
                                throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getExportedKeys(java.lang.String, java.lang.String, java.lang.String)

getImportedKeys

public DriverResultSet getImportedKeys(java.lang.String login,
                                       java.lang.String catalog,
                                       java.lang.String schema,
                                       java.lang.String table)
                                throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getImportedKeys(java.lang.String, java.lang.String, java.lang.String)

getIndexInfo

public DriverResultSet getIndexInfo(java.lang.String login,
                                    java.lang.String catalog,
                                    java.lang.String schema,
                                    java.lang.String table,
                                    boolean unique,
                                    boolean approximate)
                             throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getIndexInfo(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)

getPrimaryKeys

public DriverResultSet getPrimaryKeys(java.lang.String login,
                                      java.lang.String catalog,
                                      java.lang.String schema,
                                      java.lang.String table)
                               throws java.sql.SQLException
Gets a description of a table's primary key columns for the given login. Primary keys are ordered by COLUMN_NAME.

Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getPrimaryKeys(java.lang.String, java.lang.String, java.lang.String)

getProcedureColumns

public DriverResultSet getProcedureColumns(java.lang.String login,
                                           java.lang.String catalog,
                                           java.lang.String schemaPattern,
                                           java.lang.String procedureNamePattern,
                                           java.lang.String columnNamePattern)
                                    throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getProcedureColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getProcedures

public DriverResultSet getProcedures(java.lang.String login,
                                     java.lang.String catalog,
                                     java.lang.String schemaPattern,
                                     java.lang.String procedureNamePattern)
                              throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getProcedures(String, String, String)

getSchemas

public DriverResultSet getSchemas(java.lang.String login)
                           throws java.sql.SQLException
Will return the schema from the call to getSchemas() on the first available node.

Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getSchemas()

getSuperTables

public DriverResultSet getSuperTables(java.lang.String login,
                                      java.lang.String catalog,
                                      java.lang.String schemaPattern,
                                      java.lang.String tableNamePattern)
                               throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getSuperTables(java.lang.String, java.lang.String, java.lang.String)

getSuperTypes

public DriverResultSet getSuperTypes(java.lang.String login,
                                     java.lang.String catalog,
                                     java.lang.String schemaPattern,
                                     java.lang.String tableNamePattern)
                              throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getSuperTypes(java.lang.String, java.lang.String, java.lang.String)

getTablePrivileges

public DriverResultSet getTablePrivileges(java.lang.String login,
                                          java.lang.String catalog,
                                          java.lang.String schemaPattern,
                                          java.lang.String tableNamePattern)
                                   throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getTablePrivileges(String, String, String)

getTables

public DriverResultSet getTables(java.lang.String login,
                                 java.lang.String catalog,
                                 java.lang.String schemaPattern,
                                 java.lang.String tableNamePattern,
                                 java.lang.String[] types)
                          throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getTables(String, String, String, String[])

getTableTypes

public DriverResultSet getTableTypes(java.lang.String login)
                              throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getTableTypes()

getTypeInfo

public DriverResultSet getTypeInfo(java.lang.String login)
                            throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getTypeInfo()

getUDTs

public DriverResultSet getUDTs(java.lang.String login,
                               java.lang.String catalog,
                               java.lang.String schemaPattern,
                               java.lang.String tableNamePattern,
                               int[] types)
                        throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getUDTs(String, String, String, int[])

getVersionColumns

public DriverResultSet getVersionColumns(java.lang.String login,
                                         java.lang.String catalog,
                                         java.lang.String schema,
                                         java.lang.String table)
                                  throws java.sql.SQLException
Throws:
java.sql.SQLException
See Also:
DatabaseMetaData.getVersionColumns(String, String, String)

getFirstAvailableBackend

private DatabaseBackend getFirstAvailableBackend()
Get the first available backend from the virtual database

Returns:
the first available backend or null if no backend enabled is found

getMetaDataFromFirstAvailableBackend

private VirtualDatabaseDynamicMetaData.ConnectionAndDatabaseMetaData getMetaDataFromFirstAvailableBackend(java.lang.String login)
                                                                                                   throws NoMoreBackendException,
                                                                                                          java.sql.SQLException
Get DatabaseMetaData from the first available backend.

Parameters:
login - the login to use to fetch metadata
Returns:
the DatabaseMetaData obtained from the first available backend among with the connection information
Throws:
NoMoreBackendException - if no backend is enabled on this controller
java.sql.SQLException - if an error occured while getting MetaData

releaseConnection

private void releaseConnection(VirtualDatabaseDynamicMetaData.ConnectionAndDatabaseMetaData info)
Release the connection used to fetch the metadata

Parameters:
info - the connection information returned by getMetaDataFromFirstAvailableBackend
See Also:
getMetaDataFromFirstAvailableBackend(String)


Copyright © 2002, 2005 - ObjectWeb Consortium - All Rights Reserved.