1 /**********************************************************************
2 * Copyright (c) 2012 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.preferences
;
16 import org
.eclipse
.jface
.preference
.IPreferenceStore
;
17 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.logging
.ControlCommandLogger
;
21 * Singleton class to access LTTng tracer control preferences.
24 * @author Bernd Hufmann
26 public class ControlPreferences
{
28 // ------------------------------------------------------------------------
30 // ------------------------------------------------------------------------
32 * Trace control log file
34 public static final String TRACE_CONTROL_LOG_FILENAME
= "lttng_tracer_control.log"; //$NON-NLS-1$
38 * The tracing group preference
40 public static final String TRACE_CONTROL_TRACING_GROUP_PREF
= "trace.control.tracing.group"; //$NON-NLS-1$
42 * The log commands preference
44 public static final String TRACE_CONTROL_LOG_COMMANDS_PREF
= "trace.control.log.commands"; //$NON-NLS-1$
46 * The log append preference
48 public static final String TRACE_CONTROL_LOG_APPEND_PREF
= "trace.control.log.append"; //$NON-NLS-1$
50 * The log file path preference
52 public static final String TRACE_CONTROL_LOG_FILE_PATH_PREF
= "trace.control.log.path"; //$NON-NLS-1$
54 * The verbose level preference
56 public static final String TRACE_CONTROL_VERBOSE_LEVEL_PREF
= "trace.control.verbose.level"; //$NON-NLS-1$
58 * The verbose level value for none
60 public static final String TRACE_CONTROL_VERBOSE_LEVEL_NONE
= "trace.control.verbose.level.none"; //$NON-NLS-1$
62 * The verbose level value for level 1 (-v)
64 public static final String TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
= "trace.control.verbose.level.v"; //$NON-NLS-1$
66 * The verbose level value for level 2 (-vv)
68 public static final String TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
= "trace.control.verbose.level.vv"; //$NON-NLS-1$
70 * The verbose level value for level 3 (-vvv)
72 public static final String TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
= "trace.control.verbose.level.vvv"; //$NON-NLS-1$
74 * The default tracing group
76 public static final String TRACE_CONTROL_DEFAULT_TRACING_GROUP
= "tracing"; //$NON-NLS-1$
78 * The default tracing log file name with absolute path
80 public static final String TRACE_CONTROL_DEFAULT_LOG_PATH
= System
.getProperty("user.home") + File
.separator
+ TRACE_CONTROL_LOG_FILENAME
; //$NON-NLS-1$
82 // ------------------------------------------------------------------------
84 // ------------------------------------------------------------------------
86 * The trace control preferences singleton instance.
88 private static ControlPreferences fInstance
= null;
90 * The preference store reference
92 private IPreferenceStore fPreferenceStore
= null;
94 // ------------------------------------------------------------------------
96 // ------------------------------------------------------------------------
100 private ControlPreferences() {
103 // ------------------------------------------------------------------------
105 // ------------------------------------------------------------------------
107 * Returns the trace control preferences singleton instance
109 * @return the trace control preferences singleton instance
111 public synchronized static ControlPreferences
getInstance() {
112 if (fInstance
== null) {
113 fInstance
= new ControlPreferences();
119 * @return the preference store
121 public IPreferenceStore
getPreferenceStore() {
122 return fPreferenceStore
;
126 * @return true if tracing group is set to default
128 public boolean isDefaultTracingGroup() {
129 return fPreferenceStore
.getString(TRACE_CONTROL_TRACING_GROUP_PREF
).equals(fPreferenceStore
.getDefaultString(TRACE_CONTROL_TRACING_GROUP_PREF
));
133 * @return value of tracing group preference
135 public String
getTracingGroup() {
136 return fPreferenceStore
.getString(TRACE_CONTROL_TRACING_GROUP_PREF
);
140 * @return whether is logging is enabled
142 public boolean isLoggingEnabled() {
143 return fPreferenceStore
.getBoolean(TRACE_CONTROL_LOG_COMMANDS_PREF
);
147 * @return whether an existing log file will appended or not
149 public boolean isAppend() {
150 return fPreferenceStore
.getBoolean(ControlPreferences
.TRACE_CONTROL_LOG_APPEND_PREF
);
154 * @return verbose level preference
156 public String
getVerboseLevel() {
157 return fPreferenceStore
.getString(TRACE_CONTROL_VERBOSE_LEVEL_PREF
);
161 * @return absolute log file path
163 public String
getLogfilePath() {
164 return fPreferenceStore
.getString(TRACE_CONTROL_LOG_FILE_PATH_PREF
);
167 // ------------------------------------------------------------------------
169 // ------------------------------------------------------------------------
171 * Initializes the control preferences (e.g. enable open log file)
173 public void init(IPreferenceStore preferenceStore
) {
174 fPreferenceStore
= preferenceStore
;
176 if (fPreferenceStore
.getBoolean(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
)) {
177 ControlCommandLogger
.init(getLogfilePath(), isAppend());
182 * Disposes any resource (e.g. close log file).
184 public void dispose() {
185 ControlCommandLogger
.close();