提交 707015d2 编写于 作者: S Serge Rider

#6473 Validate container type (only tables containers allowed)


Former-commit-id: cf587cf7
上级 0b90757a
......@@ -624,7 +624,8 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
rootNode,
selectedNode,
new Class[] {DBSObjectContainer.class, DBSDataManipulator.class},
new Class[] {DBSDataManipulator.class}, null);
new Class[] {DBSDataManipulator.class},
null);
if (node != null && node instanceof DBSWrapper) {
DBSObject object = ((DBSWrapper) node).getObject();
try {
......
......@@ -79,7 +79,8 @@ public class EntityAddCommand extends Command
dsNode,
null,
new Class[]{DBSTable.class},
new Class[]{DBSTable.class}, null);
new Class[]{DBSTable.class},
null);
if (tableNode instanceof DBNDatabaseNode && ((DBNDatabaseNode) tableNode).getObject() instanceof DBSEntity) {
entity = ERDUtils.makeEntityFromObject(
monitor,
......
......@@ -33,11 +33,14 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.DBPObject;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.navigator.DBNProject;
import org.jkiss.dbeaver.model.navigator.*;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeItem;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSEntity;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.model.struct.DBSObjectContainer;
import org.jkiss.dbeaver.model.struct.rdb.DBSSchema;
import org.jkiss.dbeaver.runtime.DBWorkbench;
......@@ -129,12 +132,29 @@ public abstract class ObjectContainerSelectorPanel extends Composite
rootNode.getDatabases(),
selectedNode,
new Class[]{DBSObjectContainer.class},
null,//new Class[] { DBSObjectContainer.class },
new Class[]{DBSSchema.class});
new Class[] { DBSObjectContainer.class },
new Class[]{ DBSSchema.class });
if (node instanceof DBNDatabaseNode) {
setSelectedNode((DBNDatabaseNode) node);
addNodeToHistory((DBNDatabaseNode) node);
saveHistory();
DBPObject nodeObject = DBUtils.getPublicObject(((DBNDatabaseNode) node).getObject());
if (nodeObject instanceof DBSObjectContainer) {
try {
Class<?> childrenClass = ((DBSObjectContainer) nodeObject).getChildType(new VoidProgressMonitor());
if (childrenClass != null) {
if (!DBSEntity.class.isAssignableFrom(childrenClass)) {
// Upper level of container
UIUtils.showMessageBox(getShell(),"Bad container node", "You can select only table container (e.g. schema).", SWT.ICON_ERROR);
} else {
setSelectedNode((DBNDatabaseNode) node);
addNodeToHistory((DBNDatabaseNode) node);
saveHistory();
}
} else {
throw new DBException("Can't determine container child objects");
}
} catch (DBException e) {
DBWorkbench.getPlatformUI().showError("Bad container node", "Error determining container elements type", e);
}
}
}
}
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册