blob: 12aea9b5b3fe9a4a62d8951189b62088280721cd [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2012, 2014 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Bernd Hufmann - Initial API and implementation
**********************************************************************/
package org.eclipse.tracecompass.internal.lttng2.control.ui.views.preferences;
import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
import java.io.File;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.logging.ControlCommandLogger;
/**
* <p>
* Singleton class to access LTTng tracer control preferences.
* </p>
*
* @author Bernd Hufmann
*/
public class ControlPreferences {
// ------------------------------------------------------------------------
// Constants
// ------------------------------------------------------------------------
/**
* Trace control log file
*/
public static final String TRACE_CONTROL_LOG_FILENAME = "lttng_tracer_control.log"; //$NON-NLS-1$
// Preference strings
/**
* The tracing group preference
*/
public static final String TRACE_CONTROL_TRACING_GROUP_PREF = "trace.control.tracing.group"; //$NON-NLS-1$
/**
* The log commands preference
*/
public static final String TRACE_CONTROL_LOG_COMMANDS_PREF = "trace.control.log.commands"; //$NON-NLS-1$
/**
* The log append preference
*/
public static final String TRACE_CONTROL_LOG_APPEND_PREF = "trace.control.log.append"; //$NON-NLS-1$
/**
* The log file path preference
*/
public static final String TRACE_CONTROL_LOG_FILE_PATH_PREF = "trace.control.log.path"; //$NON-NLS-1$
/**
* The verbose level preference
*/
public static final String TRACE_CONTROL_VERBOSE_LEVEL_PREF = "trace.control.verbose.level"; //$NON-NLS-1$
/**
* The verbose level value for none
*/
public static final String TRACE_CONTROL_VERBOSE_LEVEL_NONE = "trace.control.verbose.level.none"; //$NON-NLS-1$
/**
* The verbose level value for level 1 (-v)
*/
public static final String TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE = "trace.control.verbose.level.v"; //$NON-NLS-1$
/**
* The verbose level value for level 2 (-vv)
*/
public static final String TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE = "trace.control.verbose.level.vv"; //$NON-NLS-1$
/**
* The verbose level value for level 3 (-vvv)
*/
public static final String TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE = "trace.control.verbose.level.vvv"; //$NON-NLS-1$
/**
* The default tracing group
*/
public static final String TRACE_CONTROL_DEFAULT_TRACING_GROUP = "tracing"; //$NON-NLS-1$
/**
* The default tracing log file name with absolute path
*/
public static final String TRACE_CONTROL_DEFAULT_LOG_PATH = System.getProperty("user.home") + File.separator + TRACE_CONTROL_LOG_FILENAME; //$NON-NLS-1$
/**
* Default timeout value used for executing commands, in seconds
*/
public static final int TRACE_CONTROL_DEFAULT_TIMEOUT_VALUE = 15;
/**
* Minimum timeout value used for executing commands, in seconds
*/
public static final int TRACE_CONTROL_MIN_TIMEOUT_VALUE = 5;
/**
* Maximum timeout value used for executing commands, in seconds
*/
public static final int TRACE_CONTROL_MAX_TIMEOUT_VALUE = 600;
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
/**
* The trace control preferences singleton instance.
*/
private static ControlPreferences fInstance = null;
/**
* The preference store reference
*/
private IPreferenceStore fPreferenceStore = null;
// ------------------------------------------------------------------------
// Constructor
// ------------------------------------------------------------------------
/**
* Private constructor
*/
private ControlPreferences() {
}
// ------------------------------------------------------------------------
// Accessors
// ------------------------------------------------------------------------
/**
* Returns the trace control preferences singleton instance
*
* @return the trace control preferences singleton instance
*/
public static synchronized ControlPreferences getInstance() {
if (fInstance == null) {
fInstance = new ControlPreferences();
}
return fInstance;
}
/**
* @return the preference store
*/
public IPreferenceStore getPreferenceStore() {
return fPreferenceStore;
}
/**
* @return true if tracing group is set to default
*/
public boolean isDefaultTracingGroup() {
return fPreferenceStore.getString(TRACE_CONTROL_TRACING_GROUP_PREF).equals(fPreferenceStore.getDefaultString(TRACE_CONTROL_TRACING_GROUP_PREF));
}
/**
* @return value of tracing group preference
*/
public @NonNull String getTracingGroup() {
return checkNotNull(fPreferenceStore.getString(TRACE_CONTROL_TRACING_GROUP_PREF));
}
/**
* @return whether is logging is enabled
*/
public boolean isLoggingEnabled() {
return fPreferenceStore.getBoolean(TRACE_CONTROL_LOG_COMMANDS_PREF);
}
/**
* @return whether an existing log file will appended or not
*/
public boolean isAppend() {
return fPreferenceStore.getBoolean(ControlPreferences.TRACE_CONTROL_LOG_APPEND_PREF);
}
/**
* @return verbose level preference
*/
public String getVerboseLevel() {
return fPreferenceStore.getString(TRACE_CONTROL_VERBOSE_LEVEL_PREF);
}
/**
* @return absolute log file path
*/
public String getLogfilePath() {
return fPreferenceStore.getString(TRACE_CONTROL_LOG_FILE_PATH_PREF);
}
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
/**
* Initializes the control preferences (e.g. enable open log file)
*
* @param preferenceStore
* The preference store to assign
*/
public void init(IPreferenceStore preferenceStore) {
fPreferenceStore = preferenceStore;
if (fPreferenceStore.getBoolean(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF)) {
ControlCommandLogger.init(getLogfilePath(), isAppend());
}
}
/**
* Disposes any resource (e.g. close log file).
*/
public void dispose() {
ControlCommandLogger.close();
}
}