提交 86b39e0b 编写于 作者: S serge-rider

#3492 SQLServer: drop triggers


Former-commit-id: 40432679
上级 c037ebb5
......@@ -80,6 +80,7 @@ meta.org.jkiss.dbeaver.ext.generic.model.GenericSequence.incrementBy.name=Increm
meta.org.jkiss.dbeaver.ext.generic.model.GenericTrigger.name.name=Name
meta.org.jkiss.dbeaver.ext.generic.model.GenericTrigger.description.name=Description
meta.org.jkiss.dbeaver.ext.generic.model.GenericTrigger.table.name=Table
meta.org.jkiss.dbeaver.ext.generic.model.GenericTrigger.objectDefinitionText.name=Source
meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.name.name=Name
meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.precision.name=Precision
meta.org.jkiss.dbeaver.ext.generic.model.GenericDataType.description.name=Description
......
......@@ -474,4 +474,7 @@ public class GenericTable extends JDBCTable<GenericDataSource, GenericStructCont
}
}
public List<? extends GenericTrigger> getTriggerCache() {
return triggers;
}
}
......@@ -226,6 +226,9 @@
<manager
class="org.jkiss.dbeaver.ext.mssql.edit.SQLServerProcedureManager"
objectType="org.jkiss.dbeaver.ext.mssql.model.SQLServerProcedure"/>
<manager
class="org.jkiss.dbeaver.ext.mssql.edit.SQLServerTriggerManager"
objectType="org.jkiss.dbeaver.ext.mssql.model.SQLServerTrigger"/>
</extension>
</plugin>
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org)
*
* 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.mssql.edit;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.mssql.model.SQLServerTable;
import org.jkiss.dbeaver.ext.mssql.model.SQLServerTrigger;
import org.jkiss.dbeaver.model.DBUtils;
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.ListCache;
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.SQLTriggerManager;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSObject;
import java.util.List;
import java.util.Map;
/**
* SQLServerTableTriggerManager
*/
public class SQLServerTriggerManager extends SQLTriggerManager<SQLServerTrigger, SQLServerTable> {
@Override
public boolean canCreateObject(SQLServerTable parent) {
return false;
}
@Override
public boolean canEditObject(SQLServerTrigger object) {
return false;
}
@Nullable
@Override
public DBSObjectCache<? extends DBSObject, SQLServerTrigger> getObjectsCache(SQLServerTrigger object)
{
return new ListCache<SQLServerTable, SQLServerTrigger>(
(List<SQLServerTrigger>) object.getTable().getTriggerCache());
}
@Override
protected SQLServerTrigger createDatabaseObject(DBRProgressMonitor monitor, DBECommandContext context, final SQLServerTable parent, Object copyFrom)
{
return null;
}
protected void createOrReplaceTriggerQuery(List<DBEPersistAction> actions, SQLServerTrigger trigger) {
}
@Override
protected void addObjectDeleteActions(List<DBEPersistAction> actions, ObjectDeleteCommand command, Map<String, Object> options) {
SQLServerTrigger trigger = command.getObject();
DBSObject defaultDatabase = trigger.getDataSource().getDefaultObject();
if (defaultDatabase != trigger.getTable().getCatalog()) {
actions.add(new SQLDatabasePersistAction("Set current database", "USE " + DBUtils.getQuotedIdentifier(trigger.getTable().getCatalog()), false)); //$NON-NLS-2$
}
super.addObjectDeleteActions(actions, command, options);
if (defaultDatabase != trigger.getTable().getCatalog()) {
actions.add(new SQLDatabasePersistAction("Set current schema ", "USE " + DBUtils.getQuotedIdentifier(defaultDatabase), false)); //$NON-NLS-2$
}
}
}
......@@ -24,7 +24,7 @@ import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.struct.rdb.DBSIndexType;
/**
* Query transformer for TOP
* SEL Server index
*/
public class SQLServerIndex extends GenericTableIndex {
......
......@@ -118,7 +118,7 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran
}
@Override
public List<? extends GenericTrigger> loadTriggers(DBRProgressMonitor monitor, @NotNull GenericStructContainer container, @Nullable GenericTable table) throws DBException {
public List<GenericTrigger> loadTriggers(DBRProgressMonitor monitor, @NotNull GenericStructContainer container, @Nullable GenericTable table) throws DBException {
try (JDBCSession session = DBUtils.openMetaSession(monitor, container.getDataSource(), "Read triggers")) {
String schema = getSystemSchemaFQN(container.getDataSource(), container.getCatalog());
StringBuilder query = new StringBuilder("SELECT triggers.name FROM " + schema + ".sysobjects triggers");
......@@ -157,7 +157,7 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran
continue;
}
name = name.trim();
GenericTrigger trigger = new GenericTrigger(container, table, name, null);
SQLServerTrigger trigger = new SQLServerTrigger(container, table, name, null);
result.add(trigger);
}
}
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2018 Serge Rider (serge@jkiss.org)
*
* 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.mssql.model;
import org.jkiss.dbeaver.ext.generic.model.GenericStructContainer;
import org.jkiss.dbeaver.ext.generic.model.GenericTable;
import org.jkiss.dbeaver.ext.generic.model.GenericTrigger;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBPQualifiedObject;
import org.jkiss.dbeaver.model.DBUtils;
/**
* SQL server trigger
*/
public class SQLServerTrigger extends GenericTrigger implements DBPQualifiedObject {
public SQLServerTrigger(GenericStructContainer container, GenericTable table, String name, String description) {
super(container, table, name, description);
}
@Override
public SQLServerTable getTable() {
return (SQLServerTable) super.getTable();
}
@Override
public String getFullyQualifiedName(DBPEvaluationContext context) {
return DBUtils.getFullQualifiedName(getDataSource(),
getTable().getSchema(),
this);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册