/* * DBeaver - Universal Database Manager * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) * Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jkiss.dbeaver.ui.preferences; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.swt.SWT; 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.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.IWorkbenchPropertyPage; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; import org.jkiss.dbeaver.model.qm.QMConstants; import org.jkiss.dbeaver.model.qm.QMObjectType; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.DialogUtils; import org.jkiss.dbeaver.utils.PrefUtils; import org.jkiss.utils.CommonUtils; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * PrefPageQueryManager */ public class PrefPageQueryManager extends AbstractPrefPage implements IWorkbenchPreferencePage, IWorkbenchPropertyPage { public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.main.qm"; //$NON-NLS-1$ private Button checkObjectTypeSessions; private Button checkObjectTypeTxn; private Button checkObjectTypeQueries; private Button checkQueryTypeUser; private Button checkQueryTypeUserFiltered; private Button checkQueryTypeScript; private Button checkQueryTypeUtil; private Button checkQueryTypeMeta; private Button checkQueryTypeDDL; private Text textHistoryDays; private Text textEntriesPerPage; private Button checkStoreLog; private Text textOutputFolder; @Override public void init(IWorkbench workbench) { } @Override protected Control createContents(Composite parent) { Composite composite = UIUtils.createPlaceholder(parent, 1); Composite filterSettings = UIUtils.createPlaceholder(composite, 2, 5); Group groupObjects = UIUtils.createControlGroup(filterSettings, CoreMessages.pref_page_query_manager_group_object_types, 1, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 170); checkObjectTypeSessions = UIUtils.createCheckbox(groupObjects, CoreMessages.pref_page_query_manager_checkbox_sessions, false); checkObjectTypeTxn = UIUtils.createCheckbox(groupObjects, CoreMessages.pref_page_query_manager_checkbox_transactions, false); //checkObjectTypeScripts = UIUtils.createCheckbox(groupObjects, CoreMessages.pref_page_query_manager_checkbox_scripts, false); checkObjectTypeQueries = UIUtils.createCheckbox(groupObjects, CoreMessages.pref_page_query_manager_checkbox_queries, false); Group groupQueryTypes = UIUtils.createControlGroup(filterSettings, CoreMessages.pref_page_query_manager_group_query_types, 1, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 170); checkQueryTypeUser = UIUtils.createCheckbox(groupQueryTypes, CoreMessages.pref_page_query_manager_checkbox_user_queries, false); checkQueryTypeUserFiltered = UIUtils.createCheckbox(groupQueryTypes, CoreMessages.pref_page_query_manager_checkbox_user_filtered, false); checkQueryTypeScript = UIUtils.createCheckbox(groupQueryTypes, CoreMessages.pref_page_query_manager_checkbox_user_scripts, false); checkQueryTypeUtil = UIUtils.createCheckbox(groupQueryTypes, CoreMessages.pref_page_query_manager_checkbox_utility_functions, false); checkQueryTypeMeta = UIUtils.createCheckbox(groupQueryTypes, CoreMessages.pref_page_query_manager_checkbox_metadata_read, false); checkQueryTypeDDL = UIUtils.createCheckbox(groupQueryTypes, CoreMessages.pref_page_query_manager_checkbox_metadata_write, false); { Group viewSettings = UIUtils.createControlGroup(composite, CoreMessages.pref_page_query_manager_group_settings, 2, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0); textEntriesPerPage = UIUtils.createLabelText(viewSettings, CoreMessages.pref_page_query_manager_label_entries_per_page, "", SWT.BORDER, new GridData(50, SWT.DEFAULT)); //$NON-NLS-2$ } { Group storageSettings = UIUtils.createControlGroup(composite, CoreMessages.pref_page_query_manager_group_storage, 2, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0); checkStoreLog = UIUtils.createCheckbox(storageSettings, CoreMessages.pref_page_query_manager_checkbox_store_log_file, false); GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalSpan = 2; checkStoreLog.setLayoutData(gd); checkStoreLog.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { UIUtils.enableWithChildren(textOutputFolder.getParent(), checkStoreLog.getSelection()); } }); textOutputFolder = DialogUtils.createOutputFolderChooser(storageSettings, CoreMessages.pref_page_query_manager_logs_folder, null); textHistoryDays = UIUtils.createLabelText(storageSettings, CoreMessages.pref_page_query_manager_label_days_to_store_log, "", SWT.BORDER, new GridData(50, SWT.DEFAULT)); //$NON-NLS-2$ textHistoryDays.setEnabled(false); } performDefaults(); return composite; } @Override protected void performDefaults() { DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); Collection<QMObjectType> objectTypes = QMObjectType.fromString(store.getString(QMConstants.PROP_OBJECT_TYPES)); Collection<String> queryTypes = CommonUtils.splitString(store.getString(QMConstants.PROP_QUERY_TYPES), ','); checkObjectTypeSessions.setSelection(objectTypes.contains(QMObjectType.session)); checkObjectTypeTxn.setSelection(objectTypes.contains(QMObjectType.txn)); checkObjectTypeQueries.setSelection(objectTypes.contains(QMObjectType.query)); checkQueryTypeUser.setSelection(queryTypes.contains(DBCExecutionPurpose.USER.name())); checkQueryTypeUserFiltered.setSelection(queryTypes.contains(DBCExecutionPurpose.USER_FILTERED.name())); checkQueryTypeScript.setSelection(queryTypes.contains(DBCExecutionPurpose.USER_SCRIPT.name())); checkQueryTypeUtil.setSelection(queryTypes.contains(DBCExecutionPurpose.UTIL.name())); checkQueryTypeMeta.setSelection(queryTypes.contains(DBCExecutionPurpose.META.name())); checkQueryTypeDDL.setSelection(queryTypes.contains(DBCExecutionPurpose.META_DDL.name())); textHistoryDays.setText(store.getString(QMConstants.PROP_HISTORY_DAYS)); textEntriesPerPage.setText(store.getString(QMConstants.PROP_ENTRIES_PER_PAGE)); checkStoreLog.setSelection(store.getBoolean(QMConstants.PROP_STORE_LOG_FILE)); textOutputFolder.setText(store.getString(QMConstants.PROP_LOG_DIRECTORY)); UIUtils.enableWithChildren(textOutputFolder.getParent(), checkStoreLog.getSelection()); super.performDefaults(); } @Override public boolean performOk() { List<QMObjectType> objectTypes = new ArrayList<>(); List<String> queryTypes = new ArrayList<>(); if (checkObjectTypeSessions.getSelection()) objectTypes.add(QMObjectType.session); if (checkObjectTypeTxn.getSelection()) objectTypes.add(QMObjectType.txn); if (checkObjectTypeQueries.getSelection()) objectTypes.add(QMObjectType.query); if (checkQueryTypeUser.getSelection()) queryTypes.add(DBCExecutionPurpose.USER.name()); if (checkQueryTypeUserFiltered.getSelection()) queryTypes.add(DBCExecutionPurpose.USER_FILTERED.name()); if (checkQueryTypeScript.getSelection()) queryTypes.add(DBCExecutionPurpose.USER_SCRIPT.name()); if (checkQueryTypeUtil.getSelection()) queryTypes.add(DBCExecutionPurpose.UTIL.name()); if (checkQueryTypeMeta.getSelection()) queryTypes.add(DBCExecutionPurpose.META.name()); if (checkQueryTypeDDL.getSelection()) queryTypes.add(DBCExecutionPurpose.META_DDL.name()); Integer historyDays = UIUtils.getTextInteger(textHistoryDays); Integer entriesPerPage = UIUtils.getTextInteger(textEntriesPerPage); DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); store.setValue(QMConstants.PROP_OBJECT_TYPES, QMObjectType.toString(objectTypes)); store.setValue(QMConstants.PROP_QUERY_TYPES, CommonUtils.makeString(queryTypes, ',')); if (historyDays != null) { store.setValue(QMConstants.PROP_HISTORY_DAYS, historyDays); } if (entriesPerPage != null) { store.setValue(QMConstants.PROP_ENTRIES_PER_PAGE, entriesPerPage); } store.setValue(QMConstants.PROP_STORE_LOG_FILE, checkStoreLog.getSelection()); store.setValue(QMConstants.PROP_LOG_DIRECTORY, textOutputFolder.getText()); PrefUtils.savePreferenceStore(store); return super.performOk(); } @Override public IAdaptable getElement() { return null; } @Override public void setElement(IAdaptable element) { } }