提交 0502bb7f 编写于 作者: S Serge Rider

#1120 Client app name override.


Former-commit-id: 0424bddd
上级 f9eb41b7
...@@ -18,11 +18,10 @@ ...@@ -18,11 +18,10 @@
*/ */
package org.jkiss.dbeaver.ui.preferences; package org.jkiss.dbeaver.ui.preferences;
import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.widgets.Button; import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.*;
import org.eclipse.swt.widgets.Group;
import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.CoreMessages;
...@@ -42,6 +41,9 @@ public class PrefPageMetaData extends TargetPrefPage ...@@ -42,6 +41,9 @@ public class PrefPageMetaData extends TargetPrefPage
private Button separateMetaConnectionCheck; private Button separateMetaConnectionCheck;
private Button caseSensitiveNamesCheck; private Button caseSensitiveNamesCheck;
private Button overrideClientApplicationNameCheck;
private Text clientApplicationNameText;
public PrefPageMetaData() public PrefPageMetaData()
{ {
super(); super();
...@@ -54,7 +56,9 @@ public class PrefPageMetaData extends TargetPrefPage ...@@ -54,7 +56,9 @@ public class PrefPageMetaData extends TargetPrefPage
return return
store.contains(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES) || store.contains(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES) ||
store.contains(ModelPreferences.META_SEPARATE_CONNECTION) || store.contains(ModelPreferences.META_SEPARATE_CONNECTION) ||
store.contains(ModelPreferences.META_CASE_SENSITIVE) store.contains(ModelPreferences.META_CASE_SENSITIVE) ||
store.contains(ModelPreferences.META_CLIENT_NAME_OVERRIDE) ||
store.contains(ModelPreferences.META_CLIENT_NAME_VALUE)
; ;
} }
...@@ -67,20 +71,41 @@ public class PrefPageMetaData extends TargetPrefPage ...@@ -67,20 +71,41 @@ public class PrefPageMetaData extends TargetPrefPage
@Override @Override
protected Control createPreferenceContent(Composite parent) protected Control createPreferenceContent(Composite parent)
{ {
Composite composite = UIUtils.createPlaceholder(parent, 1); Composite composite = UIUtils.createPlaceholder(parent, 1, 5);
{ {
Group metadataGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_database_general_group_metadata, 2, SWT.NONE, 0); Group metadataGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_database_general_group_metadata, 1, GridData.HORIZONTAL_ALIGN_BEGINNING, 0);
separateMetaConnectionCheck = UIUtils.createLabelCheckbox(metadataGroup, CoreMessages.pref_page_database_general_separate_meta_connection, false); separateMetaConnectionCheck = UIUtils.createCheckbox(metadataGroup, CoreMessages.pref_page_database_general_separate_meta_connection, false);
caseSensitiveNamesCheck = UIUtils.createLabelCheckbox(metadataGroup, CoreMessages.pref_page_database_general_checkbox_case_sensitive_names, false); caseSensitiveNamesCheck = UIUtils.createCheckbox(metadataGroup, CoreMessages.pref_page_database_general_checkbox_case_sensitive_names, false);
readExpensiveCheck = UIUtils.createLabelCheckbox(metadataGroup, CoreMessages.pref_page_database_general_checkbox_show_row_count, false); readExpensiveCheck = UIUtils.createCheckbox(metadataGroup, CoreMessages.pref_page_database_general_checkbox_show_row_count, false);
} }
{
Group clientNameGroup = UIUtils.createControlGroup(composite, "Client Application Name", 2, GridData.FILL_HORIZONTAL, 0);
final Label label = UIUtils.createLabel(clientNameGroup,
"Client application name is passed to database server on connect to identify client connections.\n" +
"By default it is set to product name + product version. You can set it to any custom value.");
GridData gd = new GridData();
gd.horizontalSpan = 2;
label.setLayoutData(gd);
overrideClientApplicationNameCheck = UIUtils.createCheckbox(clientNameGroup, "Override client application name", null, false, 2);
overrideClientApplicationNameCheck.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
updateClientAppEnablement();
}
});
clientApplicationNameText = UIUtils.createLabelText(clientNameGroup, "Client Application Name", "");
}
return composite; return composite;
} }
private void updateClientAppEnablement() {
clientApplicationNameText.setEnabled(overrideClientApplicationNameCheck.getSelection());
}
@Override @Override
protected void loadPreferences(DBPPreferenceStore store) protected void loadPreferences(DBPPreferenceStore store)
{ {
...@@ -88,6 +113,11 @@ public class PrefPageMetaData extends TargetPrefPage ...@@ -88,6 +113,11 @@ public class PrefPageMetaData extends TargetPrefPage
readExpensiveCheck.setSelection(store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES)); readExpensiveCheck.setSelection(store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES));
separateMetaConnectionCheck.setSelection(store.getBoolean(ModelPreferences.META_SEPARATE_CONNECTION)); separateMetaConnectionCheck.setSelection(store.getBoolean(ModelPreferences.META_SEPARATE_CONNECTION));
caseSensitiveNamesCheck.setSelection(store.getBoolean(ModelPreferences.META_CASE_SENSITIVE)); caseSensitiveNamesCheck.setSelection(store.getBoolean(ModelPreferences.META_CASE_SENSITIVE));
overrideClientApplicationNameCheck.setSelection(store.getBoolean(ModelPreferences.META_CLIENT_NAME_OVERRIDE));
clientApplicationNameText.setText(store.getString(ModelPreferences.META_CLIENT_NAME_VALUE));
updateClientAppEnablement();
} catch (Exception e) { } catch (Exception e) {
log.warn(e); log.warn(e);
} }
...@@ -100,6 +130,9 @@ public class PrefPageMetaData extends TargetPrefPage ...@@ -100,6 +130,9 @@ public class PrefPageMetaData extends TargetPrefPage
store.setValue(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES, readExpensiveCheck.getSelection()); store.setValue(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES, readExpensiveCheck.getSelection());
store.setValue(ModelPreferences.META_SEPARATE_CONNECTION, separateMetaConnectionCheck.getSelection()); store.setValue(ModelPreferences.META_SEPARATE_CONNECTION, separateMetaConnectionCheck.getSelection());
store.setValue(ModelPreferences.META_CASE_SENSITIVE, caseSensitiveNamesCheck.getSelection()); store.setValue(ModelPreferences.META_CASE_SENSITIVE, caseSensitiveNamesCheck.getSelection());
store.setValue(ModelPreferences.META_CLIENT_NAME_OVERRIDE, overrideClientApplicationNameCheck.getSelection());
store.setValue(ModelPreferences.META_CLIENT_NAME_VALUE, clientApplicationNameText.getText());
} catch (Exception e) { } catch (Exception e) {
log.warn(e); log.warn(e);
} }
...@@ -112,6 +145,9 @@ public class PrefPageMetaData extends TargetPrefPage ...@@ -112,6 +145,9 @@ public class PrefPageMetaData extends TargetPrefPage
store.setToDefault(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES); store.setToDefault(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES);
store.setToDefault(ModelPreferences.META_SEPARATE_CONNECTION); store.setToDefault(ModelPreferences.META_SEPARATE_CONNECTION);
store.setToDefault(ModelPreferences.META_CASE_SENSITIVE); store.setToDefault(ModelPreferences.META_CASE_SENSITIVE);
store.setToDefault(ModelPreferences.META_CLIENT_NAME_OVERRIDE);
store.setToDefault(ModelPreferences.META_CLIENT_NAME_VALUE);
} }
@Override @Override
......
...@@ -300,7 +300,7 @@ public class DB2DataSource extends JDBCDataSource implements DBSObjectSelector, ...@@ -300,7 +300,7 @@ public class DB2DataSource extends JDBCDataSource implements DBSObjectSelector,
// Provide client info // Provide client info
try { try {
db2Connection.setClientInfo("ApplicationName", db2Connection.setClientInfo("ApplicationName",
CommonUtils.truncateString(DBUtils.getClientApplicationName(getContainer()) + " - " + purpose, 255)); CommonUtils.truncateString(DBUtils.getClientApplicationName(getContainer(), purpose), 255));
} catch (Throwable e) { } catch (Throwable e) {
// just ignore // just ignore
} }
......
...@@ -375,7 +375,7 @@ public class MySQLDataSource extends JDBCDataSource implements DBSObjectSelector ...@@ -375,7 +375,7 @@ public class MySQLDataSource extends JDBCDataSource implements DBSObjectSelector
{ {
// Provide client info // Provide client info
try { try {
mysqlConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer()) + " - " + purpose); mysqlConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer(), purpose));
} catch (Throwable e) { } catch (Throwable e) {
// just ignore // just ignore
log.debug(e); log.debug(e);
......
...@@ -208,7 +208,7 @@ public class OracleDataSource extends JDBCDataSource ...@@ -208,7 +208,7 @@ public class OracleDataSource extends JDBCDataSource
protected Map<String, String> getInternalConnectionProperties(DBRProgressMonitor monitor, String purpose) throws DBCException { protected Map<String, String> getInternalConnectionProperties(DBRProgressMonitor monitor, String purpose) throws DBCException {
Map<String, String> connectionsProps = new HashMap<>(); Map<String, String> connectionsProps = new HashMap<>();
// Program name // Program name
connectionsProps.put("v$session.program", CommonUtils.truncateString(DBUtils.getClientApplicationName(getContainer()) + " - " + purpose, 48)); connectionsProps.put("v$session.program", CommonUtils.truncateString(DBUtils.getClientApplicationName(getContainer(), purpose), 48));
return connectionsProps; return connectionsProps;
} }
......
...@@ -355,7 +355,7 @@ public class PostgreDataSource extends JDBCDataSource implements DBSObjectSelect ...@@ -355,7 +355,7 @@ public class PostgreDataSource extends JDBCDataSource implements DBSObjectSelect
{ {
// Provide client info // Provide client info
try { try {
pgConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer()) + " - " + purpose); pgConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer(), purpose));
} catch (Throwable e) { } catch (Throwable e) {
// just ignore // just ignore
log.debug(e); log.debug(e);
......
...@@ -53,6 +53,9 @@ public final class ModelPreferences ...@@ -53,6 +53,9 @@ public final class ModelPreferences
public static final String META_SEPARATE_CONNECTION = "database.meta.separate.connection"; //$NON-NLS-1$ public static final String META_SEPARATE_CONNECTION = "database.meta.separate.connection"; //$NON-NLS-1$
public static final String META_CASE_SENSITIVE = "database.meta.casesensitive"; //$NON-NLS-1$ public static final String META_CASE_SENSITIVE = "database.meta.casesensitive"; //$NON-NLS-1$
public static final String META_CLIENT_NAME_OVERRIDE = "database.meta.client.name.override"; //$NON-NLS-1$
public static final String META_CLIENT_NAME_VALUE = "database.meta.client.name.value"; //$NON-NLS-1$
// Network // Network
public static final String NET_TUNNEL_PORT_MIN = "net.tunnel.port.min"; //$NON-NLS-1$ public static final String NET_TUNNEL_PORT_MIN = "net.tunnel.port.min"; //$NON-NLS-1$
public static final String NET_TUNNEL_PORT_MAX = "net.tunnel.port.max"; //$NON-NLS-1$ public static final String NET_TUNNEL_PORT_MAX = "net.tunnel.port.max"; //$NON-NLS-1$
...@@ -105,6 +108,10 @@ public final class ModelPreferences ...@@ -105,6 +108,10 @@ public final class ModelPreferences
PrefUtils.setDefaultPreferenceValue(store, MEMORY_CONTENT_MAX_SIZE, 10000); PrefUtils.setDefaultPreferenceValue(store, MEMORY_CONTENT_MAX_SIZE, 10000);
PrefUtils.setDefaultPreferenceValue(store, META_SEPARATE_CONNECTION, true); PrefUtils.setDefaultPreferenceValue(store, META_SEPARATE_CONNECTION, true);
PrefUtils.setDefaultPreferenceValue(store, META_CASE_SENSITIVE, false); PrefUtils.setDefaultPreferenceValue(store, META_CASE_SENSITIVE, false);
PrefUtils.setDefaultPreferenceValue(store, META_CLIENT_NAME_OVERRIDE, false);
PrefUtils.setDefaultPreferenceValue(store, META_CLIENT_NAME_VALUE, "");
PrefUtils.setDefaultPreferenceValue(store, CONTENT_HEX_ENCODING, GeneralUtils.getDefaultFileEncoding()); PrefUtils.setDefaultPreferenceValue(store, CONTENT_HEX_ENCODING, GeneralUtils.getDefaultFileEncoding());
PrefUtils.setDefaultPreferenceValue(store, CONTENT_CACHE_CLOB, false); PrefUtils.setDefaultPreferenceValue(store, CONTENT_CACHE_CLOB, false);
PrefUtils.setDefaultPreferenceValue(store, CONTENT_CACHE_BLOB, false); PrefUtils.setDefaultPreferenceValue(store, CONTENT_CACHE_BLOB, false);
......
...@@ -1360,8 +1360,12 @@ public final class DBUtils { ...@@ -1360,8 +1360,12 @@ public final class DBUtils {
}); });
} }
public static String getClientApplicationName(DBPDataSourceContainer container) { public static String getClientApplicationName(DBPDataSourceContainer container, String purpose) {
return GeneralUtils.getProductTitle(); if (container.getPreferenceStore().getBoolean(ModelPreferences.META_CLIENT_NAME_OVERRIDE)) {
return container.getPreferenceStore().getString(ModelPreferences.META_CLIENT_NAME_VALUE);
}
final String productTitle = GeneralUtils.getProductTitle();
return purpose == null ? productTitle : productTitle + " - " + purpose;
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册