Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.firebirdsql.jdbc.oo;
  
  import java.sql.ResultSet;
  
 
 public class OODatabaseMetaData extends FBDatabaseMetaData {
 
     public OODatabaseMetaData(AbstractConnection cthrows GDSException {
         super(c);
     }
 
     public OODatabaseMetaData(GDSHelper gdsHelper) {
         super(gdsHelper);
     }
 
     private static final String DEFAULT_SCHEMA = "DEFAULT";
 
     public ResultSet getSchemas() throws SQLException {
         XSQLVAR[] xsqlvars = new XSQLVAR[1];
 
         xsqlvars[0] = new XSQLVAR();
         xsqlvars[0]. = .;
         xsqlvars[0]. = 31;
         xsqlvars[0]. = "TABLE_SCHEM";
         xsqlvars[0]. = "TABLESCHEMAS";
 
         ArrayList rows = new ArrayList(1);
         rows.add(new byte[][] { getBytes()});
 
         return new FBResultSet(xsqlvarsrows);
     }
 
     public ResultSet getTables(String catalogString schemaPattern,
             String tableNamePatternString[] typesthrows SQLException {
 
         if (.equals(schemaPattern)) schemaPattern = null;
 
         FBResultSet rs = (FBResultSetsuper.getTables(catalogschemaPattern,
             tableNamePatterntypes);
 
         if (rs.next()) {
             rs.beforeFirst();
             return rs;
         }
 
         tableNamePattern = tableNamePattern.toUpperCase();
 
         return super.getTables(catalogschemaPatterntableNamePatterntypes);
     }
 
     public ResultSet getColumns(String catalogString schemaPattern,
             String tableNamePatternString columnNamePattern)
             throws SQLException {
 
         if (.equals(schemaPattern)) schemaPattern = null;
 
         FBResultSet rs = (FBResultSetsuper.getColumns(catalogschemaPattern,
             tableNamePatterncolumnNamePattern);
 
         if (rs.next()) {
             rs.beforeFirst();
             return rs;
         }
 
         String upperTableNamePattern = tableNamePattern.toUpperCase();
         String upperColumnNamePattern = columnNamePattern.toUpperCase();
 
         rs = (FBResultSetsuper.getColumns(catalogschemaPattern,
             upperTableNamePatterncolumnNamePattern);
 
         if (rs.next()) {
             rs.beforeFirst();
             return rs;
         }
 
         rs = (FBResultSetsuper.getColumns(catalogschemaPattern,
             tableNamePatternupperColumnNamePattern);
 
         if (rs.next()) {
             rs.beforeFirst();
             return rs;
         }
 
         return super.getColumns(catalogschemaPatternupperTableNamePattern,
             upperColumnNamePattern);
     }
 
     public ResultSet getBestRowIdentifier(String catalogString schema,
             String tableint scopeboolean nullablethrows SQLException {
         if (.equals(schema)) schema = null;
 
         return super.getBestRowIdentifier(catalogschematablescope,
             nullable);
     }
    public ResultSet getColumnPrivileges(String catalogString schema,
            String tableString columnNamePatternthrows SQLException {
        if (.equals(schema)) schema = null;
        return super.getColumnPrivileges(catalogschematable,
            columnNamePattern);
    }
    public ResultSet getCrossReference(String primaryCatalog,
            String primarySchemaString primaryTableString foreignCatalog,
            String foreignSchemaString foreignTablethrows SQLException {
        if (.equals(primarySchema)) primarySchema = null;
        if (.equals(foreignSchema)) foreignSchema = null;
        return super.getCrossReference(primaryCatalogprimarySchema,
            primaryTableforeignCatalogforeignSchemaforeignTable);
    }
    public ResultSet getExportedKeys(String catalogString schemaString table)
            throws SQLException {
        if (.equals(schema)) schema = null;
        return super.getExportedKeys(catalogschematable);
    }
    public ResultSet getImportedKeys(String catalogString schemaString table)
            throws SQLException {
        if (.equals(schema)) schema = null;
        return super.getImportedKeys(catalogschematable);
    }
    public ResultSet getIndexInfo(String catalogString schemaString table,
            boolean uniqueboolean approximatethrows SQLException {
        if (.equals(schema)) schema = null;
        return super.getIndexInfo(catalogschematableuniqueapproximate);
    }
    public ResultSet getPrimaryKeys(String catalogString schemaString table)
            throws SQLException {
        if (.equals(schema)) schema = null;
        return super.getPrimaryKeys(catalogschematable);
    }
    public ResultSet getProcedureColumns(String catalogString schemaPattern,
            String procedureNamePatternString columnNamePattern)
            throws SQLException {
        if (.equals(schemaPattern)) schemaPattern = null;
        return super.getProcedureColumns(catalogschemaPattern,
            procedureNamePatterncolumnNamePattern);
    }
    public ResultSet getProcedures(String catalogString schemaPattern,
            String procedureNamePatternthrows SQLException {
        if (.equals(schemaPattern)) schemaPattern = null;
        return super
                .getProcedures(catalogschemaPatternprocedureNamePattern);
    }
    public ResultSet getSuperTables(String catalogString schemaPattern,
            String tableNamePatternthrows SQLException {
        if (.equals(schemaPattern)) schemaPattern = null;
        return super.getSuperTables(catalogschemaPatterntableNamePattern);
    }
    public ResultSet getSuperTypes(String catalogString schemaPattern,
            String tableNamePatternthrows SQLException {
        if (.equals(schemaPattern)) schemaPattern = null;
        return super.getSuperTypes(catalogschemaPatterntableNamePattern);
    }
    
    private static final String GET_TABLE_PRIVILEGES_START_1 = 
        "SELECT " + 
        "null as TABLE_CAT, " + 
        "null as TABLE_SCHEM, " + 
        "RDB$RELATION_NAME as TABLE_NAME, " + 
        "RDB$GRANTOR as GRANTOR, " + 
        "RDB$USER as GRANTEE, " + 
        "RDB$PRIVILEGE as PRIVILEGE, " + 
        "RDB$GRANT_OPTION as IS_GRANTABLE " + 
        "FROM RDB$USER_PRIVILEGES " + 
        "WHERE ";
    private static final String GET_TABLE_PRIVILEGES_END_1 = 
        " CURRENT_USER IN (RDB$USER, RDB$GRANTOR) AND RDB$FIELD_NAME IS NULL AND RDB$OBJECT_TYPE = 0";
    private static final String GET_TABLE_PRIVILEGES_START_2 =
        "UNION " + 
        "SELECT " + 
        "null as TABLE_CAT, " + 
        "null as TABLE_SCHEM, " + 
        "RDB$RELATION_NAME as TABLE_NAME, " + 
        "RDB$GRANTOR as GRANTOR, " + 
        "CURRENT_USER as GRANTEE, " + 
        "RDB$PRIVILEGE as PRIVILEGE, " + 
        "RDB$GRANT_OPTION as IS_GRANTABLE " + 
        "FROM RDB$USER_PRIVILEGES " + 
        "WHERE ";
    private static final String GET_TABLE_PRIVILEGES_END_2 =
        " RDB$USER IN (CURRENT_ROLE, 'PUBLIC') AND RDB$FIELD_NAME IS NULL AND RDB$OBJECT_TYPE = 0 " + 
        "ORDER BY 3, 6";
    public ResultSet getTablePrivileges(String catalogString schemaPattern,
            String tableNamePatternthrows SQLException {
        if (.equals(schemaPattern)) schemaPattern = null;
        checkCatalogAndSchema(catalogschemaPattern);
        tableNamePattern = stripQuotes(stripEscape(tableNamePattern), true);
        XSQLVAR[] xsqlvars = buildTablePrivilegeRSMetaData();
        Clause tableClause1 = new Clause("RDB$RELATION_NAME"tableNamePattern);
        Clause tableClause2 = new Clause("RDB$RELATION_NAME"tableNamePattern);
        
        String sql = ;
        sql += tableClause1.getCondition();
        sql += ;
        sql += ;
        sql += tableClause2.getCondition();
        sql += ;
        
        // check the original case identifiers first
        ArrayList params = new ArrayList();
        if (!tableClause1.getCondition().equals("")) {
            params.add(tableClause1.getOriginalCaseValue());
        }
        if (!tableClause2.getCondition().equals("")) {
            params.add(tableClause2.getOriginalCaseValue());
        }
        ResultSet rs = doQuery(sqlparams);
        
        // if nothing found, check the uppercased identifiers
        if (!rs.next()) {
            params.clear();
            if (!tableClause1.getCondition().equals("")) {
                params.add(tableClause1.getValue());
            }
            if (!tableClause2.getCondition().equals("")) {
                params.add(tableClause2.getValue());
            }
            
            rs = doQuery(sqlparams);
            
            // if nothing found, return an empty result set
            if (!rs.next())
                return new FBResultSet(xsqlvarsnew ArrayList());
        }
        
        return processTablePrivileges(xsqlvarsrs);
    }
    public String stripEscape(String pattern) {
        return super.stripEscape(pattern);
    }
    public String stripQuotes(String pattern) {
        if ((pattern.length() >= 2) && (pattern.charAt(0) == '\"')
                && (pattern.charAt(pattern.length() - 1) == '\"')) {
            return pattern.substring(1, pattern.length() - 1);
        } else {
            return pattern;
        }
    }
New to GrepCode? Check out our FAQ X