Search in sources :

Example 1 with MySQLTableColumn

use of org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn in project dbeaver by serge-rider.

the class MySQLTableColumnManager method getNestedDeclaration.

@Override
public StringBuilder getNestedDeclaration(MySQLTableBase owner, DBECommandAbstract<MySQLTableColumn> command) {
    StringBuilder decl = super.getNestedDeclaration(owner, command);
    final MySQLTableColumn column = command.getObject();
    if (!CommonUtils.isEmpty(column.getExtraInfo())) {
        //$NON-NLS-1$
        decl.append(" ").append(column.getExtraInfo());
    }
    if (column.isAutoGenerated() && (CommonUtils.isEmpty(column.getExtraInfo()) || !column.getExtraInfo().toLowerCase(Locale.ENGLISH).contains(MySQLConstants.EXTRA_AUTO_INCREMENT))) {
        //$NON-NLS-1$
        decl.append(" AUTO_INCREMENT");
    }
    if (!CommonUtils.isEmpty(column.getComment())) {
        //$NON-NLS-1$ //$NON-NLS-2$
        decl.append(" COMMENT '").append(escapeComment(column.getComment())).append("'");
    }
    return decl;
}
Also used : MySQLTableColumn(org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn)

Example 2 with MySQLTableColumn

use of org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn in project dbeaver by serge-rider.

the class MySQLTableColumnManager method addObjectReorderActions.

@Override
protected void addObjectReorderActions(List<DBEPersistAction> actions, ObjectReorderCommand command) {
    final MySQLTableColumn column = command.getObject();
    String order = "FIRST";
    if (column.getOrdinalPosition() > 0) {
        for (MySQLTableColumn col : command.getObject().getTable().getCachedAttributes()) {
            if (col.getOrdinalPosition() == column.getOrdinalPosition() - 1) {
                order = "AFTER " + DBUtils.getQuotedIdentifier(col);
                break;
            }
        }
    }
    actions.add(new SQLDatabasePersistAction("Reorder column", "ALTER TABLE " + column.getTable().getFullyQualifiedName(DBPEvaluationContext.DDL) + " CHANGE " + DBUtils.getQuotedIdentifier(command.getObject()) + " " + getNestedDeclaration(column.getTable(), command) + " " + order));
}
Also used : MySQLTableColumn(org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn) SQLDatabasePersistAction(org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction)

Example 3 with MySQLTableColumn

use of org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn in project dbeaver by dbeaver.

the class MySQLTableColumnManager method addObjectReorderActions.

@Override
protected void addObjectReorderActions(List<DBEPersistAction> actions, ObjectReorderCommand command, Map<String, Object> options) {
    final MySQLTableColumn column = command.getObject();
    String order = "FIRST";
    if (column.getOrdinalPosition() > 0) {
        for (MySQLTableColumn col : command.getObject().getTable().getCachedAttributes()) {
            if (col.getOrdinalPosition() == column.getOrdinalPosition() - 1) {
                order = "AFTER " + DBUtils.getQuotedIdentifier(col);
                break;
            }
        }
    }
    actions.add(new SQLDatabasePersistAction("Reorder column", "ALTER TABLE " + column.getTable().getFullyQualifiedName(DBPEvaluationContext.DDL) + " CHANGE " + DBUtils.getQuotedIdentifier(command.getObject()) + " " + getNestedDeclaration(column.getTable(), command, options) + " " + order));
}
Also used : MySQLTableColumn(org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn) SQLDatabasePersistAction(org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction)

Example 4 with MySQLTableColumn

use of org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn in project dbeaver by serge-rider.

the class MySQLForeignKeyConfigurator method configureObject.

@Override
public MySQLTableForeignKey configureObject(DBRProgressMonitor monitor, Object table, MySQLTableForeignKey foreignKey) {
    return UITask.run(() -> {
        EditForeignKeyPage editPage = new EditForeignKeyPage(MySQLUIMessages.edit_foreign_key_manager_title, foreignKey, new DBSForeignKeyModifyRule[] { DBSForeignKeyModifyRule.NO_ACTION, DBSForeignKeyModifyRule.CASCADE, DBSForeignKeyModifyRule.RESTRICT, DBSForeignKeyModifyRule.SET_NULL, DBSForeignKeyModifyRule.SET_DEFAULT });
        if (!editPage.edit()) {
            return null;
        }
        foreignKey.setReferencedKey((MySQLTableConstraint) editPage.getUniqueConstraint());
        foreignKey.setDeleteRule(editPage.getOnDeleteRule());
        foreignKey.setUpdateRule(editPage.getOnUpdateRule());
        int colIndex = 1;
        for (EditForeignKeyPage.FKColumnInfo tableColumn : editPage.getColumns()) {
            foreignKey.addColumn(new MySQLTableForeignKeyColumn(foreignKey, (MySQLTableColumn) tableColumn.getOwnColumn(), colIndex++, (MySQLTableColumn) tableColumn.getRefColumn()));
        }
        return foreignKey;
    });
}
Also used : MySQLTableForeignKeyColumn(org.jkiss.dbeaver.ext.mysql.model.MySQLTableForeignKeyColumn) EditForeignKeyPage(org.jkiss.dbeaver.ui.editors.object.struct.EditForeignKeyPage) MySQLTableColumn(org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn) MySQLTableConstraint(org.jkiss.dbeaver.ext.mysql.model.MySQLTableConstraint)

Example 5 with MySQLTableColumn

use of org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn in project dbeaver by serge-rider.

the class MySQLIndexConfigurator method configureObject.

@Override
public MySQLTableIndex configureObject(DBRProgressMonitor monitor, Object parent, MySQLTableIndex index) {
    return UITask.run(() -> {
        MyEditIndexPage editPage = new MyEditIndexPage(index);
        if (!editPage.edit()) {
            return null;
        }
        StringBuilder idxName = new StringBuilder(64);
        idxName.append(CommonUtils.escapeIdentifier(index.getParentObject().getName()));
        int colIndex = 1;
        for (DBSEntityAttribute tableColumn : editPage.getSelectedAttributes()) {
            if (colIndex == 1) {
                // $NON-NLS-1$
                idxName.append("_").append(CommonUtils.escapeIdentifier(tableColumn.getName()));
            }
            Integer length = (Integer) editPage.getAttributeProperty(tableColumn, MyEditIndexPage.PROP_LENGTH);
            index.addColumn(new MySQLTableIndexColumn(index, (MySQLTableColumn) tableColumn, colIndex++, !Boolean.TRUE.equals(editPage.getAttributeProperty(tableColumn, EditIndexPage.PROP_DESC)), false, length == null ? null : String.valueOf(length)));
        }
        // $NON-NLS-1$
        idxName.append("_IDX");
        index.setName(DBObjectNameCaseTransformer.transformObjectName(index, idxName.toString()));
        index.setName(idxName.toString());
        index.setIndexType(editPage.getIndexType());
        index.setUnique(editPage.isUnique());
        return index;
    });
}
Also used : MySQLTableIndexColumn(org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndexColumn) DBSEntityAttribute(org.jkiss.dbeaver.model.struct.DBSEntityAttribute) MySQLTableColumn(org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn)

Aggregations

MySQLTableColumn (org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn)24 SQLDatabasePersistAction (org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction)12 DBSEntityAttribute (org.jkiss.dbeaver.model.struct.DBSEntityAttribute)6 MySQLTableConstraint (org.jkiss.dbeaver.ext.mysql.model.MySQLTableConstraint)4 MySQLDataSource (org.jkiss.dbeaver.ext.mysql.model.MySQLDataSource)2 MySQLTable (org.jkiss.dbeaver.ext.mysql.model.MySQLTable)2 MySQLTableConstraintColumn (org.jkiss.dbeaver.ext.mysql.model.MySQLTableConstraintColumn)2 MySQLTableForeignKeyColumn (org.jkiss.dbeaver.ext.mysql.model.MySQLTableForeignKeyColumn)2 MySQLTableIndexColumn (org.jkiss.dbeaver.ext.mysql.model.MySQLTableIndexColumn)2 DBSDataType (org.jkiss.dbeaver.model.struct.DBSDataType)2 DBSEntityConstraintType (org.jkiss.dbeaver.model.struct.DBSEntityConstraintType)2 EditConstraintPage (org.jkiss.dbeaver.ui.editors.object.struct.EditConstraintPage)2 EditForeignKeyPage (org.jkiss.dbeaver.ui.editors.object.struct.EditForeignKeyPage)2