Search in sources :

Example 1 with DriverClassFindJob

use of org.jkiss.dbeaver.registry.driver.DriverClassFindJob in project dbeaver by serge-rider.

the class PostgreSSLConfigurator method loadSettings.

@Override
public void loadSettings(final DBWHandlerConfiguration configuration) {
    clientCertText.setText(CommonUtils.notEmpty(configuration.getProperties().get(PostgreConstants.PROP_SSL_CLIENT_CERT)));
    clientKeyText.setText(CommonUtils.notEmpty(configuration.getProperties().get(PostgreConstants.PROP_SSL_CLIENT_KEY)));
    rootCertText.setText(CommonUtils.notEmpty(configuration.getProperties().get(PostgreConstants.PROP_SSL_ROOT_CERT)));
    UIUtils.setComboSelection(sslModeCombo, CommonUtils.notEmpty(configuration.getProperties().get(PostgreConstants.PROP_SSL_MODE)));
    final Job resolveJob = new Job("Find factories") {

        {
            setUser(true);
        }

        @Override
        protected IStatus run(IProgressMonitor monitor) {
            final DriverClassFindJob finder = new DriverClassFindJob(configuration.getDriver(), "javax/net/ssl/SSLSocketFactory", false);
            finder.run(monitor);
            DBeaverUI.syncExec(new Runnable() {

                @Override
                public void run() {
                    for (String cn : finder.getDriverClassNames()) {
                        sslFactoryCombo.add(cn);
                    }
                    final String factoryValue = configuration.getProperties().get(PostgreConstants.PROP_SSL_FACTORY);
                    if (!CommonUtils.isEmpty(factoryValue)) {
                        sslFactoryCombo.setText(factoryValue);
                    }
                }
            });
            return Status.OK_STATUS;
        }
    };
    resolveJob.schedule();
}
Also used : DriverClassFindJob(org.jkiss.dbeaver.registry.driver.DriverClassFindJob) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) Job(org.eclipse.core.runtime.jobs.Job) DriverClassFindJob(org.jkiss.dbeaver.registry.driver.DriverClassFindJob)

Example 2 with DriverClassFindJob

use of org.jkiss.dbeaver.registry.driver.DriverClassFindJob in project dbeaver by serge-rider.

the class DriverEditDialog method createLibrariesTab.

private void createLibrariesTab(TabFolder group) {
    GridData gd;
    Composite libsGroup = new Composite(group, SWT.NONE);
    libsGroup.setLayout(new GridLayout(2, false));
    {
        Composite libsListGroup = new Composite(libsGroup, SWT.NONE);
        gd = new GridData(GridData.FILL_BOTH);
        libsListGroup.setLayoutData(gd);
        GridLayout layout = new GridLayout(1, false);
        layout.marginHeight = 0;
        layout.marginWidth = 0;
        libsListGroup.setLayout(layout);
        // Additional libraries list
        libTable = new TreeViewer(libsListGroup, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
        libTable.setContentProvider(new LibContentProvider());
        libTable.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(ViewerCell cell) {
                final Object element = cell.getElement();
                if (element instanceof DBPDriverLibrary) {
                    DBPDriverLibrary lib = (DBPDriverLibrary) element;
                    String displayName = lib.getDisplayName();
                    if (lib.getPreferredVersion() != null) {
                        displayName += " [" + lib.getPreferredVersion() + "]";
                    }
                    cell.setText(displayName);
                    File localFile = lib.getLocalFile();
                    if (localFile != null && !localFile.exists()) {
                        cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
                    } else if (!driver.isLibraryResolved(lib)) {
                        cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_BLUE));
                    } else {
                        cell.setForeground(null);
                    }
                    cell.setImage(DBeaverIcons.getImage(lib.getIcon()));
                } else {
                    cell.setText(element.toString());
                    cell.setImage(DBeaverIcons.getImage(UIIcon.JAR));
                }
            }
        });
        libTable.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
        libTable.getControl().addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event event) {
                changeLibSelection();
            }
        });
        // Find driver class
        boolean isReadOnly = !provider.isDriversManagable();
        Composite findClassGroup = new Composite(libsListGroup, SWT.TOP);
        findClassGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        layout = new GridLayout(3, false);
        layout.marginHeight = 0;
        layout.marginWidth = 0;
        findClassGroup.setLayout(layout);
        UIUtils.createControlLabel(findClassGroup, CoreMessages.dialog_edit_driver_label_driver_class);
        classListCombo = new Combo(findClassGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
        classListCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        classListCombo.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                int selIndex = classListCombo.getSelectionIndex();
                if (selIndex >= 0) {
                    driverClassText.setText(classListCombo.getItem(selIndex));
                }
            }
        });
        classListCombo.setEnabled(!isReadOnly);
        findClassButton = new Button(findClassGroup, SWT.PUSH);
        findClassButton.setText(CoreMessages.dialog_edit_driver_button_bind_class);
        findClassButton.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event event) {
                try {
                    DriverClassFindJob classFinder = new DriverClassFindJob(driver, "java/sql/Driver", true);
                    new ProgressMonitorDialog(getShell()).run(true, true, classFinder);
                    if (classListCombo != null && !classListCombo.isDisposed()) {
                        java.util.List<String> classNames = classFinder.getDriverClassNames();
                        classListCombo.setItems(classNames.toArray(new String[classNames.size()]));
                        classListCombo.setListVisible(true);
                    }
                } catch (InvocationTargetException e) {
                    log.error(e.getTargetException());
                } catch (InterruptedException e) {
                    log.error(e);
                }
            }
        });
        findClassButton.setEnabled(!isReadOnly);
    }
    Composite libsControlGroup = new Composite(libsGroup, SWT.TOP);
    libsControlGroup.setLayout(new GridLayout(1, true));
    libsControlGroup.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_add_file, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            addLibraryFiles();
        }
    });
    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_add_folder, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            addLibraryFolder();
        }
    });
    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_add_artifact, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            addMavenArtifact();
        }
    });
    updateVersionButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_update_version, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            driver.updateFiles();
            changeLibContent();
        }
    });
    detailsButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_details, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            new DriverLibraryDetailsDialog(getShell(), driver, getSelectedLibrary()).open();
        }
    });
    detailsButton.setEnabled(false);
    deleteButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_delete, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) libTable.getSelection();
            if (selection != null && !selection.isEmpty()) {
                if (UIUtils.confirmAction(getShell(), "Delete library", "Are you sure you want to delete selected libraries?")) {
                    for (Object obj : selection.toArray()) {
                        if (obj instanceof DriverLibraryAbstract) {
                            driver.removeDriverLibrary((DriverLibraryAbstract) obj);
                        }
                    }
                }
            }
            changeLibContent();
        }
    });
    deleteButton.setEnabled(false);
    /*
        upButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_up, new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e)
            {
                DriverLibraryAbstract selectedLib = getSelectedLibrary();
                int selIndex = libList.indexOf(selectedLib);
                Collections.swap(libList, selIndex, selIndex - 1);
                changeLibContent();
                changeLibSelection();
            }
        });
        upButton.setEnabled(false);

        downButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_down, new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e)
            {
                DriverLibraryAbstract selectedLib = getSelectedLibrary();
                int selIndex = libList.indexOf(selectedLib);
                Collections.swap(libList, selIndex, selIndex + 1);
                changeLibContent();
                changeLibSelection();
            }
        });
        downButton.setEnabled(false);
*/
    UIUtils.createHorizontalLine(libsControlGroup);
    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_classpath, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            ViewClasspathDialog cpDialog = new ViewClasspathDialog(getShell());
            cpDialog.open();
        }
    });
    changeLibContent();
    TabItem libsTab = new TabItem(group, SWT.NONE);
    libsTab.setText(CoreMessages.dialog_edit_driver_tab_name_driver_libraries);
    libsTab.setToolTipText(CoreMessages.dialog_edit_driver_tab_tooltip_driver_libraries);
    libsTab.setControl(libsGroup);
}
Also used : PropertyTreeViewer(org.jkiss.dbeaver.ui.properties.PropertyTreeViewer) CSmartCombo(org.jkiss.dbeaver.ui.controls.CSmartCombo) DriverClassFindJob(org.jkiss.dbeaver.registry.driver.DriverClassFindJob) DriverLibraryAbstract(org.jkiss.dbeaver.registry.driver.DriverLibraryAbstract) GridLayout(org.eclipse.swt.layout.GridLayout) DBPDriverLibrary(org.jkiss.dbeaver.model.connection.DBPDriverLibrary) ProgressMonitorDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog) InvocationTargetException(java.lang.reflect.InvocationTargetException) java.util(java.util) GridData(org.eclipse.swt.layout.GridData) File(java.io.File)

Aggregations

DriverClassFindJob (org.jkiss.dbeaver.registry.driver.DriverClassFindJob)2 File (java.io.File)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 java.util (java.util)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 Job (org.eclipse.core.runtime.jobs.Job)1 ProgressMonitorDialog (org.eclipse.jface.dialogs.ProgressMonitorDialog)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 DBPDriverLibrary (org.jkiss.dbeaver.model.connection.DBPDriverLibrary)1 DriverLibraryAbstract (org.jkiss.dbeaver.registry.driver.DriverLibraryAbstract)1 CSmartCombo (org.jkiss.dbeaver.ui.controls.CSmartCombo)1 PropertyTreeViewer (org.jkiss.dbeaver.ui.properties.PropertyTreeViewer)1