Package com.dci.intellij.dbn.connection.transaction.ui

Source Code of com.dci.intellij.dbn.connection.transaction.ui.IdleConnectionDialog$KeepAliveAction

package com.dci.intellij.dbn.connection.transaction.ui;

import com.dci.intellij.dbn.common.Icons;
import com.dci.intellij.dbn.common.ui.dialog.DialogWithTimeout;
import com.dci.intellij.dbn.common.util.TimeUtil;
import com.dci.intellij.dbn.connection.ConnectionHandler;
import com.dci.intellij.dbn.connection.transaction.DatabaseTransactionManager;
import com.dci.intellij.dbn.connection.transaction.TransactionAction;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JComponent;
import java.awt.event.ActionEvent;

public class IdleConnectionDialog extends DialogWithTimeout {
    private IdleConnectionDialogForm idleConnectionDialogForm;
    private ConnectionHandler connectionHandler;

    public IdleConnectionDialog(ConnectionHandler connectionHandler) {
        super(connectionHandler.getProject(), "Idle connection", true, TimeUtil.getSeconds(5));
        this.connectionHandler = connectionHandler;
        idleConnectionDialogForm = new IdleConnectionDialogForm(connectionHandler, 5);
        setModal(false);
        init();
    }


    @Override
    protected JComponent createContentComponent() {
        return idleConnectionDialogForm.getComponent();
    }

    @Override
    public void doDefaultAction() {
        rollback();
    }

    @Override
    protected void doOKAction() {
        ConnectionHandler handler = connectionHandler;
        super.doOKAction();
        handler.getConnectionStatus().setResolvingIdleStatus(false);
    }

    @Override
    public void doCancelAction() {
        ping();
    }

    protected String getDimensionServiceKey() {
        return "DBNavigator.IdleConnectionDialog";
    }

    @NotNull
    protected final Action[] createActions() {
        return new Action[]{
                new CommitAction(),
                new RollbackAction(),
                new KeepAliveAction(),
                getHelpAction()
        };
    }

    private class CommitAction extends AbstractAction {
        public CommitAction() {
            super("Commit", Icons.CONNECTION_COMMIT);
        }

        public void actionPerformed(ActionEvent e) {
            commit();
        }
    }

    private class RollbackAction extends AbstractAction {
        public RollbackAction() {
            super("Rollback", Icons.CONNECTION_ROLLBACK);
        }
        public void actionPerformed(ActionEvent e) {
            rollback();
        }

    }
    private class KeepAliveAction extends AbstractAction {
        public KeepAliveAction() {
            super("Keep Alive");
        }

        public void actionPerformed(ActionEvent e) {
            ping();
        }
    }

    private void commit() {
        ConnectionHandler handler = connectionHandler;
        DatabaseTransactionManager transactionManager = getTransactionManager();
        doOKAction();
        transactionManager.execute(handler, true, TransactionAction.COMMIT, TransactionAction.DISCONNECT_IDLE);
    }

    private void rollback() {
        ConnectionHandler handler = connectionHandler;
        DatabaseTransactionManager transactionManager = getTransactionManager();
        doOKAction();
        transactionManager.execute(handler, true, TransactionAction.ROLLBACK_IDLE, TransactionAction.DISCONNECT_IDLE);
    }

    private void ping() {
        ConnectionHandler handler = connectionHandler;
        DatabaseTransactionManager transactionManager = getTransactionManager();
        doOKAction();
        transactionManager.execute(handler, true, TransactionAction.PING);
    }

    private DatabaseTransactionManager getTransactionManager() {
        Project project = getProject();
        return DatabaseTransactionManager.getInstance(project);
    }

    @Override
    public void dispose() {
        if (!isDisposed()) {
            super.dispose();
            connectionHandler = null;
        }
    }
}
TOP

Related Classes of com.dci.intellij.dbn.connection.transaction.ui.IdleConnectionDialog$KeepAliveAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.