Search in sources :

Example 1 with DB2Index

use of org.jkiss.dbeaver.ext.db2.model.DB2Index in project dbeaver by serge-rider.

the class DB2IndexCache method fetchObject.

@Override
protected DB2Index fetchObject(@NotNull JDBCSession session, @NotNull DB2Schema db2Schema, @NotNull JDBCResultSet dbResult) throws SQLException, DBException {
    // Look for related table...or nickname...or MQT
    String tableOrNicknameSchemaName = JDBCUtils.safeGetStringTrimmed(dbResult, "TABSCHEMA");
    String tableOrNicknameName = JDBCUtils.safeGetStringTrimmed(dbResult, "TABNAME");
    DB2Schema objectSchema = db2Schema.getDataSource().getSchema(session.getProgressMonitor(), tableOrNicknameSchemaName);
    if (objectSchema == null) {
        log.error("Schema '" + tableOrNicknameSchemaName + "' not found");
        return null;
    }
    // FIXME: here we cache all tables to avoid spam in table lookup
    // FIXME: because we always read all indexes. Make index cache lookup cache
    objectSchema.getTables(session.getProgressMonitor());
    DB2TableBase db2Table = objectSchema.getTable(session.getProgressMonitor(), tableOrNicknameName);
    if (db2Table == null) {
        db2Table = DB2Utils.findNicknameBySchemaNameAndName(session.getProgressMonitor(), db2Schema.getDataSource(), tableOrNicknameSchemaName, tableOrNicknameName);
    }
    if (db2Table == null) {
        db2Table = DB2Utils.findMaterializedQueryTableBySchemaNameAndName(session.getProgressMonitor(), db2Schema.getDataSource(), tableOrNicknameSchemaName, tableOrNicknameName);
    }
    if (db2Table == null) {
        log.error("Object '" + tableOrNicknameName + "' not found in schema '" + tableOrNicknameSchemaName + "'");
        return null;
    }
    return new DB2Index(session.getProgressMonitor(), db2Schema, db2Table, dbResult);
}
Also used : DB2TableBase(org.jkiss.dbeaver.ext.db2.model.DB2TableBase) DB2Index(org.jkiss.dbeaver.ext.db2.model.DB2Index) DB2Schema(org.jkiss.dbeaver.ext.db2.model.DB2Schema)

Example 2 with DB2Index

use of org.jkiss.dbeaver.ext.db2.model.DB2Index in project dbeaver by serge-rider.

the class DB2GranteeAuthCache method fetchObject.

@Override
protected DB2AuthBase fetchObject(@NotNull JDBCSession session, @NotNull DB2Grantee db2Grantee, @NotNull JDBCResultSet resultSet) throws SQLException, DBException {
    DB2DataSource db2DataSource = db2Grantee.getDataSource();
    DBRProgressMonitor monitor = session.getProgressMonitor();
    String objectSchemaName = JDBCUtils.safeGetStringTrimmed(resultSet, "OBJ_SCHEMA");
    String objectName = JDBCUtils.safeGetStringTrimmed(resultSet, "OBJ_NAME");
    DB2ObjectType objectType = CommonUtils.valueOf(DB2ObjectType.class, JDBCUtils.safeGetString(resultSet, "OBJ_TYPE"));
    switch(objectType) {
        case COLUMN:
            String columnName = JDBCUtils.safeGetStringTrimmed(resultSet, "USAGEAUTH");
            DB2TableColumn db2TableColumn = DB2Utils.findColumnBySchemaNameAndTableNameAndName(monitor, db2DataSource, objectSchemaName, objectName, columnName);
            return new DB2AuthColumn(monitor, db2Grantee, db2TableColumn, resultSet);
        case INDEX:
            DB2Index db2Index = DB2Utils.findIndexBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
            return new DB2AuthIndex(monitor, db2Grantee, db2Index, resultSet);
        case MODULE:
            DB2Module db2Module = DB2Utils.findModuleBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
            return new DB2AuthModule(monitor, db2Grantee, db2Module, resultSet);
        case PACKAGE:
            DB2Package db2Package = DB2Utils.findPackageBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
            return new DB2AuthPackage(monitor, db2Grantee, db2Package, resultSet);
        case PROCEDURE:
            // Can be a Function or a Procedure
            DB2RoutineType routineType = CommonUtils.valueOf(DB2RoutineType.class, JDBCUtils.safeGetStringTrimmed(resultSet, "USAGEAUTH"));
            switch(routineType) {
                case F:
                    DB2Routine db2Udf = DB2Utils.findUDFBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
                    return new DB2AuthUDF(monitor, db2Grantee, db2Udf, resultSet);
                case M:
                    DB2Routine db2Method = DB2Utils.findMethodBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
                    return new DB2AuthMethod(monitor, db2Grantee, db2Method, resultSet);
                case P:
                    DB2Routine db2Procedure = DB2Utils.findProcedureBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
                    return new DB2AuthProcedure(monitor, db2Grantee, db2Procedure, resultSet);
                default:
                    throw new DBException(routineType + " is not a valid DB2RoutineType");
            }
        case SCHEMA:
            DB2Schema db2Schema = db2DataSource.getSchema(monitor, objectName);
            return new DB2AuthSchema(monitor, db2Grantee, db2Schema, resultSet);
        case SEQUENCE:
            DB2Sequence db2Sequence = DB2Utils.findSequenceBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
            return new DB2AuthSequence(monitor, db2Grantee, db2Sequence, resultSet);
        case TABLE:
            // Can be a Table, a View or an MQT..
            DB2TableBase db2TableBase = DB2Utils.findTableBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
            if (db2TableBase != null) {
                return new DB2AuthTable(monitor, db2Grantee, db2TableBase, resultSet);
            } else {
                db2TableBase = DB2Utils.findViewBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
                if (db2TableBase != null) {
                    return new DB2AuthView(monitor, db2Grantee, db2TableBase, resultSet);
                } else {
                    db2TableBase = DB2Utils.findMQTBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
                    return new DB2AuthMaterializedQueryTable(monitor, db2Grantee, db2TableBase, resultSet);
                }
            }
        case TABLESPACE:
            DB2Tablespace db2Tablespace = db2DataSource.getTablespace(monitor, objectName);
            return new DB2AuthTablespace(monitor, db2Grantee, db2Tablespace, resultSet);
        case VARIABLE:
            DB2Variable db2Variable = db2DataSource.getVariable(monitor, objectName);
            return new DB2AuthVariable(monitor, db2Grantee, db2Variable, resultSet);
        case XML_SCHEMA:
            Long xmlSchemaId = Long.valueOf(objectName);
            DB2XMLSchema db2XmlSchema = DB2Utils.findXMLSchemaByById(monitor, db2DataSource, xmlSchemaId);
            return new DB2AuthXMLSchema(monitor, db2Grantee, db2XmlSchema, resultSet);
        default:
            throw new DBException("Programming error: " + objectType + " is not supported yet and the SELECT statement must exclude it");
    }
}
Also used : DB2Routine(org.jkiss.dbeaver.ext.db2.model.DB2Routine) DBException(org.jkiss.dbeaver.DBException) DB2Sequence(org.jkiss.dbeaver.ext.db2.model.DB2Sequence) DB2ObjectType(org.jkiss.dbeaver.ext.db2.editors.DB2ObjectType) DB2TableBase(org.jkiss.dbeaver.ext.db2.model.DB2TableBase) DB2Index(org.jkiss.dbeaver.ext.db2.model.DB2Index) DB2Package(org.jkiss.dbeaver.ext.db2.model.DB2Package) DB2Schema(org.jkiss.dbeaver.ext.db2.model.DB2Schema) DB2Tablespace(org.jkiss.dbeaver.ext.db2.model.DB2Tablespace) DB2DataSource(org.jkiss.dbeaver.ext.db2.model.DB2DataSource) DB2XMLSchema(org.jkiss.dbeaver.ext.db2.model.DB2XMLSchema) DB2TableColumn(org.jkiss.dbeaver.ext.db2.model.DB2TableColumn) DB2Module(org.jkiss.dbeaver.ext.db2.model.module.DB2Module) DB2RoutineType(org.jkiss.dbeaver.ext.db2.model.dict.DB2RoutineType) DBRProgressMonitor(org.jkiss.dbeaver.model.runtime.DBRProgressMonitor) DB2Variable(org.jkiss.dbeaver.ext.db2.model.DB2Variable)

Aggregations

DB2Index (org.jkiss.dbeaver.ext.db2.model.DB2Index)2 DB2Schema (org.jkiss.dbeaver.ext.db2.model.DB2Schema)2 DB2TableBase (org.jkiss.dbeaver.ext.db2.model.DB2TableBase)2 DBException (org.jkiss.dbeaver.DBException)1 DB2ObjectType (org.jkiss.dbeaver.ext.db2.editors.DB2ObjectType)1 DB2DataSource (org.jkiss.dbeaver.ext.db2.model.DB2DataSource)1 DB2Package (org.jkiss.dbeaver.ext.db2.model.DB2Package)1 DB2Routine (org.jkiss.dbeaver.ext.db2.model.DB2Routine)1 DB2Sequence (org.jkiss.dbeaver.ext.db2.model.DB2Sequence)1 DB2TableColumn (org.jkiss.dbeaver.ext.db2.model.DB2TableColumn)1 DB2Tablespace (org.jkiss.dbeaver.ext.db2.model.DB2Tablespace)1 DB2Variable (org.jkiss.dbeaver.ext.db2.model.DB2Variable)1 DB2XMLSchema (org.jkiss.dbeaver.ext.db2.model.DB2XMLSchema)1 DB2RoutineType (org.jkiss.dbeaver.ext.db2.model.dict.DB2RoutineType)1 DB2Module (org.jkiss.dbeaver.ext.db2.model.module.DB2Module)1 DBRProgressMonitor (org.jkiss.dbeaver.model.runtime.DBRProgressMonitor)1