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
CommitLineData
eb1bab5b 1/**********************************************************************
94cce698 2 * Copyright (c) 2012, 2013 Ericsson
d4514365 3 *
eb1bab5b
BH
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
d4514365
BH
8 *
9 * Contributors:
eb1bab5b
BH
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
9315aeee 12package org.eclipse.linuxtools.internal.lttng2.core.control.model.impl;
eb1bab5b 13
d4514365
BH
14import java.util.ArrayList;
15import java.util.Iterator;
16import java.util.List;
17
9315aeee 18import org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo;
d4514365 19import org.eclipse.linuxtools.internal.lttng2.core.control.model.IFieldInfo;
9315aeee
BH
20import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEventType;
21import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
eb1bab5b
BH
22
23/**
eb1bab5b
BH
24* <p>
25* Implementation of the basic trace event interface (IEventInfo) to store event
d4514365 26* related data.
eb1bab5b 27* </p>
d4514365 28*
dbd4432d 29* @author Bernd Hufmann
eb1bab5b
BH
30*/
31public 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 */
4775bcbf 43 private TraceLogLevel fLogLevel = TraceLogLevel.TRACE_DEBUG;
d4514365
BH
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
eb1bab5b
BH
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;
77fdc5df
AM
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);
d4514365
BH
77 }
78 }
79 fFilterExpression = other.fFilterExpression;
eb1bab5b
BH
80 }
81
82 // ------------------------------------------------------------------------
83 // Accessors
84 // ------------------------------------------------------------------------
85 /*
86 * (non-Javadoc)
115b4a01 87 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#getEventType()
eb1bab5b
BH
88 */
89 @Override
90 public TraceEventType getEventType() {
91 return fEventType;
92 }
93
94 /*
95 * (non-Javadoc)
115b4a01 96 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setEventType(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceEventType)
eb1bab5b
BH
97 */
98 @Override
99 public void setEventType(TraceEventType type) {
100 fEventType = type;
101 }
102
103 /*
104 * (non-Javadoc)
115b4a01 105 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setEventType(java.lang.String)
eb1bab5b
BH
106 */
107 @Override
108 public void setEventType(String typeName) {
109 if(TraceEventType.TRACEPOINT.getInName().equals(typeName)) {
110 fEventType = TraceEventType.TRACEPOINT;
3e91c9c0
BH
111 } else if(TraceEventType.SYSCALL.getInName().equals(typeName)) {
112 fEventType = TraceEventType.SYSCALL;
ccc66d01 113 } else if (TraceEventType.PROBE.getInName().equals(typeName)) {
d4514365 114 fEventType = TraceEventType.PROBE;
ccc66d01 115 } else {
eb1bab5b
BH
116 fEventType = TraceEventType.UNKNOWN;
117 }
118 }
119
120 /*
121 * (non-Javadoc)
115b4a01 122 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#getLogLevel()
eb1bab5b
BH
123 */
124 @Override
125 public TraceLogLevel getLogLevel() {
126 return fLogLevel;
127 }
128
129 /*
130 * (non-Javadoc)
115b4a01 131 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setLogLevel(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel)
eb1bab5b
BH
132 */
133 @Override
134 public void setLogLevel(TraceLogLevel level) {
135 fLogLevel = level;
136 }
137
138 /*
139 * (non-Javadoc)
115b4a01 140 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.IBaseEventInfo#setLogLevel(java.lang.String)
eb1bab5b
BH
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;
4775bcbf
BH
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;
eb1bab5b
BH
172 } else if(TraceLogLevel.TRACE_DEBUG.getInName().equals(levelName)) {
173 fLogLevel = TraceLogLevel.TRACE_DEBUG;
4775bcbf
BH
174 } else if(TraceLogLevel.LEVEL_UNKNOWN.getInName().equals(levelName)) {
175 fLogLevel = TraceLogLevel.LEVEL_UNKNOWN;
eb1bab5b 176 } else {
4775bcbf 177 fLogLevel = TraceLogLevel.TRACE_DEBUG;
eb1bab5b
BH
178 }
179 }
d4514365 180
eb1bab5b
BH
181 /*
182 * (non-Javadoc)
d4514365
BH
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) {
a6702bfa 205 fFields.clear();
d4514365
BH
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()
eb1bab5b
BH
234 */
235 @Override
236 public int hashCode() {
d132bcc7
BH
237 final int prime = 31;
238 int result = super.hashCode();
d4514365 239 result = prime * result + ((fEventType == null) ? 0 : fEventType.hashCode());
77fdc5df 240 result = prime * result + fFields.hashCode();
d4514365
BH
241 result = prime * result + ((fFilterExpression == null) ? 0 : fFilterExpression.hashCode());
242 result = prime * result + ((fLogLevel == null) ? 0 : fLogLevel.hashCode());
eb1bab5b 243 return result;
d4514365 244 }
eb1bab5b
BH
245
246 /*
247 * (non-Javadoc)
d4514365 248 * @see org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.TraceInfo#equals(java.lang.Object)
eb1bab5b
BH
249 */
250 @Override
d132bcc7
BH
251 public boolean equals(Object obj) {
252 if (this == obj) {
253 return true;
254 }
255 if (!super.equals(obj)) {
eb1bab5b
BH
256 return false;
257 }
d132bcc7 258 if (getClass() != obj.getClass()) {
eb1bab5b
BH
259 return false;
260 }
d132bcc7
BH
261 BaseEventInfo other = (BaseEventInfo) obj;
262 if (fEventType != other.fEventType) {
eb1bab5b
BH
263 return false;
264 }
77fdc5df 265 if (!fFields.equals(other.fFields)) {
d4514365
BH
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 }
d132bcc7 275 if (fLogLevel != other.fLogLevel) {
eb1bab5b
BH
276 return false;
277 }
278 return true;
d4514365 279 }
eb1bab5b
BH
280
281 /*
282 * (non-Javadoc)
115b4a01 283 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceInfo#toString()
eb1bab5b
BH
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);
77fdc5df 295 if (!fFields.isEmpty()) {
d4514365
BH
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 }
eb1bab5b
BH
306 output.append(")]");
307 return output.toString();
308 }
a6702bfa 309}
This page took 0.051508 seconds and 5 git commands to generate.