Package com.dci.intellij.dbn.execution.method.result

Source Code of com.dci.intellij.dbn.execution.method.result.MethodExecutionResult

package com.dci.intellij.dbn.execution.method.result;

import com.dci.intellij.dbn.connection.ConnectionHandler;
import com.dci.intellij.dbn.data.model.resultSet.ResultSetDataModel;
import com.dci.intellij.dbn.execution.ExecutionResult;
import com.dci.intellij.dbn.execution.common.options.ExecutionEngineSettings;
import com.dci.intellij.dbn.execution.method.ArgumentValue;
import com.dci.intellij.dbn.execution.method.MethodExecutionInput;
import com.dci.intellij.dbn.execution.method.result.ui.MethodExecutionResultForm;
import com.dci.intellij.dbn.object.DBArgument;
import com.dci.intellij.dbn.object.DBMethod;
import com.dci.intellij.dbn.object.DBTypeAttribute;
import com.dci.intellij.dbn.object.lookup.DBArgumentRef;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project;

import javax.swing.Icon;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MethodExecutionResult implements ExecutionResult, Disposable {
    private MethodExecutionInput executionInput;
    private MethodExecutionResultForm resultPanel;
    private List<ArgumentValue> argumentValues = new ArrayList<ArgumentValue>();
    private Map<DBArgumentRef, ResultSetDataModel> cursorModels;
    private int executionDuration;
    private boolean debug;

    public MethodExecutionResult(MethodExecutionInput executionInput, boolean debug) {
        this.executionInput = executionInput;
        executionInput.setExecutionResult(this);
        this.debug = debug;
    }

    public MethodExecutionResult(MethodExecutionInput executionInput, MethodExecutionResultForm resultPanel, boolean debug) {
        this(executionInput, debug);
        this.resultPanel = resultPanel;
    }

    public int getExecutionDuration() {
        return executionDuration;
    }

    public void setExecutionDuration(int executionDuration) {
        this.executionDuration = executionDuration;
    }

    public void addArgumentValue(DBArgument argument, Object value) throws SQLException {
        ArgumentValue argumentValue = new ArgumentValue(argument, value);
        argumentValues.add(argumentValue);
        if (value instanceof ResultSet) {
            ResultSet resultSet = (ResultSet) value;
            if (cursorModels == null) {
                cursorModels = new HashMap<DBArgumentRef, ResultSetDataModel>();
            }

            ExecutionEngineSettings settings = ExecutionEngineSettings.getInstance(argument.getProject());
            int maxRecords = settings.getStatementExecutionSettings().getResultSetFetchBlockSize();
            ResultSetDataModel dataModel = new ResultSetDataModel(resultSet, getConnectionHandler(), maxRecords);
            cursorModels.put(argument.getRef(), dataModel);
        }
    }

    public void addArgumentValue(DBArgument argument, DBTypeAttribute attribute, Object value) {
        ArgumentValue argumentValue = new ArgumentValue(argument, attribute, value);
        argumentValues.add(argumentValue);
    }


    public List<ArgumentValue> getArgumentValues() {
        return argumentValues;
    }

    public MethodExecutionResultForm getResultPanel() {
        if (resultPanel == null) {
            resultPanel = new MethodExecutionResultForm(this);
        }
        return resultPanel;
    }

    public String getResultName() {
        return getMethod().getName();
    }

    public Icon getResultIcon() {
        return getMethod().getOriginalIcon();
    }

    public boolean isOrphan() {
        return false;
    }

    public MethodExecutionInput getExecutionInput() {
        return executionInput;
    }

    public DBMethod getMethod() {
        return executionInput.getMethod();
    }

    public Project getProject() {
        return getMethod().getProject();
    }

    public ConnectionHandler getConnectionHandler() {
        return getMethod().getConnectionHandler();
    }

    public boolean hasCursorResults() {
        for (ArgumentValue argumentValue: argumentValues) {
            if (argumentValue.isCursor()) {
                return true;
            }
        }
        return false;
    }

    public boolean hasSimpleResults() {
        for (ArgumentValue argumentValue: argumentValues) {
            if (!argumentValue.isCursor()) {
                return true;
            }
        }
        return false;
    }


    public void dispose() {
        resultPanel = null;
        executionInput.setExecutionResult(null);
        executionInput = null;
        if (cursorModels != null) {
            for (ResultSetDataModel resultSetDataModel : cursorModels.values()) {
                resultSetDataModel.dispose();
            }
            cursorModels.clear();
        }
        argumentValues.clear();
    }

    public void setResultPanel(MethodExecutionResultForm resultPanel) {
        this.resultPanel = resultPanel;
    }

    public boolean isDebug() {
        return debug;
    }

    public ResultSetDataModel getTableModel(DBArgument argument) {
        return cursorModels.get(argument.getRef());
    }
}
TOP

Related Classes of com.dci.intellij.dbn.execution.method.result.MethodExecutionResult

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.