提交 40cdac06 编写于 作者: S serge-rider

#3049 Fix session manager initialization. Session manager code refactoring (generics)

上级 084d0a77
......@@ -19,14 +19,10 @@ package org.jkiss.dbeaver.ui.views.session;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IContributionManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
......@@ -57,7 +53,7 @@ import java.util.Map;
/**
* SessionManagerViewer
*/
public class SessionManagerViewer
public class SessionManagerViewer<SESSION_TYPE extends DBAServerSession>
{
private SessionListControl sessionTable;
//private Text sessionInfo;
......@@ -75,7 +71,7 @@ public class SessionManagerViewer
UIUtils.dispose(boldFont);
}
public SessionManagerViewer(IWorkbenchPart part, Composite parent, final DBAServerSessionManager sessionManager) {
protected SessionManagerViewer(IWorkbenchPart part, Composite parent, final DBAServerSessionManager<SESSION_TYPE> sessionManager) {
this.subSite = new SubEditorSite(part.getSite());
boldFont = UIUtils.makeBoldFont(parent.getFont());
Composite composite = UIUtils.createPlaceholder(parent, 1);
......@@ -86,13 +82,7 @@ public class SessionManagerViewer
refreshControl = new AutoRefreshControl(sash, sessionManager.getClass().getSimpleName(), monitor -> DBeaverUI.syncExec(this::refreshSessions));
sessionTable = new SessionListControl(sash, part.getSite(), sessionManager);
sessionTable.getItemsViewer().addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event)
{
onSessionSelect(getSelectedSession());
}
});
sessionTable.getItemsViewer().addSelectionChangedListener(event -> onSessionSelect(getSelectedSession()));
sessionTable.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
sessionTable.createProgressPanel(composite);
......@@ -125,13 +115,7 @@ public class SessionManagerViewer
sqlViewer.reloadSyntaxRules();
parent.addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e)
{
sqlViewer.dispose();
}
});
parent.addDisposeListener(e -> sqlViewer.dispose());
sessionProps = new PropertyTreeViewer(infoSash, SWT.BORDER);
......@@ -181,14 +165,22 @@ public class SessionManagerViewer
refreshControl.scheduleAutoRefresh(false);
}
public void alterSession(final DBAServerSession session, Map<String, Object> options) {
public void alterSession(final SESSION_TYPE session, Map<String, Object> options) {
sessionTable.createAlterService(session, options).schedule();
}
protected void updateSQL() {
private void updateSQL() {
String text = curSession == null ? "" : CommonUtils.notEmpty(curSession.getActiveQuery());
StringEditorInput sqlInput = new StringEditorInput(sessionTable.getShell().getText(), text, true, GeneralUtils.getDefaultFileEncoding());
sqlViewer.setInput(sqlInput);
if (sqlViewer.getSite() == null) {
try {
sqlViewer.init(subSite, sqlInput);
} catch (PartInitException e) {
DBUserInterface.getInstance().showError(sessionTable.getShell().getText(), null, e);
}
} else {
sqlViewer.setInput(sqlInput);
}
if (sqlViewer.getTextViewer() != null) {
sqlViewer.reloadSyntaxRules();
}
......@@ -202,9 +194,9 @@ public class SessionManagerViewer
return null;
}
private class SessionListControl extends SessionTable {
private class SessionListControl extends SessionTable<SESSION_TYPE> {
public SessionListControl(SashForm sash, IWorkbenchSite site, DBAServerSessionManager<DBAServerSession> sessionManager)
SessionListControl(SashForm sash, IWorkbenchSite site, DBAServerSessionManager<SESSION_TYPE> sessionManager)
{
super(sash, SWT.SHEET, site, sessionManager);
}
......
......@@ -39,18 +39,18 @@ import java.util.Map;
/**
* Session table
*/
class SessionTable extends DatabaseObjectListControl<DBAServerSession> {
class SessionTable<SESSION_TYPE extends DBAServerSession> extends DatabaseObjectListControl<SESSION_TYPE> {
private DBAServerSessionManager<DBAServerSession> sessionManager;
private DBAServerSessionManager<SESSION_TYPE> sessionManager;
public SessionTable(Composite parent, int style, IWorkbenchSite site, DBAServerSessionManager<DBAServerSession> sessionManager)
SessionTable(Composite parent, int style, IWorkbenchSite site, DBAServerSessionManager<SESSION_TYPE> sessionManager)
{
super(parent, style, site, CONTENT_PROVIDER);
this.sessionManager = sessionManager;
//setFitWidth(true);
}
public DBAServerSessionManager<DBAServerSession> getSessionManager() {
public DBAServerSessionManager<SESSION_TYPE> getSessionManager() {
return sessionManager;
}
......@@ -61,21 +61,21 @@ class SessionTable extends DatabaseObjectListControl<DBAServerSession> {
}
@Override
protected LoadingJob<Collection<DBAServerSession>> createLoadService()
protected LoadingJob<Collection<SESSION_TYPE>> createLoadService()
{
return LoadingJob.createService(
new LoadSessionsService(),
new ObjectsLoadVisualizer());
}
protected LoadingJob<Void> createAlterService(DBAServerSession session, Map<String, Object> options)
LoadingJob<Void> createAlterService(SESSION_TYPE session, Map<String, Object> options)
{
return LoadingJob.createService(
new KillSessionService(session, options),
new ObjectActionVisualizer());
}
public void init(DBAServerSessionManager<DBAServerSession> sessionManager)
public void init(DBAServerSessionManager<SESSION_TYPE> sessionManager)
{
this.sessionManager = sessionManager;
}
......@@ -106,15 +106,15 @@ class SessionTable extends DatabaseObjectListControl<DBAServerSession> {
};
private class LoadSessionsService extends DatabaseLoadService<Collection<DBAServerSession>> {
private class LoadSessionsService extends DatabaseLoadService<Collection<SESSION_TYPE>> {
protected LoadSessionsService()
LoadSessionsService()
{
super("Load sessions", sessionManager.getDataSource());
}
@Override
public Collection<DBAServerSession> evaluate(DBRProgressMonitor monitor)
public Collection<SESSION_TYPE> evaluate(DBRProgressMonitor monitor)
throws InvocationTargetException, InterruptedException
{
try {
......@@ -130,10 +130,10 @@ class SessionTable extends DatabaseObjectListControl<DBAServerSession> {
}
private class KillSessionService extends DatabaseLoadService<Void> {
private final DBAServerSession session;
private final SESSION_TYPE session;
private final Map<String, Object> options;
protected KillSessionService(DBAServerSession session, Map<String, Object> options)
KillSessionService(SESSION_TYPE session, Map<String, Object> options)
{
super("Kill session", sessionManager.getDataSource());
this.session = session;
......
......@@ -53,7 +53,7 @@ public class DB2ServerApplicationEditor extends AbstractSessionEditor {
@Override
protected SessionManagerViewer createSessionViewer(DBCExecutionContext executionContext, Composite parent) {
return new SessionManagerViewer(this, parent, new DB2ServerApplicationManager((DB2DataSource) executionContext.getDataSource())) {
return new SessionManagerViewer<DB2ServerApplication>(this, parent, new DB2ServerApplicationManager((DB2DataSource) executionContext.getDataSource())) {
@Override
@SuppressWarnings("rawtypes")
......
......@@ -55,7 +55,7 @@ public class ExasolServerSessionEditor extends AbstractSessionEditor {
@Override
protected SessionManagerViewer createSessionViewer(DBCExecutionContext executionContext, Composite parent) {
return new SessionManagerViewer(this, parent, new ExasolServerSessionManager((ExasolDataSource) executionContext.getDataSource())) {
return new SessionManagerViewer<ExasolServerSession>(this, parent, new ExasolServerSessionManager((ExasolDataSource) executionContext.getDataSource())) {
@Override
@SuppressWarnings("rawtypes")
protected void contributeToToolbar(DBAServerSessionManager sessionManager, IContributionManager contributionManager) {
......
......@@ -31,6 +31,7 @@ import org.eclipse.ui.ISharedImages;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.mysql.MySQLMessages;
import org.jkiss.dbeaver.ext.mysql.model.MySQLDataSource;
import org.jkiss.dbeaver.ext.mysql.model.session.MySQLSession;
import org.jkiss.dbeaver.ext.mysql.model.session.MySQLSessionManager;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSession;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSessionManager;
......@@ -64,7 +65,7 @@ public class MySQLSessionEditor extends AbstractSessionEditor
@Override
protected SessionManagerViewer createSessionViewer(DBCExecutionContext executionContext, Composite parent) {
return new SessionManagerViewer(this, parent, new MySQLSessionManager((MySQLDataSource) executionContext.getDataSource())) {
return new SessionManagerViewer<MySQLSession>(this, parent, new MySQLSessionManager((MySQLDataSource) executionContext.getDataSource())) {
private boolean hideSleeping;
@Override
......
......@@ -25,6 +25,7 @@ import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Composite;
import org.jkiss.dbeaver.ext.oracle.OracleMessages;
import org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSession;
import org.jkiss.dbeaver.ext.oracle.model.session.OracleServerSessionManager;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSession;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSessionManager;
......@@ -55,7 +56,7 @@ public class OracleSessionEditor extends AbstractSessionEditor
@Override
protected SessionManagerViewer createSessionViewer(DBCExecutionContext executionContext, Composite parent) {
return new SessionManagerViewer(this, parent, new OracleServerSessionManager(getExecutionContext())) {
return new SessionManagerViewer<OracleServerSession>(this, parent, new OracleServerSessionManager(getExecutionContext())) {
@Override
protected void contributeToToolbar(DBAServerSessionManager sessionManager, IContributionManager contributionManager)
{
......@@ -76,7 +77,7 @@ public class OracleSessionEditor extends AbstractSessionEditor
private class DisconnectSessionAction extends Action {
private final boolean kill;
public DisconnectSessionAction(boolean kill)
DisconnectSessionAction(boolean kill)
{
super(
kill ? OracleMessages.editors_oracle_session_editor_title_kill_session : OracleMessages.editors_oracle_session_editor_title_disconnect_session,
......
......@@ -23,6 +23,7 @@ import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISharedImages;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource;
import org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSession;
import org.jkiss.dbeaver.ext.postgresql.model.session.PostgreSessionManager;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSession;
import org.jkiss.dbeaver.model.admin.sessions.DBAServerSessionManager;
......@@ -47,7 +48,7 @@ public class PostgreSessionEditor extends AbstractSessionEditor
@Override
protected SessionManagerViewer createSessionViewer(DBCExecutionContext executionContext, Composite parent) {
return new SessionManagerViewer(this, parent, new PostgreSessionManager((PostgreDataSource) executionContext.getDataSource())) {
return new SessionManagerViewer<PostgreSession>(this, parent, new PostgreSessionManager((PostgreDataSource) executionContext.getDataSource())) {
@Override
protected void contributeToToolbar(DBAServerSessionManager sessionManager, IContributionManager contributionManager)
{
......@@ -66,7 +67,7 @@ public class PostgreSessionEditor extends AbstractSessionEditor
private class KillSessionAction extends Action {
public KillSessionAction()
KillSessionAction()
{
super(
"Terminate",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册