Search in sources :

Example 1 with DB2Schema

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

the class DB2TriggerCache method fetchObject.

@Override
protected DB2Trigger fetchObject(@NotNull JDBCSession session, @NotNull DB2Schema db2Schema, @NotNull JDBCResultSet dbResult) throws SQLException, DBException {
    // Look for related table
    String tableSchemaName = JDBCUtils.safeGetStringTrimmed(dbResult, "TABSCHEMA");
    String tableName = JDBCUtils.safeGetStringTrimmed(dbResult, "TABNAME");
    DB2Table db2Table = DB2Utils.findTableBySchemaNameAndName(session.getProgressMonitor(), db2Schema.getDataSource(), tableSchemaName, tableName);
    return new DB2Trigger(session.getProgressMonitor(), db2Schema, db2Table, dbResult);
}
Also used : DB2Table(org.jkiss.dbeaver.ext.db2.model.DB2Table) DB2Trigger(org.jkiss.dbeaver.ext.db2.model.DB2Trigger)

Example 2 with DB2Schema

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

the class DB2Utils method findColumnBySchemaNameAndTableNameAndName.

public static DB2TableColumn findColumnBySchemaNameAndTableNameAndName(DBRProgressMonitor monitor, DB2DataSource db2DataSource, String db2SchemaName, String db2TableName, String db2ColumnName) throws DBException {
    DB2Schema db2Schema = db2DataSource.getSchema(monitor, db2SchemaName);
    if (db2Schema == null) {
        return null;
    }
    DB2Table db2Table = db2Schema.getTable(monitor, db2TableName);
    if (db2Table == null) {
        return null;
    }
    return db2Table.getAttribute(monitor, db2ColumnName);
}
Also used : DB2Table(org.jkiss.dbeaver.ext.db2.model.DB2Table) DB2Schema(org.jkiss.dbeaver.ext.db2.model.DB2Schema)

Example 3 with DB2Schema

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

the class DB2StructureAssistant method findObjectsByMask.

@NotNull
@Override
public List<DBSObjectReference> findObjectsByMask(DBRProgressMonitor monitor, DBSObject parentObject, DBSObjectType[] objectTypes, String objectNameMask, boolean caseSensitive, boolean globalSearch, int maxResults) throws DBException {
    LOG.debug(objectNameMask);
    List<DB2ObjectType> db2ObjectTypes = new ArrayList<>(objectTypes.length);
    for (DBSObjectType dbsObjectType : objectTypes) {
        db2ObjectTypes.add((DB2ObjectType) dbsObjectType);
    }
    DB2Schema schema = parentObject instanceof DB2Schema ? (DB2Schema) parentObject : null;
    if (schema == null && !globalSearch) {
        schema = dataSource.getDefaultObject();
    }
    try (JDBCSession session = DBUtils.openMetaSession(monitor, dataSource, "Find objects by name")) {
        return searchAllObjects(session, schema, objectNameMask, db2ObjectTypes, caseSensitive, maxResults);
    } catch (SQLException ex) {
        throw new DBException(ex, dataSource);
    }
}
Also used : JDBCSession(org.jkiss.dbeaver.model.exec.jdbc.JDBCSession) DBException(org.jkiss.dbeaver.DBException) SQLException(java.sql.SQLException) DBSObjectType(org.jkiss.dbeaver.model.struct.DBSObjectType) ArrayList(java.util.ArrayList) DB2Schema(org.jkiss.dbeaver.ext.db2.model.DB2Schema) NotNull(org.jkiss.code.NotNull)

Example 4 with DB2Schema

use of org.jkiss.dbeaver.ext.db2.model.DB2Schema 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 5 with DB2Schema

use of org.jkiss.dbeaver.ext.db2.model.DB2Schema 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

DB2Schema (org.jkiss.dbeaver.ext.db2.model.DB2Schema)6 DB2Table (org.jkiss.dbeaver.ext.db2.model.DB2Table)3 JDBCPreparedStatement (org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement)3 DBException (org.jkiss.dbeaver.DBException)2 DB2DataSource (org.jkiss.dbeaver.ext.db2.model.DB2DataSource)2 DB2Index (org.jkiss.dbeaver.ext.db2.model.DB2Index)2 DB2TableBase (org.jkiss.dbeaver.ext.db2.model.DB2TableBase)2 JDBCResultSet (org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet)2 SQLException (java.sql.SQLException)1 ArrayList (java.util.ArrayList)1 NotNull (org.jkiss.code.NotNull)1 DB2ObjectType (org.jkiss.dbeaver.ext.db2.editors.DB2ObjectType)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 DB2Trigger (org.jkiss.dbeaver.ext.db2.model.DB2Trigger)1 DB2Variable (org.jkiss.dbeaver.ext.db2.model.DB2Variable)1 DB2View (org.jkiss.dbeaver.ext.db2.model.DB2View)1