diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverClassLoader.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverClassLoader.java index 20967a7ca003d6659e14b40b4ad36cb1e8ed0b1e..387fda8026ef29f7dc024cc69cf3cbbe9d01b966 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverClassLoader.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverClassLoader.java @@ -18,7 +18,7 @@ package org.jkiss.dbeaver.registry; -import org.jkiss.dbeaver.model.DBPDriverFileType; +import org.jkiss.dbeaver.model.DBPDriverFile; import org.jkiss.utils.CommonUtils; import java.io.File; @@ -43,8 +43,8 @@ public class DriverClassLoader extends URLClassLoader protected String findLibrary(String libname) { String nativeName = System.mapLibraryName(libname); - for (DriverFileDescriptor driverFile : driver.getFiles()) { - if (driverFile.getType() == DBPDriverFileType.lib && driverFile.matchesCurrentPlatform()) { + for (DriverFileDescriptor driverFile : driver.getDriverFiles()) { + if (driverFile.getType() == DBPDriverFile.FileType.lib && driverFile.matchesCurrentPlatform()) { final File localFile = driverFile.getLocalFile(); if (localFile != null && localFile.exists()) { final String fileName = localFile.getName(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java index 986a11c965fd9e8f418e14d83cbf75c20791a22b..4cfeeed6d5b9aa6d8c38a64d44b9611634c02d64 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java @@ -25,6 +25,7 @@ import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; +import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; @@ -43,6 +44,7 @@ import org.jkiss.dbeaver.model.runtime.OSDescriptor; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.AcceptLicenseDialog; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; +import org.jkiss.dbeaver.ui.dialogs.driver.DriverDownloadDialog; import org.jkiss.dbeaver.ui.dialogs.driver.DriverEditDialog; import org.jkiss.dbeaver.utils.ContentUtils; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -639,13 +641,14 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver clientHomeIds.add(homeId); } + @NotNull @Override - public Collection getFiles() + public Collection getDriverFiles() { return files; } - public DriverFileDescriptor getLibrary(String path) + public DriverFileDescriptor getDriverFile(String path) { for (DriverFileDescriptor lib : files) { if (lib.getPath().equals(path)) { @@ -655,7 +658,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver return null; } - public DriverFileDescriptor addLibrary(String path, DBPDriverFileType fileType) + public DriverFileDescriptor addDriverFile(String path, DBPDriverFile.FileType fileType) { for (DriverFileDescriptor lib : files) { if (lib.getPath().equals(path)) { @@ -663,11 +666,11 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver } } DriverFileDescriptor lib = new DriverFileDescriptor(this, fileType, path); - addLibrary(lib); + addDriverFile(lib); return lib; } - public boolean addLibrary(DriverFileDescriptor descriptor) + public boolean addDriverFile(DriverFileDescriptor descriptor) { if (!files.contains(descriptor)) { this.files.add(descriptor); @@ -677,7 +680,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver return false; } - public boolean removeLibrary(DriverFileDescriptor lib) + public boolean removeDriverFile(DriverFileDescriptor lib) { if (!lib.isCustom()) { lib.setDisabled(true); @@ -702,6 +705,11 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver return result; } + @NotNull + public List getDriverFileSources() { + return fileSources; + } + @Override public Collection getPathList() { @@ -799,7 +807,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver public String getLicense() { for (DriverFileDescriptor file : files) { - if (file.getType() == DBPDriverFileType.license) { + if (file.getType() == DBPDriverFile.FileType.license) { final File licenseFile = file.getLocalFile(); if (licenseFile != null && licenseFile.exists()) { try { @@ -874,7 +882,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver List libraryURLs = new ArrayList(); // Load libraries for (DriverFileDescriptor file : files) { - if (file.isDisabled() || file.getType() != DBPDriverFileType.jar) { + if (file.isDisabled() || file.getType() != DBPDriverFile.FileType.jar) { continue; } File localFile = file.getLocalFile(); @@ -984,8 +992,8 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver private boolean acceptDriverLicenses(DBRRunnableContext runnableContext) { // User must accept all licenses before actual drivers download - for (final DriverFileDescriptor file : getFiles()) { - if (file.getType() == DBPDriverFileType.license) { + for (final DriverFileDescriptor file : getDriverFiles()) { + if (file.getType() == DBPDriverFile.FileType.license) { final File libraryFile = file.getLocalFile(); if (libraryFile == null || !libraryFile.exists()) { try { @@ -1050,7 +1058,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver // User just canceled download return IDialogConstants.CANCEL_ID; } catch (InvocationTargetException e) { - if (file.getType() == DBPDriverFileType.license) { + if (file.getType() == DBPDriverFile.FileType.license) { return IDialogConstants.OK_ID; } DownloadRetry retryConfirm = new DownloadRetry(file, e.getTargetException()); @@ -1124,7 +1132,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver } // Libraries - for (DriverFileDescriptor lib : this.getFiles()) { + for (DriverFileDescriptor lib : this.getDriverFiles()) { if ((export && !lib.isDisabled()) || lib.isCustom() || lib.isDisabled()) { xml.startElement(RegistryConstants.TAG_LIBRARY); xml.addAttribute(RegistryConstants.ATTR_TYPE, lib.getType().name()); @@ -1296,25 +1304,25 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver log.warn("File outside of driver"); return; } - DBPDriverFileType type; + DBPDriverFile.FileType type; String typeStr = atts.getValue(RegistryConstants.ATTR_TYPE); if (CommonUtils.isEmpty(typeStr)) { - type = DBPDriverFileType.jar; + type = DBPDriverFile.FileType.jar; } else { try { - type = DBPDriverFileType.valueOf(typeStr); + type = DBPDriverFile.FileType.valueOf(typeStr); } catch (IllegalArgumentException e) { log.warn(e); - type = DBPDriverFileType.jar; + type = DBPDriverFile.FileType.jar; } } String path = atts.getValue(RegistryConstants.ATTR_PATH); - DriverFileDescriptor lib = curDriver.getLibrary(path); + DriverFileDescriptor lib = curDriver.getDriverFile(path); String disabledAttr = atts.getValue(RegistryConstants.ATTR_DISABLED); if (lib != null && CommonUtils.getBoolean(disabledAttr)) { lib.setDisabled(true); } else if (lib == null) { - curDriver.addLibrary(path, type); + curDriver.addDriverFile(path, type); } } else if (localName.equals(RegistryConstants.TAG_CLIENT_HOME)) { curDriver.addClientHomeId(atts.getValue(RegistryConstants.ATTR_ID)); @@ -1519,6 +1527,8 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver @Override public void run() { + DriverDownloadDialog downloadDialog = new DriverDownloadDialog(DBeaverUI.getActiveWorkbenchWindow(), DriverDescriptor.this); + downloadDialog.open(); proceed = ConfirmationDialog.showConfirmDialog( null, DBeaverPreferences.CONFIRM_DRIVER_DOWNLOAD, diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileDescriptor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileDescriptor.java index 36eb84d98804e7393b609885c740f06214423f33..3499511994c431424b5b9148c79b25d625dea9a8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileDescriptor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileDescriptor.java @@ -21,12 +21,9 @@ import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPDriverFile; -import org.jkiss.dbeaver.model.DBPDriverFileType; -import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.OSDescriptor; import org.jkiss.dbeaver.registry.maven.MavenArtifact; @@ -35,7 +32,6 @@ import org.jkiss.dbeaver.registry.maven.MavenLocalVersion; import org.jkiss.dbeaver.registry.maven.MavenRegistry; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.utils.ContentUtils; -import org.jkiss.utils.CommonUtils; import java.io.*; import java.net.*; @@ -53,7 +49,7 @@ public class DriverFileDescriptor implements DBPDriverFile public static final String FILE_SOURCE_PLATFORM = "platform:/"; private final DriverDescriptor driver; - private final DBPDriverFileType type; + private final FileType type; private final OSDescriptor system; private String path; private String fileExtension; @@ -61,7 +57,7 @@ public class DriverFileDescriptor implements DBPDriverFile private boolean custom; private boolean disabled; - public DriverFileDescriptor(DriverDescriptor driver, DBPDriverFileType type, String path) + public DriverFileDescriptor(DriverDescriptor driver, FileType type, String path) { this.driver = driver; this.type = type; @@ -73,7 +69,7 @@ public class DriverFileDescriptor implements DBPDriverFile DriverFileDescriptor(DriverDescriptor driver, IConfigurationElement config) { this.driver = driver; - this.type = DBPDriverFileType.valueOf(config.getAttribute(RegistryConstants.ATTR_TYPE)); + this.type = FileType.valueOf(config.getAttribute(RegistryConstants.ATTR_TYPE)); String osName = config.getAttribute(RegistryConstants.ATTR_OS); this.system = osName == null ? null : new OSDescriptor( @@ -91,7 +87,7 @@ public class DriverFileDescriptor implements DBPDriverFile } @Override - public DBPDriverFileType getType() + public FileType getType() { return type; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileSource.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileSource.java index 721f5cda9660613e66741ed6e2e375fe34819fdd..da120bd3314f24275af1a63d2874305ee41fe2c1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileSource.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverFileSource.java @@ -19,6 +19,7 @@ package org.jkiss.dbeaver.registry; import org.eclipse.core.runtime.IConfigurationElement; import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.DBPDriverFile; import java.util.ArrayList; import java.util.List; @@ -26,7 +27,7 @@ import java.util.List; /** * DriverFileSource */ -public class DriverFileSource +public class DriverFileSource implements DBPDriverFile.FileSource { static final Log log = Log.getLog(DriverFileSource.class); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java index b29e0a6688f947400f1b5b3e4e334219e9c2db81..ed8fca83b2f42c3e63285920f32aad3ed63b1543 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectExportWizard.java @@ -182,7 +182,7 @@ public class ProjectExportWizard extends Wizard implements IExportWizard { Set libFiles = new HashSet(); Map libPathMap = new HashMap(); for (DriverDescriptor driver : exportData.usedDrivers) { - for (DriverFileDescriptor fileDescriptor : driver.getFiles()) { + for (DriverFileDescriptor fileDescriptor : driver.getDriverFiles()) { final File libraryFile = fileDescriptor.getLocalFile(); if (libraryFile != null && !fileDescriptor.isDisabled() && libraryFile.exists()) { libFiles.add(libraryFile); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java index d5421632af653c570d8a3bdb3b1142e7e5731d20..38185bb92a4dd9544018b08069599a9f0b089d07 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/project/ProjectImportWizard.java @@ -29,7 +29,7 @@ import org.eclipse.ui.IWorkbench; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; -import org.jkiss.dbeaver.model.DBPDriverFileType; +import org.jkiss.dbeaver.model.DBPDriverFile; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.registry.*; @@ -270,7 +270,7 @@ public class ProjectImportWizard extends Wizard implements IImportWizard { } // Add libraries (only for managable drivers with empty library list) - if (CommonUtils.isEmpty(driver.getFiles())) { + if (CommonUtils.isEmpty(driver.getDriverFiles())) { List libraryList = new ArrayList(); for (Element libElement : XMLUtils.getChildElementList(driverElement, RegistryConstants.TAG_FILE)) { libraryList.add(libElement.getAttribute(RegistryConstants.ATTR_PATH)); @@ -280,7 +280,7 @@ public class ProjectImportWizard extends Wizard implements IImportWizard { File libFile = new File(libPath); if (libFile.exists()) { // Just use path as-is (may be it is local re-import or local environments equal to export environment) - driver.addLibrary(libPath, DBPDriverFileType.jar); + driver.addDriverFile(libPath, DBPDriverFile.FileType.jar); } else { // Get driver library from archive String archiveLibEntry = libMap.get(libPath); @@ -312,7 +312,7 @@ public class ProjectImportWizard extends Wizard implements IImportWizard { while (relativePath.charAt(0) == '/' || relativePath.charAt(0) == '\\') { relativePath = relativePath.substring(1); } - driver.addLibrary(relativePath, DBPDriverFileType.jar); + driver.addDriverFile(relativePath, DBPDriverFile.FileType.jar); } } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java new file mode 100644 index 0000000000000000000000000000000000000000..5bc464a29c58dbfe4824bb06d96db5cb311f6e59 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java @@ -0,0 +1,67 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License (version 2) + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jkiss.dbeaver.ui.dialogs.driver; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.registry.DriverFileDescriptor; +import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferWizard; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage; + +class DriverDownloadAutoPage extends WizardPage { + + static final Log log = Log.getLog(DriverDownloadAutoPage.class); + + DriverDownloadAutoPage() { + super("Automatic download", "Download driver files", null); + setPageComplete(false); + } + + @Override + public void createControl(Composite parent) { + DriverDownloadWizard wizard = (DriverDownloadWizard) getWizard(); + + StringBuilder message = new StringBuilder(); + message.append("Download ").append(wizard.getDriver().getFullName()).append(" driver files:\n"); + for (DriverFileDescriptor file : wizard.getDriver().getDriverFiles()) { + message.append("\t-").append(file.getPath()).append("\n"); + } + + initializeDialogUnits(parent); + + Composite composite = UIUtils.createPlaceholder(parent, 1); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + + Text infoText = new Text(composite, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP); + infoText.setText(message.toString()); + infoText.setLayoutData(new GridData(GridData.FILL_BOTH)); + + setControl(composite); + + setMessage("Download " + wizard.getDriver().getFullName() + " driver files"); + } + + +} \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..7c4609564a5f7bf223d63fe913163f010c2b3803 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java @@ -0,0 +1,57 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License (version 2) + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jkiss.dbeaver.ui.dialogs.driver; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IWorkbenchWindow; +import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.registry.DriverDescriptor; +import org.jkiss.utils.CommonUtils; + +/** + * DriverDownloadDialog + */ +public class DriverDownloadDialog extends WizardDialog +{ + public static final int EDIT_DRIVER_BUTTON_ID = 2000; + + private final DriverDescriptor driver; + + public DriverDownloadDialog(IWorkbenchWindow window, DriverDescriptor driver) + { + super(window.getShell(), new DriverDownloadWizard(driver)); + this.driver = driver; + } + + @Override + protected void createButtonsForButtonBar(Composite parent) { + createButton(parent, EDIT_DRIVER_BUTTON_ID, "Edit Driver", false); + + super.createButtonsForButtonBar(parent); + + Button finishButton = getButton(IDialogConstants.FINISH_ID); + if (CommonUtils.isEmpty(driver.getDriverFileSources())) { + finishButton.setText("Download"); + } else { + finishButton.setText("Open Download Page"); + } + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..783193a47bc58771b2637e941a90635b8ca0b1f1 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadWizard.java @@ -0,0 +1,75 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License (version 2) + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jkiss.dbeaver.ui.dialogs.driver; + +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.IExportWizard; +import org.eclipse.ui.IWorkbench; +import org.jkiss.code.NotNull; +import org.jkiss.dbeaver.registry.DriverDescriptor; +import org.jkiss.dbeaver.ui.UIUtils; + +public class DriverDownloadWizard extends Wizard implements IExportWizard { + + private static final String DRIVER_DOWNLOAD_DIALOG_SETTINGS = "DriverDownload";//$NON-NLS-1$ + + private DriverDescriptor driver; + + public DriverDownloadWizard(@NotNull DriverDescriptor driver) { + this.driver = driver; + setWindowTitle("Setup driver files"); + loadSettings(); + } + + public DriverDescriptor getDriver() { + return driver; + } + + private void loadSettings() + { + IDialogSettings section = UIUtils.getDialogSettings(DRIVER_DOWNLOAD_DIALOG_SETTINGS); + setDialogSettings(section); + } + + @Override + public void addPages() { + super.addPages(); + addPage(new DriverDownloadAutoPage()); + } + + @Override + public void init(IWorkbench workbench, IStructuredSelection currentSelection) { + setWindowTitle("Driver settings"); + setNeedsProgressMonitor(true); + setHelpAvailable(true); + } + + @Override + public boolean canFinish() + { + return true; + } + + @Override + public boolean performFinish() { + return true; + } + +} \ No newline at end of file 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 d70b79e8cca0abaed831c7424bdafdc7d786b83b..ebe42882b7f56bfbf66225a81d16394b72144f86 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 @@ -37,12 +37,10 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; -import org.jkiss.dbeaver.model.DBPDriverFileType; +import org.jkiss.dbeaver.model.DBPDriverFile; import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor; import org.jkiss.dbeaver.registry.DriverDescriptor; import org.jkiss.dbeaver.registry.DriverFileDescriptor; @@ -396,7 +394,7 @@ public class DriverEditDialog extends HelpEnabledDialog libList.add( new DriverFileDescriptor( driver, - fileName.endsWith(".jar") || fileName.endsWith(".zip") ? DBPDriverFileType.jar : DBPDriverFileType.lib, + fileName.endsWith(".jar") || fileName.endsWith(".zip") ? DBPDriverFile.FileType.jar : DBPDriverFile.FileType.lib, new File(folderFile, fileName).getAbsolutePath())); } changeLibContent(); @@ -417,7 +415,7 @@ public class DriverEditDialog extends HelpEnabledDialog curFolder = fd.getFilterPath(); libList.add(new DriverFileDescriptor( driver, - DBPDriverFileType.jar, + DBPDriverFile.FileType.jar, selected)); changeLibContent(); } @@ -646,8 +644,8 @@ public class DriverEditDialog extends HelpEnabledDialog if (libTable != null) { libList = new ArrayList(); - for (DriverFileDescriptor lib : driver.getFiles()) { - if (lib.isDisabled() || (lib.getType() != DBPDriverFileType.jar && lib.getType() != DBPDriverFileType.lib) || !lib.matchesCurrentPlatform()) { + for (DriverFileDescriptor lib : driver.getDriverFiles()) { + if (lib.isDisabled() || (lib.getType() != DBPDriverFile.FileType.jar && lib.getType() != DBPDriverFile.FileType.lib) || !lib.matchesCurrentPlatform()) { continue; } libList.add(lib); @@ -690,11 +688,11 @@ public class DriverEditDialog extends HelpEnabledDialog // Set libraries for (DriverFileDescriptor lib : CommonUtils.safeCollection(libList)) { - driver.addLibrary(lib); + driver.addDriverFile(lib); } - for (DriverFileDescriptor lib : CommonUtils.copyList(driver.getFiles())) { + for (DriverFileDescriptor lib : CommonUtils.copyList(driver.getDriverFiles())) { if (!libList.contains(lib)) { - driver.removeLibrary(lib); + driver.removeDriverFile(lib); } } @@ -762,7 +760,7 @@ public class DriverEditDialog extends HelpEnabledDialog java.util.List libURLs = new ArrayList(); for (DriverFileDescriptor lib : libList) { File libFile = lib.getLocalFile(); - if (libFile != null && libFile.exists() && !libFile.isDirectory() && lib.getType() == DBPDriverFileType.jar) { + if (libFile != null && libFile.exists() && !libFile.isDirectory() && lib.getType() == DBPDriverFile.FileType.jar) { libFiles.add(libFile); try { libURLs.add(libFile.toURI().toURL()); diff --git a/plugins/org.jkiss.dbeaver.ext.import-config/src/org/jkiss/dbeaver/ext/import_config/wizards/ConfigImportWizard.java b/plugins/org.jkiss.dbeaver.ext.import-config/src/org/jkiss/dbeaver/ext/import_config/wizards/ConfigImportWizard.java index c218d8f4b9c81d747db71bdcab0fe0fddcb52b76..208b542b49fb1c215abd363954014c81f3b0076e 100644 --- a/plugins/org.jkiss.dbeaver.ext.import-config/src/org/jkiss/dbeaver/ext/import_config/wizards/ConfigImportWizard.java +++ b/plugins/org.jkiss.dbeaver.ext.import-config/src/org/jkiss/dbeaver/ext/import_config/wizards/ConfigImportWizard.java @@ -25,7 +25,7 @@ import org.eclipse.ui.IWorkbench; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPConnectionConfiguration; -import org.jkiss.dbeaver.model.DBPDriverFileType; +import org.jkiss.dbeaver.model.DBPDriverFile; import org.jkiss.dbeaver.registry.*; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.SelectObjectDialog; @@ -122,7 +122,7 @@ public abstract class ConfigImportWizard extends Wizard implements IImportWizard driver.setDescription(driverInfo.getDescription()); driver.setDriverDefaultPort(driverInfo.getDefaultPort()); for (String path : driverInfo.getLibraries()) { - driver.addLibrary(path, DBPDriverFileType.jar); + driver.addDriverFile(path, DBPDriverFile.FileType.jar); } driver.setModified(true); genericProvider.addDriver(driver); diff --git a/plugins/org.jkiss.dbeaver.ext.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java b/plugins/org.jkiss.dbeaver.ext.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java index 7d7a6740248bc22fb5c741853a9b567f6ea0a765..540854fe02e0884f2754472c764e6915caa3cfb5 100644 --- a/plugins/org.jkiss.dbeaver.ext.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java +++ b/plugins/org.jkiss.dbeaver.ext.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java @@ -79,8 +79,8 @@ public class WMIDataSourceProvider implements DBPDataSourceProvider { private void loadNativeLib(DBPDriver driver) throws DBException { - for (DBPDriverFile libFile : driver.getFiles()) { - if (libFile.matchesCurrentPlatform() && libFile.getType() == DBPDriverFileType.lib) { + for (DBPDriverFile libFile : driver.getDriverFiles()) { + if (libFile.matchesCurrentPlatform() && libFile.getType() == DBPDriverFile.FileType.lib) { File localFile = libFile.getLocalFile(); if (localFile != null) { try { diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriver.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriver.java index 6859dc894d0f196ba3e02d798b69573c11e8785b..6ae4740bb4c5d98c058db96867499c97fc12dbf1 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriver.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriver.java @@ -18,6 +18,7 @@ package org.jkiss.dbeaver.model; +import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode; import org.jkiss.dbeaver.model.runtime.DBRRunnableContext; @@ -86,7 +87,11 @@ public interface DBPDriver extends DBPObject ClassLoader getClassLoader(); - Collection getFiles(); + @NotNull + Collection getDriverFiles(); + + @NotNull + Collection getDriverFileSources(); Object getDriverInstance(DBRRunnableContext runnableContext) throws DBException; diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverFile.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverFile.java index 0a9eba4a0cab0ffd85e44d011c96bca317b8603d..1ca12d63b01b126d41affa1a517b9cc15b1c4453 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverFile.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverFile.java @@ -28,7 +28,22 @@ import java.io.File; */ public interface DBPDriverFile { - DBPDriverFileType getType(); + /** + * Driver file type + */ + enum FileType + { + jar, + lib, + executable, + license + } + + interface FileSource { + + } + + FileType getType(); OSDescriptor getSystem(); diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverFileType.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverFileType.java deleted file mode 100644 index 0a4d9a036a9d3cc317e30ff7c3d9dea6308b7c77..0000000000000000000000000000000000000000 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverFileType.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License (version 2) - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -package org.jkiss.dbeaver.model; - -/** - * Driver file type - */ -public enum DBPDriverFileType -{ - jar, - lib, - executable, - license -}