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

#1120 Client app name override.


Former-commit-id: 0424bddd
上级 f9eb41b7
......@@ -18,11 +18,10 @@
*/
package org.jkiss.dbeaver.ui.preferences;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.core.CoreMessages;
......@@ -42,6 +41,9 @@ public class PrefPageMetaData extends TargetPrefPage
private Button separateMetaConnectionCheck;
private Button caseSensitiveNamesCheck;
private Button overrideClientApplicationNameCheck;
private Text clientApplicationNameText;
public PrefPageMetaData()
{
super();
......@@ -54,7 +56,9 @@ public class PrefPageMetaData extends TargetPrefPage
return
store.contains(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES) ||
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
@Override
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);
caseSensitiveNamesCheck = UIUtils.createLabelCheckbox(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);
separateMetaConnectionCheck = UIUtils.createCheckbox(metadataGroup, CoreMessages.pref_page_database_general_separate_meta_connection, false);
caseSensitiveNamesCheck = UIUtils.createCheckbox(metadataGroup, CoreMessages.pref_page_database_general_checkbox_case_sensitive_names, 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;
}
private void updateClientAppEnablement() {
clientApplicationNameText.setEnabled(overrideClientApplicationNameCheck.getSelection());
}
@Override
protected void loadPreferences(DBPPreferenceStore store)
{
......@@ -88,6 +113,11 @@ public class PrefPageMetaData extends TargetPrefPage
readExpensiveCheck.setSelection(store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES));
separateMetaConnectionCheck.setSelection(store.getBoolean(ModelPreferences.META_SEPARATE_CONNECTION));
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) {
log.warn(e);
}
......@@ -100,6 +130,9 @@ public class PrefPageMetaData extends TargetPrefPage
store.setValue(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES, readExpensiveCheck.getSelection());
store.setValue(ModelPreferences.META_SEPARATE_CONNECTION, separateMetaConnectionCheck.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) {
log.warn(e);
}
......@@ -112,6 +145,9 @@ public class PrefPageMetaData extends TargetPrefPage
store.setToDefault(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES);
store.setToDefault(ModelPreferences.META_SEPARATE_CONNECTION);
store.setToDefault(ModelPreferences.META_CASE_SENSITIVE);
store.setToDefault(ModelPreferences.META_CLIENT_NAME_OVERRIDE);
store.setToDefault(ModelPreferences.META_CLIENT_NAME_VALUE);
}
@Override
......
......@@ -300,7 +300,7 @@ public class DB2DataSource extends JDBCDataSource implements DBSObjectSelector,
// Provide client info
try {
db2Connection.setClientInfo("ApplicationName",
CommonUtils.truncateString(DBUtils.getClientApplicationName(getContainer()) + " - " + purpose, 255));
CommonUtils.truncateString(DBUtils.getClientApplicationName(getContainer(), purpose), 255));
} catch (Throwable e) {
// just ignore
}
......
......@@ -375,7 +375,7 @@ public class MySQLDataSource extends JDBCDataSource implements DBSObjectSelector
{
// Provide client info
try {
mysqlConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer()) + " - " + purpose);
mysqlConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer(), purpose));
} catch (Throwable e) {
// just ignore
log.debug(e);
......
......@@ -208,7 +208,7 @@ public class OracleDataSource extends JDBCDataSource
protected Map<String, String> getInternalConnectionProperties(DBRProgressMonitor monitor, String purpose) throws DBCException {
Map<String, String> connectionsProps = new HashMap<>();
// 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;
}
......
......@@ -355,7 +355,7 @@ public class PostgreDataSource extends JDBCDataSource implements DBSObjectSelect
{
// Provide client info
try {
pgConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer()) + " - " + purpose);
pgConnection.setClientInfo("ApplicationName", DBUtils.getClientApplicationName(getContainer(), purpose));
} catch (Throwable e) {
// just ignore
log.debug(e);
......
......@@ -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_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
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$
......@@ -105,6 +108,10 @@ public final class ModelPreferences
PrefUtils.setDefaultPreferenceValue(store, MEMORY_CONTENT_MAX_SIZE, 10000);
PrefUtils.setDefaultPreferenceValue(store, META_SEPARATE_CONNECTION, true);
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_CACHE_CLOB, false);
PrefUtils.setDefaultPreferenceValue(store, CONTENT_CACHE_BLOB, false);
......
......@@ -1360,8 +1360,12 @@ public final class DBUtils {
});
}
public static String getClientApplicationName(DBPDataSourceContainer container) {
return GeneralUtils.getProductTitle();
public static String getClientApplicationName(DBPDataSourceContainer container, String purpose) {
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.
先完成此消息的编辑!
想要评论请 注册