提交 bdb4a49f 编写于 作者: K Karl Grießer

Enable/Disable Constraint on create

Former-commit-id: 4a4b400e
上级 8156ba4d
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
* Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.ext.oracle.edit;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.oracle.OracleMessages;
import org.jkiss.dbeaver.ext.oracle.model.*;
import org.jkiss.dbeaver.model.edit.DBECommandContext;
import org.jkiss.dbeaver.model.impl.DBSObjectCache;
import org.jkiss.dbeaver.model.impl.sql.edit.struct.SQLConstraintManager;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSEntityAttribute;
import org.jkiss.dbeaver.model.struct.DBSEntityConstraintType;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.ui.UITask;
import org.jkiss.dbeaver.ui.editors.object.struct.EditConstraintPage;
/**
* Oracle constraint manager
*/
public class OracleConstraintManager extends SQLConstraintManager<OracleTableConstraint, OracleTableBase> {
@Nullable
@Override
public DBSObjectCache<? extends DBSObject, OracleTableConstraint> getObjectsCache(OracleTableConstraint object)
{
return object.getParentObject().getSchema().constraintCache;
}
@Override
protected OracleTableConstraint createDatabaseObject(
DBRProgressMonitor monitor, DBECommandContext context, final OracleTableBase parent,
Object from)
{
return new UITask<OracleTableConstraint>() {
@Override
protected OracleTableConstraint runTask() {
EditConstraintPage editPage = new EditConstraintPage(
OracleMessages.edit_oracle_constraint_manager_dialog_title,
parent,
new DBSEntityConstraintType[] {
DBSEntityConstraintType.PRIMARY_KEY,
DBSEntityConstraintType.UNIQUE_KEY });
if (!editPage.edit()) {
return null;
}
final OracleTableConstraint constraint = new OracleTableConstraint(
parent,
editPage.getConstraintName(),
editPage.getConstraintType(),
null,
OracleObjectStatus.ENABLED);
int colIndex = 1;
for (DBSEntityAttribute tableColumn : editPage.getSelectedAttributes()) {
constraint.addColumn(
new OracleTableConstraintColumn(
constraint,
(OracleTableColumn) tableColumn,
colIndex++));
}
return constraint;
}
}.execute();
}
@Override
protected String getDropConstraintPattern(OracleTableConstraint constraint)
{
String clause;
if (constraint.getConstraintType() == DBSEntityConstraintType.PRIMARY_KEY) {
clause = "PRIMARY KEY"; //$NON-NLS-1$
} else {
clause = "CONSTRAINT"; //$NON-NLS-1$
}
return "ALTER TABLE " + PATTERN_ITEM_TABLE +" DROP " + clause + " " + PATTERN_ITEM_CONSTRAINT; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@NotNull
protected String getAddConstraintTypeClause(OracleTableConstraint constraint) {
if (constraint.getConstraintType() == DBSEntityConstraintType.UNIQUE_KEY) {
return "UNIQUE"; //$NON-NLS-1$
}
return super.getAddConstraintTypeClause(constraint);
}
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
* Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.ext.oracle.edit;
import java.util.List;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.oracle.OracleMessages;
import org.jkiss.dbeaver.ext.oracle.model.*;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.edit.DBECommandContext;
import org.jkiss.dbeaver.model.edit.DBEPersistAction;
import org.jkiss.dbeaver.model.impl.DBSObjectCache;
import org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction;
import org.jkiss.dbeaver.model.impl.sql.edit.SQLObjectEditor;
import org.jkiss.dbeaver.model.impl.sql.edit.struct.SQLConstraintManager;
import org.jkiss.dbeaver.model.messages.ModelMessages;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSEntityAttribute;
import org.jkiss.dbeaver.model.struct.DBSEntityConstraintType;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.ui.UITask;
import org.jkiss.dbeaver.ui.editors.object.struct.EditConstraintPage;
/**
* Oracle constraint manager
*/
public class OracleConstraintManager extends SQLConstraintManager<OracleTableConstraint, OracleTableBase> {
@Nullable
@Override
public DBSObjectCache<? extends DBSObject, OracleTableConstraint> getObjectsCache(OracleTableConstraint object)
{
return object.getParentObject().getSchema().constraintCache;
}
@Override
protected OracleTableConstraint createDatabaseObject(
DBRProgressMonitor monitor, DBECommandContext context, final OracleTableBase parent,
Object from)
{
return new UITask<OracleTableConstraint>() {
@Override
protected OracleTableConstraint runTask() {
EditConstraintPage editPage = new EditConstraintPage(
OracleMessages.edit_oracle_constraint_manager_dialog_title,
parent,
new DBSEntityConstraintType[] {
DBSEntityConstraintType.PRIMARY_KEY,
DBSEntityConstraintType.UNIQUE_KEY },
true
);
if (!editPage.edit()) {
return null;
}
final OracleTableConstraint constraint = new OracleTableConstraint(
parent,
editPage.getConstraintName(),
editPage.getConstraintType(),
null,
editPage.isEnableConstraint() ? OracleObjectStatus.ENABLED : OracleObjectStatus.DISABLED);
int colIndex = 1;
for (DBSEntityAttribute tableColumn : editPage.getSelectedAttributes()) {
constraint.addColumn(
new OracleTableConstraintColumn(
constraint,
(OracleTableColumn) tableColumn,
colIndex++));
}
return constraint;
}
}.execute();
}
@Override
protected String getDropConstraintPattern(OracleTableConstraint constraint)
{
String clause;
if (constraint.getConstraintType() == DBSEntityConstraintType.PRIMARY_KEY) {
clause = "PRIMARY KEY"; //$NON-NLS-1$
} else {
clause = "CONSTRAINT"; //$NON-NLS-1$
}
return "ALTER TABLE " + PATTERN_ITEM_TABLE +" DROP " + clause + " " + PATTERN_ITEM_CONSTRAINT; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@NotNull
protected String getAddConstraintTypeClause(OracleTableConstraint constraint) {
if (constraint.getConstraintType() == DBSEntityConstraintType.UNIQUE_KEY) {
return "UNIQUE"; //$NON-NLS-1$
}
return super.getAddConstraintTypeClause(constraint);
}
@Override
protected void addObjectCreateActions(List<DBEPersistAction> actions,
SQLObjectEditor<OracleTableConstraint, OracleTableBase>.ObjectCreateCommand command)
{
OracleTableConstraint constraint = (OracleTableConstraint) command.getObject();
OracleTableBase table = constraint.getTable();
actions.add(
new SQLDatabasePersistAction(
ModelMessages.model_jdbc_create_new_constraint,
"ALTER TABLE " + table.getFullyQualifiedName(DBPEvaluationContext.DDL) + " ADD " + getNestedDeclaration(table, command) +
" " + (constraint.getStatus() == OracleObjectStatus.ENABLED ? "ENABLE" : "DISABLE" )
));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册