提交 c23850c1 编写于 作者: J jurgen

Maven config

上级 817698b9
......@@ -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$
......
......@@ -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<MavenRepository> 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<MavenRepository> 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;
}
}
......@@ -63,15 +63,23 @@ public class MavenRepository
private String id;
private String name;
private String url;
private boolean predefined = false;
private List<MavenArtifact> cachedArtifacts = new ArrayList<MavenArtifact>();
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) {
......
......@@ -77,7 +77,7 @@ abstract class DriverDownloadPage extends WizardPage {
@Override
public void widgetSelected(SelectionEvent e) {
UIUtils.showPreferencesFor(
DBeaverUI.getActiveWorkbenchShell(),
null,
null,
PrefPageDrivers.PAGE_ID);
}
......
......@@ -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();
}
......
......@@ -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();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册