提交 2192ec49 编写于 作者: S Serge Rider

#91 Reorder command merge. Rename command merge.

上级 22ae5c7b
......@@ -165,6 +165,26 @@ public class MySQLTableColumnManager extends SQLTableColumnManager<MySQLTableCol
getNestedDeclaration(column.getTable(), command)));
}
@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));
}
///////////////////////////////////////////////
// Reorder
......
......@@ -379,6 +379,20 @@ public abstract class SQLObjectEditor<OBJECT_TYPE extends DBSObject, CONTAINER_T
addObjectRenameActions(actions, this);
return actions.toArray(new DBEPersistAction[actions.size()]);
}
@Override
public DBECommand<?> merge(DBECommand<?> prevCommand, Map<Object, Object> userParams) {
// We need very first and very last rename commands. They produce final rename
ObjectRenameCommand renameCmd = (ObjectRenameCommand) userParams.get("rename");
if (renameCmd == null) {
renameCmd = new ObjectRenameCommand(getObject(), getTitle(), newName);
userParams.put("rename", renameCmd);
} else {
renameCmd.newName = newName;
return renameCmd;
}
return super.merge(prevCommand, userParams);
}
}
public class RenameObjectReflector implements DBECommandReflector<OBJECT_TYPE, ObjectRenameCommand> {
......@@ -436,6 +450,19 @@ public abstract class SQLObjectEditor<OBJECT_TYPE extends DBSObject, CONTAINER_T
return actions.toArray(new DBEPersistAction[actions.size()]);
}
@Override
public DBECommand<?> merge(DBECommand<?> prevCommand, Map<Object, Object> userParams) {
// We need very first and very last reorder commands. They produce final rename
ObjectReorderCommand reorderCmd = (ObjectReorderCommand) userParams.get("reorder");
if (reorderCmd == null) {
reorderCmd = new ObjectReorderCommand(getObject(), siblings, getTitle(), newPosition);
userParams.put("reorder", reorderCmd);
} else {
reorderCmd.newPosition = newPosition;
return reorderCmd;
}
return super.merge(prevCommand, userParams);
}
}
public class ReorderObjectReflector implements DBECommandReflector<OBJECT_TYPE, ObjectReorderCommand> {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册