diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDataSourceProvider.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDataSourceProvider.java index efede33c86b784df26665787f8261876cc8accb1..6f2207fa3f88515ab45c858217222ff298dbb952 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDataSourceProvider.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDataSourceProvider.java @@ -18,7 +18,6 @@ package org.jkiss.dbeaver.model; import org.eclipse.jface.operation.IRunnableContext; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -53,7 +52,7 @@ public interface DBPDataSourceProvider * @return property group which contains all supported properties * @throws DBException on any error */ - IPropertyDescriptor[] getConnectionProperties( + DBPPropertyDescriptor[] getConnectionProperties( IRunnableContext runnableContext, DBPDriver driver, DBPConnectionInfo connectionInfo) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDriver.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDriver.java index 9a04f1d1b1631c8a5baf737502f43523bb009e0e..3056693d74195fa490dcb291e9a836a107cb330b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDriver.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPDriver.java @@ -20,7 +20,6 @@ package org.jkiss.dbeaver.model; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.dbeaver.DBException; import java.util.Collection; @@ -66,7 +65,7 @@ public interface DBPDriver extends DBPObject boolean isCustomDriverLoader(); - Collection getConnectionPropertyDescriptors(); + Collection getConnectionPropertyDescriptors(); Map getDefaultConnectionProperties(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSourceProvider.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSourceProvider.java index 4afe520d278aebaed7bc03662ab049d2b3871530..4209894e4fa38ddb466657b1dbffdf0533bb3eab 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSourceProvider.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSourceProvider.java @@ -17,12 +17,11 @@ */ package org.jkiss.dbeaver.model.impl.jdbc; -import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.core.Log; import org.eclipse.jface.operation.IRunnableContext; -import org.eclipse.ui.views.properties.IPropertyDescriptor; +import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.ui.properties.PropertyDescriptorEx; @@ -50,12 +49,12 @@ public abstract class JDBCDataSourceProvider implements DBPDataSourceProvider { } @Override - public IPropertyDescriptor[] getConnectionProperties( + public DBPPropertyDescriptor[] getConnectionProperties( IRunnableContext runnableContext, DBPDriver driver, DBPConnectionInfo connectionInfo) throws DBException { - Collection props = null; + Collection props = null; Object driverInstance = driver.getDriverInstance(runnableContext); if (driverInstance instanceof Driver) { props = readDriverProperties(connectionInfo, (Driver) driverInstance); @@ -63,10 +62,10 @@ public abstract class JDBCDataSourceProvider implements DBPDataSourceProvider { if (props == null) { return null; } - return props.toArray(new IPropertyDescriptor[props.size()]); + return props.toArray(new DBPPropertyDescriptor[props.size()]); } - private Collection readDriverProperties( + private Collection readDriverProperties( DBPConnectionInfo connectionInfo, Driver driver) throws DBException { @@ -83,7 +82,7 @@ public abstract class JDBCDataSourceProvider implements DBPDataSourceProvider { return null; } - List properties = new ArrayList(); + List properties = new ArrayList(); for (DriverPropertyInfo desc : propDescs) { if (DBConstants.DATA_SOURCE_PROPERTY_USER.equals(desc.name) || DBConstants.DATA_SOURCE_PROPERTY_PASSWORD.equals(desc.name)) { // Skip user/password properties diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceProviderDescriptor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceProviderDescriptor.java index ca0ba4a244fa8314ed8406cc2204b7d38ff6bad7..67b464bdea775ed0986ed0318a30be5ee2ecea99 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceProviderDescriptor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceProviderDescriptor.java @@ -23,11 +23,11 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.jface.text.templates.TemplateContextType; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPDataSourceProvider; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.registry.tree.*; import org.jkiss.dbeaver.ui.DBIcon; @@ -58,7 +58,7 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor private DBXTreeNode treeDescriptor; private final Map treeNodeMap = new HashMap(); private boolean driversManagable; - private final List driverProperties = new ArrayList(); + private final List driverProperties = new ArrayList(); private final List drivers = new ArrayList(); private final List views = new ArrayList(); private final Map toolGroups = new LinkedHashMap(); @@ -99,7 +99,11 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor this.driversManagable = driversElement.getAttribute(RegistryConstants.ATTR_MANAGABLE) == null || CommonUtils.getBoolean(driversElement.getAttribute(RegistryConstants.ATTR_MANAGABLE)); for (IConfigurationElement driverElement : driversElement.getChildren(RegistryConstants.TAG_DRIVER)) { - this.drivers.add(loadDriver(driverElement)); + try { + this.drivers.add(loadDriver(driverElement)); + } catch (Exception e) { + log.error("Error loading driver", e); + } } } } @@ -200,14 +204,14 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor return driversManagable; } - public List getDriverProperties() + public List getDriverProperties() { return driverProperties; } - public IPropertyDescriptor getDriverProperty(String name) + public DBPPropertyDescriptor getDriverProperty(String name) { - for (IPropertyDescriptor prop : driverProperties) { + for (DBPPropertyDescriptor prop : driverProperties) { if (prop.getId().equals(name)) { return prop; } 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 69a93f717be070c93188b55abcb324b78af27814..86f5a5b01cd303d522e15d498a1c782754dd47b7 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 @@ -17,7 +17,6 @@ */ package org.jkiss.dbeaver.registry; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; @@ -33,12 +32,12 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.runtime.RuntimeUtils; @@ -47,7 +46,6 @@ import org.jkiss.dbeaver.ui.OverlayImageDescriptor; 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.properties.IPropertyDescriptorEx; import org.jkiss.dbeaver.ui.properties.PropertyDescriptorEx; import org.jkiss.dbeaver.utils.ContentUtils; import org.jkiss.utils.CommonUtils; @@ -109,7 +107,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver private final List files = new ArrayList(); private final List origFiles = new ArrayList(); private final List pathList = new ArrayList(); - private final List connectionPropertyDescriptors = new ArrayList(); + private final List connectionPropertyDescriptors = new ArrayList(); private final List supportedSystems = new ArrayList(); private final List driverReplacements = new ArrayList(); @@ -703,7 +701,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver } @Override - public List getConnectionPropertyDescriptors() + public List getConnectionPropertyDescriptors() { return connectionPropertyDescriptors; } @@ -750,11 +748,8 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver public void setDriverParameter(String name, String value, boolean setDefault) { - Object valueObject = value; - IPropertyDescriptor prop = getProviderDescriptor().getDriverProperty(name); - if (prop instanceof IPropertyDescriptorEx) { - valueObject = RuntimeUtils.convertString(value, ((IPropertyDescriptorEx)prop).getDataType()); - } + DBPPropertyDescriptor prop = getProviderDescriptor().getDriverProperty(name); + Object valueObject = prop == null ? value : RuntimeUtils.convertString(value, prop.getDataType()); customParameters.put(name, valueObject); if (setDefault) { defaultParameters.put(name, valueObject); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/transfer/DataTransferProcessorDescriptor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/transfer/DataTransferProcessorDescriptor.java index c2fd926145227d62c08e7a68c5f3433fdeb37daf..89ec6ecb298d57a78862fdfb93f4431c07a669fe 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/transfer/DataTransferProcessorDescriptor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/transfer/DataTransferProcessorDescriptor.java @@ -20,8 +20,8 @@ package org.jkiss.dbeaver.registry.transfer; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; import org.jkiss.dbeaver.registry.AbstractDescriptor; import org.jkiss.dbeaver.registry.RegistryConstants; import org.jkiss.dbeaver.tools.transfer.IDataTransferProcessor; @@ -43,7 +43,7 @@ public class DataTransferProcessorDescriptor extends AbstractDescriptor private final String name; private final String description; private final Image icon; - private final List properties = new ArrayList(); + private final List properties = new ArrayList(); public DataTransferProcessorDescriptor(DataTransferNodeDescriptor node, IConfigurationElement config) { @@ -84,7 +84,7 @@ public class DataTransferProcessorDescriptor extends AbstractDescriptor return icon; } - public List getProperties() { + public List getProperties() { return properties; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ConnectionPropertiesControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ConnectionPropertiesControl.java index d6af543d259dff29bf02be179ada9500fccca013..b5e328077d9bc1158ac89f1b1a89acc29335f9e1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ConnectionPropertiesControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/ConnectionPropertiesControl.java @@ -29,6 +29,7 @@ import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.model.DBConstants; import org.jkiss.dbeaver.model.DBPConnectionInfo; import org.jkiss.dbeaver.model.DBPDriver; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; import org.jkiss.dbeaver.ui.dialogs.EnterNameDialog; import org.jkiss.dbeaver.ui.properties.PropertyDescriptorEx; import org.jkiss.dbeaver.ui.properties.PropertySourceCustom; @@ -46,8 +47,8 @@ public class ConnectionPropertiesControl extends PropertyTreeViewer { public static final String USER_PROPERTIES_CATEGORY = CoreMessages.controls_connection_properties_category_user_properties; - private List driverProvidedProperties; - private List customProperties; + private List driverProvidedProperties; + private List customProperties; public ConnectionPropertiesControl(Composite parent, int style) { @@ -120,8 +121,8 @@ public class ConnectionPropertiesControl extends PropertyTreeViewer { } } - private List getAllProperties(DBPDriver driver, boolean includeCustom) { - List propertyDescriptors = new ArrayList(); + private List getAllProperties(DBPDriver driver, boolean includeCustom) { + List propertyDescriptors = new ArrayList(); propertyDescriptors.addAll(driver.getConnectionPropertyDescriptors()); if (driverProvidedProperties != null) { propertyDescriptors.addAll(driverProvidedProperties); @@ -135,9 +136,9 @@ public class ConnectionPropertiesControl extends PropertyTreeViewer { private void loadDriverProperties(IRunnableContext runnableContext, DBPDriver driver, DBPConnectionInfo connectionInfo) { try { - final IPropertyDescriptor[] connectionsProps = + final DBPPropertyDescriptor[] connectionsProps = driver.getDataSourceProvider().getConnectionProperties(runnableContext, driver, connectionInfo); - driverProvidedProperties = new ArrayList(); + driverProvidedProperties = new ArrayList(); if (connectionsProps != null) { Collections.addAll(driverProvidedProperties, connectionsProps); } @@ -150,12 +151,12 @@ public class ConnectionPropertiesControl extends PropertyTreeViewer { { // Collect all driver (and all other) properties Set propNames = new TreeSet(); - List allProperties = getAllProperties(driver, false); - for (IPropertyDescriptor prop : allProperties) { + List allProperties = getAllProperties(driver, false); + for (DBPPropertyDescriptor prop : allProperties) { propNames.add(CommonUtils.toString(prop.getId())); } - customProperties = new ArrayList(); + customProperties = new ArrayList(); // Find prop values which are not from driver for (Object propId : properties.keySet()) { final String propName = propId.toString(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceCustom.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceCustom.java index 140cee6680d107d7f8bfc96d2b461bf2347e3579..b1740bb1eb55fb5ec05052c2ae991926c3d0bff7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceCustom.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceCustom.java @@ -18,6 +18,7 @@ package org.jkiss.dbeaver.ui.properties; import org.eclipse.ui.views.properties.IPropertyDescriptor; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.utils.CommonUtils; @@ -28,7 +29,7 @@ import java.util.*; */ public class PropertySourceCustom implements IPropertySourceEx { - private List props = new ArrayList(); + private List props = new ArrayList(); private Map originalValues = new TreeMap(); private Map propValues = new TreeMap(); @@ -38,7 +39,7 @@ public class PropertySourceCustom implements IPropertySourceEx { { } - public PropertySourceCustom(Collection properties, Map values) + public PropertySourceCustom(Collection properties, Map values) { addProperties(properties); setValues(values); @@ -50,10 +51,10 @@ public class PropertySourceCustom implements IPropertySourceEx { // Set only allowed properties + transform property types for (Map.Entry value : values.entrySet()) { Object propValue = value.getValue(); - for (IPropertyDescriptor prop : props) { + for (DBPPropertyDescriptor prop : props) { if (prop.getId().equals(value.getKey())) { - if (propValue instanceof String && prop instanceof IPropertyDescriptorEx) { - propValue = RuntimeUtils.convertString((String) value.getValue(), ((IPropertyDescriptorEx) prop).getDataType()); + if (propValue instanceof String) { + propValue = RuntimeUtils.convertString((String) value.getValue(), prop.getDataType()); } originalValues.put(value.getKey(), propValue); break; @@ -81,15 +82,13 @@ public class PropertySourceCustom implements IPropertySourceEx { return allValues; } - public void addProperties(Collection properties) + public void addProperties(Collection properties) { props.addAll(properties); - for (IPropertyDescriptor prop : properties) { - if (prop instanceof IPropertyDescriptorEx) { - final Object defaultValue = ((IPropertyDescriptorEx) prop).getDefaultValue(); - if (defaultValue != null) { - defaultValues.put(prop.getId(), defaultValue); - } + for (DBPPropertyDescriptor prop : properties) { + final Object defaultValue = prop.getDefaultValue(); + if (defaultValue != null) { + defaultValues.put(prop.getId(), defaultValue); } } } diff --git a/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java b/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java index 714dd92b873091a396c71a40f4c465daab628460..3906cba2598d72966b9f4aadee4d432a371d67cb 100644 --- a/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java +++ b/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/WMIDataSourceProvider.java @@ -18,7 +18,6 @@ package org.jkiss.dbeaver.ext.wmi; import org.eclipse.jface.operation.IRunnableContext; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.ext.wmi.model.WMIDataSource; @@ -45,7 +44,7 @@ public class WMIDataSourceProvider implements DBPDataSourceProvider { } @Override - public IPropertyDescriptor[] getConnectionProperties( + public DBPPropertyDescriptor[] getConnectionProperties( IRunnableContext runnableContext, DBPDriver driver, DBPConnectionInfo connectionInfo) throws DBException