From c23850c1cd1d7e6626ef21ec7a5a5624ec0494d2 Mon Sep 17 00:00:00 2001 From: jurgen Date: Sun, 13 Sep 2015 21:58:17 +0000 Subject: [PATCH] Maven config --- .../org/jkiss/dbeaver/DBeaverPreferences.java | 1 + .../dbeaver/registry/maven/MavenRegistry.java | 43 ++++++++++++++-- .../registry/maven/MavenRepository.java | 18 +++++-- .../ui/dialogs/driver/DriverDownloadPage.java | 2 +- .../ui/dialogs/driver/DriverEditDialog.java | 12 +++-- .../ui/preferences/PrefPageDrivers.java | 51 ++++++++++++++++--- 6 files changed, 108 insertions(+), 19 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java index 796f79d81e..cfd11742c1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java @@ -85,6 +85,7 @@ public final class DBeaverPreferences public static final String UI_PROXY_USER = "ui.proxy.user"; //$NON-NLS-1$ public static final String UI_PROXY_PASSWORD = "ui.proxy.password"; //$NON-NLS-1$ public static final String UI_DRIVERS_SOURCES = "ui.drivers.sources"; //$NON-NLS-1$ + public static final String UI_MAVEN_REPOSITORIES = "ui.maven.repositories"; //$NON-NLS-1$ // Resources public static final String RESOURCE_HANDLER_ROOT_PREFIX = "resource.root."; //$NON-NLS-1$ diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRegistry.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRegistry.java index 1576037d97..42c646602a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRegistry.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRegistry.java @@ -22,15 +22,16 @@ import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.DBeaverPreferences; +import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.utils.CommonUtils; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; public class MavenRegistry { - static final Log log = Log.getLog(MavenRegistry.class); - private static MavenRegistry instance = null; public synchronized static MavenRegistry getInstance() @@ -38,6 +39,7 @@ public class MavenRegistry if (instance == null) { instance = new MavenRegistry(); instance.loadExtensions(Platform.getExtensionRegistry()); + instance.loadCustomRepositories(); } return instance; } @@ -48,7 +50,7 @@ public class MavenRegistry { } - public void loadExtensions(IExtensionRegistry registry) + private void loadExtensions(IExtensionRegistry registry) { // Load data type providers from external plugins { @@ -60,6 +62,31 @@ public class MavenRegistry } } + public void loadCustomRepositories() { + // Remove all custom repositories + for (Iterator iterator = repositories.iterator(); iterator.hasNext(); ) { + MavenRepository repository = iterator.next(); + if (!repository.isPredefined()) { + iterator.remove(); + } + } + // PArse repositories from preferences + String repoString = DBeaverCore.getGlobalPreferenceStore().getString(DBeaverPreferences.UI_MAVEN_REPOSITORIES); + if (CommonUtils.isEmpty(repoString)) { + return; + } + for (String repoInfo : repoString.split("\\|")) { + int divPos = repoInfo.indexOf(':'); + if (divPos < 0) { + continue; + } + String repoID = repoInfo.substring(0, divPos); + String repoURL = repoInfo.substring(divPos + 1); + MavenRepository repo = new MavenRepository(repoID, repoID, repoURL); + repositories.add(repo); + } + } + @NotNull public List getRepositories() { return repositories; @@ -85,4 +112,12 @@ public class MavenRegistry return null; } + public MavenRepository findRepository(String id) { + for (MavenRepository repository : repositories) { + if (repository.getId().equals(id)) { + return repository; + } + } + return null; + } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRepository.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRepository.java index 4554341680..da9eac520a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRepository.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenRepository.java @@ -63,15 +63,23 @@ public class MavenRepository private String id; private String name; private String url; + private boolean predefined = false; private List cachedArtifacts = new ArrayList(); public MavenRepository(IConfigurationElement config) { - this.id = config.getAttribute(RegistryConstants.ATTR_ID); - this.name = config.getAttribute(RegistryConstants.ATTR_NAME); - this.url = config.getAttribute(RegistryConstants.ATTR_URL); + this( + config.getAttribute(RegistryConstants.ATTR_ID), + config.getAttribute(RegistryConstants.ATTR_NAME), + config.getAttribute(RegistryConstants.ATTR_URL)); + this.predefined = true; + } + public MavenRepository(String id, String name, String url) { + this.id = id; + this.name = name; + this.url = url; loadCache(); } @@ -91,6 +99,10 @@ public class MavenRepository return url; } + public boolean isPredefined() { + return predefined; + } + @Nullable public MavenArtifact getArtifact(@NotNull String groupId, @NotNull String artifactId, boolean create) { for (MavenArtifact artifact : cachedArtifacts) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java index 87e71cb19a..85d1749d10 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java @@ -77,7 +77,7 @@ abstract class DriverDownloadPage extends WizardPage { @Override public void widgetSelected(SelectionEvent e) { UIUtils.showPreferencesFor( - DBeaverUI.getActiveWorkbenchShell(), + null, null, PrefPageDrivers.PAGE_ID); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java index 3a75aa5a3c..87f5ec33f9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java @@ -708,11 +708,15 @@ public class DriverEditDialog extends HelpEnabledDialog } provider.getRegistry().saveDrivers(); - try { - driver.loadDriver(DBeaverUI.getDefaultRunnableContext(), true, true); - } catch (Throwable ex) { - UIUtils.showErrorDialog(getShell(), CoreMessages.dialog_edit_driver_dialog_driver_error_title, CoreMessages.dialog_edit_driver_dialog_driver_error_message, ex); +/* // DO NOT validate driver on close. Otherwise it can cause cyclis errors -> new driver editor dialog, etcv + { + try { + driver.loadDriver(DBeaverUI.getDefaultRunnableContext(), true); + } catch (Throwable ex) { + UIUtils.showErrorDialog(getShell(), CoreMessages.dialog_edit_driver_dialog_driver_error_title, CoreMessages.dialog_edit_driver_dialog_driver_error_message, ex); + } } +*/ super.okPressed(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java index caf1875d06..80e7c85542 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java @@ -29,9 +29,9 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.IWorkbenchPropertyPage; import org.jkiss.dbeaver.DBeaverPreferences; +import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.DriverDescriptor; import org.jkiss.dbeaver.registry.encode.EncryptionException; @@ -127,6 +127,22 @@ public class PrefPageDrivers extends PreferencePage implements IWorkbenchPrefere } }); removeButton.setEnabled(false); + + mavenRepoTable.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) + { + boolean enabled = false; + TableItem[] selection = mavenRepoTable.getSelection(); + if (selection.length == 1) { + enabled = true; + if (selection[0].getData() instanceof MavenRepository && ((MavenRepository)selection[0].getData()).isPredefined()) { + enabled = false; + } + } + removeButton.setEnabled(enabled); + } + }); } { @@ -228,7 +244,9 @@ public class PrefPageDrivers extends PreferencePage implements IWorkbenchPrefere } for (MavenRepository repo : MavenRegistry.getInstance().getRepositories()) { - new TableItem(mavenRepoTable, SWT.NONE).setText(new String[]{repo.getId(), repo.getUrl()}); + TableItem item = new TableItem(mavenRepoTable, SWT.NONE); + item.setText(new String[]{repo.getId(), repo.getUrl()}); + item.setData(repo); } UIUtils.packColumns(mavenRepoTable, true); super.performDefaults(); @@ -253,12 +271,31 @@ public class PrefPageDrivers extends PreferencePage implements IWorkbenchPrefere store.setValue(DBeaverPreferences.UI_PROXY_PASSWORD, password); store.setValue(DBeaverPreferences.UI_DRIVERS_HOME, customDriversHome.getText()); - StringBuilder sources = new StringBuilder(); - for (String item : sourceList.getItems()) { - if (sources.length() > 0) sources.append('|'); - sources.append(item); + { + StringBuilder sources = new StringBuilder(); + for (String item : sourceList.getItems()) { + if (sources.length() > 0) sources.append('|'); + sources.append(item); + } + store.setValue(DBeaverPreferences.UI_DRIVERS_SOURCES, sources.toString()); } - store.setValue(DBeaverPreferences.UI_DRIVERS_SOURCES, sources.toString()); + + { + StringBuilder mavenRepos = new StringBuilder(); + for (TableItem item : mavenRepoTable.getItems()) { + String repoId = item.getText(0); + String repoURL = item.getText(1); + MavenRepository repository = MavenRegistry.getInstance().findRepository(repoId); + if (repository != null && repository.isPredefined()) { + continue; + } + if (mavenRepos.length() > 0) mavenRepos.append('|'); + mavenRepos.append(repoId).append(':').append(repoURL); + } + store.setValue(DBeaverPreferences.UI_MAVEN_REPOSITORIES, mavenRepos.toString()); + MavenRegistry.getInstance().loadCustomRepositories(); + } + PrefUtils.savePreferenceStore(store); return super.performOk(); -- GitLab