lttng: Add clear() call before add elements to list
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.core / src / org / eclipse / linuxtools / internal / lttng2 / core / control / model / impl / BaseEventInfo.java
1 /**********************************************************************
2 * Copyright (c) 2012, 2013 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.linuxtools.internal.lttng2.core.control.model.impl;
13
14 import java.util.ArrayList;
15 import java.util.Iterator;
16 import java.util.List;
17
18 import org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo;
19 import org.eclipse.linuxtools.internal.lttng2.core.control.model.IFieldInfo;
20 import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEventType;
21 import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
22
23 /**
24 * <p>
25 * Implementation of the basic trace event interface (IEventInfo) to store event
26 * related data.
27 * </p>
28 *
29 * @author Bernd Hufmann
30 */
31 public class BaseEventInfo extends TraceInfo implements IBaseEventInfo {
32
33 // ------------------------------------------------------------------------
34 // Attributes
35 // ------------------------------------------------------------------------
36 /**
37 * The trace event type.
38 */
39 private TraceEventType fEventType = TraceEventType.UNKNOWN;
40 /**
41 * The trace log level.
42 */
43 private TraceLogLevel fLogLevel = TraceLogLevel.TRACE_DEBUG;
44 /**
45 * The Event fields
46 */
47 private final List<IFieldInfo> fFields = new ArrayList<IFieldInfo>();
48 /**
49 * The filter expression.
50 */
51 private String fFilterExpression;
52
53 // ------------------------------------------------------------------------
54 // Constructors
55 // ------------------------------------------------------------------------
56 /**
57 * Constructor
58 * @param name - name of base event
59 */
60 public BaseEventInfo(String name) {
61 super(name);
62 }
63
64 /**
65 * Copy constructor
66 * @param other - the instance to copy
67 */
68 public BaseEventInfo(BaseEventInfo other) {
69 super(other);
70 fEventType = other.fEventType;
71 for (Iterator<IFieldInfo> iterator = other.fFields.iterator(); iterator.hasNext();) {
72 IFieldInfo field = iterator.next();
73 if (field instanceof FieldInfo) {
74 fFields.add(new FieldInfo((FieldInfo)field));
75 } else {
76 fFields.add(field);
77 }
78 }
79 fFilterExpression = other.fFilterExpression;
80 }
81
82 // ------------------------------------------------------------------------
83 // Accessors
84 // ------------------------------------------------------------------------
85 /*
86 * (non-Javadoc)
87 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#getEventType()
88 */
89 @Override
90 public TraceEventType getEventType() {
91 return fEventType;
92 }
93
94 /*
95 * (non-Javadoc)
96 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setEventType(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEventType)
97 */
98 @Override
99 public void setEventType(TraceEventType type) {
100 fEventType = type;
101 }
102
103 /*
104 * (non-Javadoc)
105 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setEventType(java.lang.String)
106 */
107 @Override
108 public void setEventType(String typeName) {
109 if(TraceEventType.TRACEPOINT.getInName().equals(typeName)) {
110 fEventType = TraceEventType.TRACEPOINT;
111 } else if(TraceEventType.SYSCALL.getInName().equals(typeName)) {
112 fEventType = TraceEventType.SYSCALL;
113 } else if (TraceEventType.PROBE.getInName().equals(typeName)) {
114 fEventType = TraceEventType.PROBE;
115 } else {
116 fEventType = TraceEventType.UNKNOWN;
117 }
118 }
119
120 /*
121 * (non-Javadoc)
122 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#getLogLevel()
123 */
124 @Override
125 public TraceLogLevel getLogLevel() {
126 return fLogLevel;
127 }
128
129 /*
130 * (non-Javadoc)
131 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setLogLevel(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel)
132 */
133 @Override
134 public void setLogLevel(TraceLogLevel level) {
135 fLogLevel = level;
136 }
137
138 /*
139 * (non-Javadoc)
140 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setLogLevel(java.lang.String)
141 */
142 @Override
143 public void setLogLevel(String levelName) {
144 if(TraceLogLevel.TRACE_EMERG.getInName().equals(levelName)) {
145 fLogLevel = TraceLogLevel.TRACE_EMERG;
146 } else if(TraceLogLevel.TRACE_ALERT.getInName().equals(levelName)) {
147 fLogLevel = TraceLogLevel.TRACE_ALERT;
148 } else if(TraceLogLevel.TRACE_CRIT.getInName().equals(levelName)) {
149 fLogLevel = TraceLogLevel.TRACE_CRIT;
150 } else if(TraceLogLevel.TRACE_ERR.getInName().equals(levelName)) {
151 fLogLevel = TraceLogLevel.TRACE_ERR;
152 } else if(TraceLogLevel.TRACE_WARNING.getInName().equals(levelName)) {
153 fLogLevel = TraceLogLevel.TRACE_WARNING;
154 } else if(TraceLogLevel.TRACE_NOTICE.getInName().equals(levelName)) {
155 fLogLevel = TraceLogLevel.TRACE_NOTICE;
156 } else if(TraceLogLevel.TRACE_INFO.getInName().equals(levelName)) {
157 fLogLevel = TraceLogLevel.TRACE_INFO;
158 } else if(TraceLogLevel.TRACE_DEBUG_SYSTEM.getInName().equals(levelName)) {
159 fLogLevel = TraceLogLevel.TRACE_DEBUG_SYSTEM;
160 } else if(TraceLogLevel.TRACE_DEBUG_PROGRAM.getInName().equals(levelName)) {
161 fLogLevel = TraceLogLevel.TRACE_DEBUG_PROGRAM;
162 } else if(TraceLogLevel.TRACE_DEBUG_PROCESS.getInName().equals(levelName)) {
163 fLogLevel = TraceLogLevel.TRACE_DEBUG_PROCESS;
164 } else if(TraceLogLevel.TRACE_DEBUG_MODULE.getInName().equals(levelName)) {
165 fLogLevel = TraceLogLevel.TRACE_DEBUG_MODULE;
166 } else if(TraceLogLevel.TRACE_DEBUG_UNIT.getInName().equals(levelName)) {
167 fLogLevel = TraceLogLevel.TRACE_DEBUG_UNIT;
168 } else if(TraceLogLevel.TRACE_DEBUG_FUNCTION.getInName().equals(levelName)) {
169 fLogLevel = TraceLogLevel.TRACE_DEBUG_FUNCTION;
170 } else if(TraceLogLevel.TRACE_DEBUG_LINE.getInName().equals(levelName)) {
171 fLogLevel = TraceLogLevel.TRACE_DEBUG_LINE;
172 } else if(TraceLogLevel.TRACE_DEBUG.getInName().equals(levelName)) {
173 fLogLevel = TraceLogLevel.TRACE_DEBUG;
174 } else if(TraceLogLevel.LEVEL_UNKNOWN.getInName().equals(levelName)) {
175 fLogLevel = TraceLogLevel.LEVEL_UNKNOWN;
176 } else {
177 fLogLevel = TraceLogLevel.TRACE_DEBUG;
178 }
179 }
180
181 /*
182 * (non-Javadoc)
183 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo#getFields()
184 */
185 @Override
186 public IFieldInfo[] getFields() {
187 return fFields.toArray(new IFieldInfo[fFields.size()]);
188 }
189
190 /*
191 * (non-Javadoc)
192 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo#addField(org.eclipse.linuxtools.internal.lttng2.core.control.model.IFieldInfo)
193 */
194 @Override
195 public void addField(IFieldInfo field) {
196 fFields.add(field);
197 }
198
199 /*
200 * (non-Javadoc)
201 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo#setFields(java.util.List)
202 */
203 @Override
204 public void setFields(List<IFieldInfo> fields) {
205 fFields.clear();
206 for (Iterator<IFieldInfo> iterator = fields.iterator(); iterator.hasNext();) {
207 IFieldInfo fieldInfo = iterator.next();
208 fFields.add(fieldInfo);
209 }
210 }
211
212 /*
213 * (non-Javadoc)
214 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo#getFilterExpression()
215 */
216 @Override
217 public String getFilterExpression() {
218 return fFilterExpression;
219 }
220
221 /*
222 * (non-Javadoc)
223 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo#setFilterExpression(java.lang.String)
224 */
225 @Override
226 public void setFilterExpression(String filter) {
227 fFilterExpression = filter;
228 }
229
230
231 /*
232 * (non-Javadoc)
233 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.TraceInfo#hashCode()
234 */
235 @Override
236 public int hashCode() {
237 final int prime = 31;
238 int result = super.hashCode();
239 result = prime * result + ((fEventType == null) ? 0 : fEventType.hashCode());
240 result = prime * result + fFields.hashCode();
241 result = prime * result + ((fFilterExpression == null) ? 0 : fFilterExpression.hashCode());
242 result = prime * result + ((fLogLevel == null) ? 0 : fLogLevel.hashCode());
243 return result;
244 }
245
246 /*
247 * (non-Javadoc)
248 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.TraceInfo#equals(java.lang.Object)
249 */
250 @Override
251 public boolean equals(Object obj) {
252 if (this == obj) {
253 return true;
254 }
255 if (!super.equals(obj)) {
256 return false;
257 }
258 if (getClass() != obj.getClass()) {
259 return false;
260 }
261 BaseEventInfo other = (BaseEventInfo) obj;
262 if (fEventType != other.fEventType) {
263 return false;
264 }
265 if (!fFields.equals(other.fFields)) {
266 return false;
267 }
268 if (fFilterExpression == null) {
269 if (other.fFilterExpression != null) {
270 return false;
271 }
272 } else if (!fFilterExpression.equals(other.fFilterExpression)) {
273 return false;
274 }
275 if (fLogLevel != other.fLogLevel) {
276 return false;
277 }
278 return true;
279 }
280
281 /*
282 * (non-Javadoc)
283 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceInfo#toString()
284 */
285 @SuppressWarnings("nls")
286 @Override
287 public String toString() {
288 StringBuffer output = new StringBuffer();
289 output.append("[BaseEventInfo(");
290 output.append(super.toString());
291 output.append(",type=");
292 output.append(fEventType);
293 output.append(",level=");
294 output.append(fLogLevel);
295 if (!fFields.isEmpty()) {
296 output.append(",Fields=");
297 for (Iterator<IFieldInfo> iterator = fFields.iterator(); iterator.hasNext();) {
298 IFieldInfo field = iterator.next();
299 output.append(field.toString());
300 }
301 }
302 if (fFilterExpression != null) {
303 output.append(",Filter=");
304 output.append(fFilterExpression);
305 }
306 output.append(")]");
307 return output.toString();
308 }
309 }
This page took 0.04445 seconds and 6 git commands to generate.