Search in sources :

Example 76 with DBCExecutionContext

use of org.jkiss.dbeaver.model.exec.DBCExecutionContext in project dbeaver by serge-rider.

the class SelectActiveSchemaHandler method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    if (SelectActiveDataSourceHandler.getDataSourceContainerProvider(HandlerUtil.getActiveEditor(event)) == null) {
        return null;
    }
    DBPDataSourceContainer dataSourceContainer = DataSourceToolbarUtils.getCurrentDataSource(HandlerUtil.getActiveWorkbenchWindow(event));
    if (dataSourceContainer == null) {
        log.debug("No active connection. Action is in disabled state.");
        return null;
    }
    DBCExecutionContext executionContext = getExecutionContextFromPart(HandlerUtil.getActiveEditor(event));
    ContextDefaultObjectsReader contextDefaultObjectsReader = new ContextDefaultObjectsReader(dataSourceContainer.getDataSource(), executionContext);
    try {
        UIUtils.runInProgressService(contextDefaultObjectsReader);
    } catch (InvocationTargetException e) {
        DBWorkbench.getPlatformUI().showError("Schema list", "Error reading schema list", e.getTargetException());
        return null;
    } catch (InterruptedException e) {
        return null;
    }
    DBSObject selectedDB = null;
    DBSObject defaultObject = contextDefaultObjectsReader.getDefaultObject();
    if (defaultObject != null) {
        for (DBSObject object : contextDefaultObjectsReader.getObjectList()) {
            if (object == defaultObject || object == defaultObject.getParentObject()) {
                selectedDB = object;
            }
        }
    }
    DBNDatabaseNode selectedNode = selectedDB == null ? null : DBWorkbench.getPlatform().getNavigatorModel().getNodeByObject(selectedDB);
    SelectDatabaseDialog dialog = new SelectDatabaseDialog(HandlerUtil.getActiveShell(event), dataSourceContainer, contextDefaultObjectsReader.getDefaultCatalogName(), contextDefaultObjectsReader.getNodeList(), selectedNode == null ? null : Collections.singletonList(selectedNode));
    dialog.setModeless(true);
    if (dialog.open() == IDialogConstants.CANCEL_ID) {
        return null;
    }
    DBNDatabaseNode node = dialog.getSelectedObject();
    if (node != null && node.getObject() != defaultObject) {
        // Change current schema
        changeDataBaseSelection(dataSourceContainer, executionContext, contextDefaultObjectsReader.getDefaultCatalogName(), dialog.getCurrentInstanceName(), node.getNodeName());
    }
    return null;
}
Also used : DBSObject(org.jkiss.dbeaver.model.struct.DBSObject) ContextDefaultObjectsReader(org.jkiss.dbeaver.model.impl.struct.ContextDefaultObjectsReader) DBCExecutionContext(org.jkiss.dbeaver.model.exec.DBCExecutionContext) DBPDataSourceContainer(org.jkiss.dbeaver.model.DBPDataSourceContainer) DBNDatabaseNode(org.jkiss.dbeaver.model.navigator.DBNDatabaseNode) SelectDatabaseDialog(org.jkiss.dbeaver.ui.navigator.dialogs.SelectDatabaseDialog) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 77 with DBCExecutionContext

use of org.jkiss.dbeaver.model.exec.DBCExecutionContext in project dbeaver by serge-rider.

the class DatabaseEditorUtils method setPartBackground.

public static void setPartBackground(IEditorPart editor, Composite composite) {
    if (composite == null || composite.isDisposed()) {
        return;
    }
    CTabFolder tabFolder = null;
    Composite rootComposite = composite;
    for (Composite c = composite; c != null; c = c.getParent()) {
        if (!c.isDisposed() && c.getParent() instanceof CTabFolder) {
            tabFolder = (CTabFolder) c.getParent();
            // rootComposite = c;
            break;
        }
    }
    if (tabFolder != null) {
        tabFolder.setBorderVisible(false);
    }
    DBPDataSourceContainer dsContainer = null;
    if (editor instanceof IDataSourceContainerProvider) {
        dsContainer = ((IDataSourceContainerProvider) editor).getDataSourceContainer();
    } else if (editor instanceof DBPContextProvider) {
        DBCExecutionContext context = ((DBPContextProvider) editor).getExecutionContext();
        if (context != null) {
            dsContainer = context.getDataSource().getContainer();
        }
    }
    if (dsContainer == null) {
        rootComposite.setBackground(null);
    } else {
        Color bgColor = UIUtils.getConnectionColor(dsContainer.getConnectionConfiguration());
        rootComposite.setData(DBStyles.DATABASE_EDITOR_COMPOSITE_DATASOURCE, dsContainer);
        rootComposite.setBackground(bgColor);
    }
}
Also used : IDataSourceContainerProvider(org.jkiss.dbeaver.model.IDataSourceContainerProvider) CTabFolder(org.eclipse.swt.custom.CTabFolder) Composite(org.eclipse.swt.widgets.Composite) DBCExecutionContext(org.jkiss.dbeaver.model.exec.DBCExecutionContext) DBPContextProvider(org.jkiss.dbeaver.model.DBPContextProvider) Color(org.eclipse.swt.graphics.Color) DBPDataSourceContainer(org.jkiss.dbeaver.model.DBPDataSourceContainer)

Example 78 with DBCExecutionContext

use of org.jkiss.dbeaver.model.exec.DBCExecutionContext in project dbeaver by serge-rider.

the class ObjectEditorPageControl method isObjectEditable.

public boolean isObjectEditable() {
    IEditorInput editorInput = getEditorPart().getEditorInput();
    if (editorInput instanceof IDatabaseEditorInput) {
        DBCExecutionContext context = ((IDatabaseEditorInput) editorInput).getExecutionContext();
        if (context == null) {
            return false;
        }
        if (context.getDataSource().getInfo().isReadOnlyMetaData()) {
            return false;
        }
        DBSObject databaseObject = ((IDatabaseEditorInput) editorInput).getDatabaseObject();
        return databaseObject != null && DBWorkbench.getPlatform().getEditorsRegistry().getObjectManager(databaseObject.getClass(), DBEObjectManager.class) != null;
    }
    return false;
}
Also used : IDatabaseEditorInput(org.jkiss.dbeaver.ui.editors.IDatabaseEditorInput) DBSObject(org.jkiss.dbeaver.model.struct.DBSObject) DBCExecutionContext(org.jkiss.dbeaver.model.exec.DBCExecutionContext) IEditorInput(org.eclipse.ui.IEditorInput)

Example 79 with DBCExecutionContext

use of org.jkiss.dbeaver.model.exec.DBCExecutionContext in project dbeaver by serge-rider.

the class ResultSetFilterPanel method setCustomDataFilter.

private void setCustomDataFilter() {
    DBCExecutionContext context = viewer.getExecutionContext();
    if (context == null) {
        return;
    }
    String condition = filtersText.getText();
    StringBuilder currentCondition = new StringBuilder();
    SQLUtils.appendConditionString(viewer.getModel().getDataFilter(), context.getDataSource(), null, currentCondition, true);
    if (currentCondition.toString().trim().equals(condition.trim())) {
        // The same
        return;
    }
    DBDDataFilter newFilter = new DBDDataFilter(viewer.getModel().getDataFilter());
    for (DBDAttributeConstraint ac : newFilter.getConstraints()) {
        ac.setCriteria(null);
    }
    newFilter.setWhere(condition);
    viewer.setDataFilter(newFilter, true);
// viewer.getControl().setFocus();
}
Also used : DBCExecutionContext(org.jkiss.dbeaver.model.exec.DBCExecutionContext) DBDDataFilter(org.jkiss.dbeaver.model.data.DBDDataFilter) DBDAttributeConstraint(org.jkiss.dbeaver.model.data.DBDAttributeConstraint)

Example 80 with DBCExecutionContext

use of org.jkiss.dbeaver.model.exec.DBCExecutionContext in project dbeaver by serge-rider.

the class PrefPageSQLFormat method createPreferenceContent.

@Override
protected Control createPreferenceContent(Composite parent) {
    Composite composite = UIUtils.createPlaceholder(parent, 3, 5);
    formatterSelector = UIUtils.createLabelCombo(composite, SQLEditorMessages.pref_page_sql_format_label_formatter, SWT.DROP_DOWN | SWT.READ_ONLY);
    formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
    formatters = SQLFormatterConfigurationRegistry.getInstance().getFormatters();
    formatters.sort(Comparator.comparing(SQLFormatterDescriptor::getLabel));
    for (SQLFormatterDescriptor formatterDesc : formatters) {
        formatterSelector.add(DBPIdentifierCase.capitalizeCaseName(formatterDesc.getLabel()));
    }
    formatterSelector.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            showFormatterSettings();
            performApply();
        }
    });
    formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
    formatCurrentQueryCheck = UIUtils.createCheckbox(composite, "Format active query only", "Formats only active query or selected text. Otherwise formats entire SQL script", true, 1);
    Composite formatterGroup = UIUtils.createPlaceholder(composite, 1, 5);
    formatterGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    ((GridData) formatterGroup.getLayoutData()).horizontalSpan = 3;
    /*
        {
            Composite formatterPanel = UIUtils.createPlaceholder(formatterGroup, 4, 5);
            formatterPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

            keywordCaseCombo = UIUtils.createLabelCombo(formatterPanel, CoreMessages.pref_page_sql_format_label_keyword_case, SWT.DROP_DOWN | SWT.READ_ONLY);
            keywordCaseCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
            keywordCaseCombo.add("Database");
            for (DBPIdentifierCase c :DBPIdentifierCase.values()) {
                keywordCaseCombo.add(DBPIdentifierCase.capitalizeCaseName(c.name()));
            }
            keywordCaseCombo.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    performApply();
                }
            });
        }
*/
    // External formatter
    {
        formatterConfigPlaceholder = UIUtils.createPlaceholder(formatterGroup, 2, 5);
        formatterConfigPlaceholder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING));
        formatterConfigPlaceholder.setLayout(new FillLayout());
    }
    {
        // SQL preview
        Composite previewGroup = new Composite(composite, SWT.BORDER);
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.horizontalSpan = 3;
        previewGroup.setLayoutData(gd);
        previewGroup.setLayout(new FillLayout());
        sqlViewer = new SQLEditorBase() {

            @Override
            public DBCExecutionContext getExecutionContext() {
                final DBPDataSourceContainer container = getDataSourceContainer();
                if (container != null) {
                    final DBPDataSource dataSource = container.getDataSource();
                    if (dataSource != null) {
                        return DBUtils.getDefaultContext(dataSource.getDefaultInstance(), false);
                    }
                }
                return null;
            }
        };
        try {
            try (final InputStream sqlStream = getClass().getResourceAsStream(FORMAT_FILE_NAME)) {
                final String sqlText = ContentUtils.readToString(sqlStream, StandardCharsets.UTF_8);
                IEditorSite subSite = new SubEditorSite(UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite());
                StringEditorInput sqlInput = new StringEditorInput("SQL preview", sqlText, true, GeneralUtils.getDefaultFileEncoding());
                sqlViewer.init(subSite, sqlInput);
            }
        } catch (Exception e) {
            log.error(e);
        }
        sqlViewer.createPartControl(previewGroup);
        Object text = sqlViewer.getAdapter(Control.class);
        if (text instanceof StyledText) {
            ((StyledText) text).setWordWrap(true);
        }
        sqlViewer.reloadSyntaxRules();
        previewGroup.addDisposeListener(e -> sqlViewer.dispose());
        {
            // Styles
            // Composite afGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_sql_format_group_style, 1, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0);
            // ((GridData)afGroup.getLayoutData()).horizontalSpan = 2;
            styleBoldKeywords = UIUtils.createCheckbox(composite, SQLEditorMessages.pref_page_sql_format_label_bold_keywords, SQLEditorMessages.pref_page_sql_format_label_bold_keywords_tip, false, 2);
            styleBoldKeywords.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    performApply();
                }
            });
        }
    }
    return composite;
}
Also used : SQLFormatterDescriptor(org.jkiss.dbeaver.model.sql.registry.SQLFormatterDescriptor) StringEditorInput(org.jkiss.dbeaver.ui.editors.StringEditorInput) DBPIdentifierCase(org.jkiss.dbeaver.model.DBPIdentifierCase) SQLFormatterConfigurationRegistry(org.jkiss.dbeaver.model.sql.registry.SQLFormatterConfigurationRegistry) StyledText(org.eclipse.swt.custom.StyledText) DBPPreferenceStore(org.jkiss.dbeaver.model.preferences.DBPPreferenceStore) IEditorSite(org.eclipse.ui.IEditorSite) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer) SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) DBCExecutionContext(org.jkiss.dbeaver.model.exec.DBCExecutionContext) SQLTokenizedFormatterConfigurationPage(org.jkiss.dbeaver.ui.editors.sql.preferences.format.tokenized.SQLTokenizedFormatterConfigurationPage) Composite(org.eclipse.swt.widgets.Composite) UIUtils(org.jkiss.dbeaver.ui.UIUtils) Locale(java.util.Locale) Log(org.jkiss.dbeaver.Log) GridData(org.eclipse.swt.layout.GridData) FillLayout(org.eclipse.swt.layout.FillLayout) DBPDataSource(org.jkiss.dbeaver.model.DBPDataSource) SQLPreferenceConstants(org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) SQLFormatterDescriptor(org.jkiss.dbeaver.model.sql.registry.SQLFormatterDescriptor) GeneralUtils(org.jkiss.dbeaver.utils.GeneralUtils) CommonUtils(org.jkiss.utils.CommonUtils) Combo(org.eclipse.swt.widgets.Combo) Button(org.eclipse.swt.widgets.Button) DBUtils(org.jkiss.dbeaver.model.DBUtils) ContentUtils(org.jkiss.dbeaver.utils.ContentUtils) SQLModelPreferences(org.jkiss.dbeaver.model.sql.SQLModelPreferences) SQLFormatterExternal(org.jkiss.dbeaver.model.sql.format.external.SQLFormatterExternal) SQLExternalFormatterConfigurationPage(org.jkiss.dbeaver.ui.editors.sql.preferences.format.SQLExternalFormatterConfigurationPage) SQLEditorMessages(org.jkiss.dbeaver.ui.editors.sql.internal.SQLEditorMessages) StandardCharsets(java.nio.charset.StandardCharsets) DBPDataSourceContainer(org.jkiss.dbeaver.model.DBPDataSourceContainer) List(java.util.List) SQLFormatter(org.jkiss.dbeaver.model.sql.format.SQLFormatter) SQLFormatterConfigurator(org.jkiss.dbeaver.ui.editors.sql.preferences.format.SQLFormatterConfigurator) DBException(org.jkiss.dbeaver.DBException) TextSelection(org.eclipse.jface.text.TextSelection) SWT(org.eclipse.swt.SWT) SubEditorSite(org.jkiss.dbeaver.ui.editors.SubEditorSite) TargetPrefPage(org.jkiss.dbeaver.ui.preferences.TargetPrefPage) IDialogPage(org.eclipse.jface.dialogs.IDialogPage) SelectionEvent(org.eclipse.swt.events.SelectionEvent) SQLFormatterTokenized(org.jkiss.dbeaver.model.sql.format.tokenized.SQLFormatterTokenized) PrefUtils(org.jkiss.dbeaver.utils.PrefUtils) Comparator(java.util.Comparator) Control(org.eclipse.swt.widgets.Control) InputStream(java.io.InputStream) StyledText(org.eclipse.swt.custom.StyledText) Composite(org.eclipse.swt.widgets.Composite) InputStream(java.io.InputStream) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) FillLayout(org.eclipse.swt.layout.FillLayout) DBPDataSource(org.jkiss.dbeaver.model.DBPDataSource) StringEditorInput(org.jkiss.dbeaver.ui.editors.StringEditorInput) DBException(org.jkiss.dbeaver.DBException) SubEditorSite(org.jkiss.dbeaver.ui.editors.SubEditorSite) Control(org.eclipse.swt.widgets.Control) SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) GridData(org.eclipse.swt.layout.GridData) SelectionEvent(org.eclipse.swt.events.SelectionEvent) DBPDataSourceContainer(org.jkiss.dbeaver.model.DBPDataSourceContainer) IEditorSite(org.eclipse.ui.IEditorSite)

Aggregations

DBCExecutionContext (org.jkiss.dbeaver.model.exec.DBCExecutionContext)107 DBPDataSourceContainer (org.jkiss.dbeaver.model.DBPDataSourceContainer)27 DBSObject (org.jkiss.dbeaver.model.struct.DBSObject)22 DBException (org.jkiss.dbeaver.DBException)21 DBPContextProvider (org.jkiss.dbeaver.model.DBPContextProvider)20 InvocationTargetException (java.lang.reflect.InvocationTargetException)16 DBCExecutionContextDefaults (org.jkiss.dbeaver.model.exec.DBCExecutionContextDefaults)16 DBPDataSource (org.jkiss.dbeaver.model.DBPDataSource)15 GridData (org.eclipse.swt.layout.GridData)12 IEditorPart (org.eclipse.ui.IEditorPart)12 DBCException (org.jkiss.dbeaver.model.exec.DBCException)12 DBNDatabaseNode (org.jkiss.dbeaver.model.navigator.DBNDatabaseNode)12 ArrayList (java.util.ArrayList)10 Composite (org.eclipse.swt.widgets.Composite)10 DBSCatalog (org.jkiss.dbeaver.model.struct.rdb.DBSCatalog)10 DBSSchema (org.jkiss.dbeaver.model.struct.rdb.DBSSchema)10 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)8 SelectionEvent (org.eclipse.swt.events.SelectionEvent)8 IWorkbenchWindow (org.eclipse.ui.IWorkbenchWindow)8 NotNull (org.jkiss.code.NotNull)8