9d88d223f1f86bb09f16376e1cf3d228c838ca2b
[deliverable/tracecompass.git] / org.eclipse.tracecompass.lttng2.control.ui / src / org / eclipse / tracecompass / internal / lttng2 / control / ui / views / preferences / ControlPreferences.java
1 /**********************************************************************
2 * Copyright (c) 2012, 2014 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.preferences;
13
14 import java.io.File;
15
16 import org.eclipse.jface.preference.IPreferenceStore;
17 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.logging.ControlCommandLogger;
18
19 /**
20 * <p>
21 * Singleton class to access LTTng tracer control preferences.
22 * </p>
23 *
24 * @author Bernd Hufmann
25 */
26 public class ControlPreferences {
27
28 // ------------------------------------------------------------------------
29 // Constants
30 // ------------------------------------------------------------------------
31 /**
32 * Trace control log file
33 */
34 public static final String TRACE_CONTROL_LOG_FILENAME = "lttng_tracer_control.log"; //$NON-NLS-1$
35
36 // Preference strings
37 /**
38 * The tracing group preference
39 */
40 public static final String TRACE_CONTROL_TRACING_GROUP_PREF = "trace.control.tracing.group"; //$NON-NLS-1$
41 /**
42 * The log commands preference
43 */
44 public static final String TRACE_CONTROL_LOG_COMMANDS_PREF = "trace.control.log.commands"; //$NON-NLS-1$
45 /**
46 * The log append preference
47 */
48 public static final String TRACE_CONTROL_LOG_APPEND_PREF = "trace.control.log.append"; //$NON-NLS-1$
49 /**
50 * The log file path preference
51 */
52 public static final String TRACE_CONTROL_LOG_FILE_PATH_PREF = "trace.control.log.path"; //$NON-NLS-1$
53 /**
54 * The verbose level preference
55 */
56 public static final String TRACE_CONTROL_VERBOSE_LEVEL_PREF = "trace.control.verbose.level"; //$NON-NLS-1$
57 /**
58 * The verbose level value for none
59 */
60 public static final String TRACE_CONTROL_VERBOSE_LEVEL_NONE = "trace.control.verbose.level.none"; //$NON-NLS-1$
61 /**
62 * The verbose level value for level 1 (-v)
63 */
64 public static final String TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE = "trace.control.verbose.level.v"; //$NON-NLS-1$
65 /**
66 * The verbose level value for level 2 (-vv)
67 */
68 public static final String TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE = "trace.control.verbose.level.vv"; //$NON-NLS-1$
69 /**
70 * The verbose level value for level 3 (-vvv)
71 */
72 public static final String TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE = "trace.control.verbose.level.vvv"; //$NON-NLS-1$
73 /**
74 * The default tracing group
75 */
76 public static final String TRACE_CONTROL_DEFAULT_TRACING_GROUP = "tracing"; //$NON-NLS-1$
77 /**
78 * The default tracing log file name with absolute path
79 */
80 public static final String TRACE_CONTROL_DEFAULT_LOG_PATH = System.getProperty("user.home") + File.separator + TRACE_CONTROL_LOG_FILENAME; //$NON-NLS-1$
81 /**
82 * Default timeout value used for executing commands, in seconds
83 */
84 public static final int TRACE_CONTROL_DEFAULT_TIMEOUT_VALUE = 15;
85 /**
86 * Minimum timeout value used for executing commands, in seconds
87 */
88 public static final int TRACE_CONTROL_MIN_TIMEOUT_VALUE = 5;
89 /**
90 * Maximum timeout value used for executing commands, in seconds
91 */
92 public static final int TRACE_CONTROL_MAX_TIMEOUT_VALUE = 600;
93
94 // ------------------------------------------------------------------------
95 // Attributes
96 // ------------------------------------------------------------------------
97 /**
98 * The trace control preferences singleton instance.
99 */
100 private static ControlPreferences fInstance = null;
101 /**
102 * The preference store reference
103 */
104 private IPreferenceStore fPreferenceStore = null;
105
106 // ------------------------------------------------------------------------
107 // Constructor
108 // ------------------------------------------------------------------------
109 /**
110 * Private constructor
111 */
112 private ControlPreferences() {
113 }
114
115 // ------------------------------------------------------------------------
116 // Accessors
117 // ------------------------------------------------------------------------
118 /**
119 * Returns the trace control preferences singleton instance
120 *
121 * @return the trace control preferences singleton instance
122 */
123 public static synchronized ControlPreferences getInstance() {
124 if (fInstance == null) {
125 fInstance = new ControlPreferences();
126 }
127 return fInstance;
128 }
129
130 /**
131 * @return the preference store
132 */
133 public IPreferenceStore getPreferenceStore() {
134 return fPreferenceStore;
135 }
136
137 /**
138 * @return true if tracing group is set to default
139 */
140 public boolean isDefaultTracingGroup() {
141 return fPreferenceStore.getString(TRACE_CONTROL_TRACING_GROUP_PREF).equals(fPreferenceStore.getDefaultString(TRACE_CONTROL_TRACING_GROUP_PREF));
142 }
143
144 /**
145 * @return value of tracing group preference
146 */
147 public String getTracingGroup() {
148 return fPreferenceStore.getString(TRACE_CONTROL_TRACING_GROUP_PREF);
149 }
150
151 /**
152 * @return whether is logging is enabled
153 */
154 public boolean isLoggingEnabled() {
155 return fPreferenceStore.getBoolean(TRACE_CONTROL_LOG_COMMANDS_PREF);
156 }
157
158 /**
159 * @return whether an existing log file will appended or not
160 */
161 public boolean isAppend() {
162 return fPreferenceStore.getBoolean(ControlPreferences.TRACE_CONTROL_LOG_APPEND_PREF);
163 }
164
165 /**
166 * @return verbose level preference
167 */
168 public String getVerboseLevel() {
169 return fPreferenceStore.getString(TRACE_CONTROL_VERBOSE_LEVEL_PREF);
170 }
171
172 /**
173 * @return absolute log file path
174 */
175 public String getLogfilePath() {
176 return fPreferenceStore.getString(TRACE_CONTROL_LOG_FILE_PATH_PREF);
177 }
178
179 // ------------------------------------------------------------------------
180 // Operations
181 // ------------------------------------------------------------------------
182
183 /**
184 * Initializes the control preferences (e.g. enable open log file)
185 *
186 * @param preferenceStore
187 * The preference store to assign
188 */
189 public void init(IPreferenceStore preferenceStore) {
190 fPreferenceStore = preferenceStore;
191
192 if (fPreferenceStore.getBoolean(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF)) {
193 ControlCommandLogger.init(getLogfilePath(), isAppend());
194 }
195 }
196
197 /**
198 * Disposes any resource (e.g. close log file).
199 */
200 public void dispose() {
201 ControlCommandLogger.close();
202 }
203 }
This page took 0.051825 seconds and 4 git commands to generate.