tmf: lttngControl: mi: basic listing support
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.control.core / src / org / eclipse / linuxtools / internal / lttng2 / control / core / model / impl / BaseEventInfo.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.linuxtools.internal.lttng2.control.core.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.control.core.model.IBaseEventInfo;
19 import org.eclipse.linuxtools.internal.lttng2.control.core.model.IFieldInfo;
20 import org.eclipse.linuxtools.internal.lttng2.control.core.model.TraceEventType;
21 import org.eclipse.linuxtools.internal.lttng2.control.core.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<>();
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 fLogLevel = other.fLogLevel;
72 for (Iterator<IFieldInfo> iterator = other.fFields.iterator(); iterator.hasNext();) {
73 IFieldInfo field = iterator.next();
74 if (field instanceof FieldInfo) {
75 fFields.add(new FieldInfo((FieldInfo)field));
76 } else {
77 fFields.add(field);
78 }
79 }
80 fFilterExpression = other.fFilterExpression;
81 }
82
83 // ------------------------------------------------------------------------
84 // Accessors
85 // ------------------------------------------------------------------------
86
87 @Override
88 public TraceEventType getEventType() {
89 return fEventType;
90 }
91
92 @Override
93 public void setEventType(TraceEventType type) {
94 fEventType = type;
95 }
96
97 @Override
98 public void setEventType(String typeName) {
99 if(TraceEventType.TRACEPOINT.getInName().equalsIgnoreCase(typeName)) {
100 fEventType = TraceEventType.TRACEPOINT;
101 } else if(TraceEventType.SYSCALL.getInName().equalsIgnoreCase(typeName)) {
102 fEventType = TraceEventType.SYSCALL;
103 } else if (TraceEventType.PROBE.getInName().equalsIgnoreCase(typeName)) {
104 fEventType = TraceEventType.PROBE;
105 } else if (TraceEventType.FUNCTION.getInName().equalsIgnoreCase(typeName)) {
106 fEventType = TraceEventType.FUNCTION;
107 } else {
108 fEventType = TraceEventType.UNKNOWN;
109 }
110 }
111
112 @Override
113 public TraceLogLevel getLogLevel() {
114 return fLogLevel;
115 }
116
117 @Override
118 public void setLogLevel(TraceLogLevel level) {
119 fLogLevel = level;
120 }
121
122 @Override
123 public void setLogLevel(String levelName) {
124 if(TraceLogLevel.TRACE_EMERG.getInName().equalsIgnoreCase(levelName)) {
125 fLogLevel = TraceLogLevel.TRACE_EMERG;
126 } else if(TraceLogLevel.TRACE_ALERT.getInName().equalsIgnoreCase(levelName)) {
127 fLogLevel = TraceLogLevel.TRACE_ALERT;
128 } else if(TraceLogLevel.TRACE_CRIT.getInName().equalsIgnoreCase(levelName)) {
129 fLogLevel = TraceLogLevel.TRACE_CRIT;
130 } else if(TraceLogLevel.TRACE_ERR.getInName().equalsIgnoreCase(levelName)) {
131 fLogLevel = TraceLogLevel.TRACE_ERR;
132 } else if(TraceLogLevel.TRACE_WARNING.getInName().equalsIgnoreCase(levelName)) {
133 fLogLevel = TraceLogLevel.TRACE_WARNING;
134 } else if(TraceLogLevel.TRACE_NOTICE.getInName().equalsIgnoreCase(levelName)) {
135 fLogLevel = TraceLogLevel.TRACE_NOTICE;
136 } else if(TraceLogLevel.TRACE_INFO.getInName().equalsIgnoreCase(levelName)) {
137 fLogLevel = TraceLogLevel.TRACE_INFO;
138 } else if(TraceLogLevel.TRACE_DEBUG_SYSTEM.getInName().equalsIgnoreCase(levelName)) {
139 fLogLevel = TraceLogLevel.TRACE_DEBUG_SYSTEM;
140 } else if(TraceLogLevel.TRACE_DEBUG_PROGRAM.getInName().equalsIgnoreCase(levelName)) {
141 fLogLevel = TraceLogLevel.TRACE_DEBUG_PROGRAM;
142 } else if(TraceLogLevel.TRACE_DEBUG_PROCESS.getInName().equalsIgnoreCase(levelName)) {
143 fLogLevel = TraceLogLevel.TRACE_DEBUG_PROCESS;
144 } else if(TraceLogLevel.TRACE_DEBUG_MODULE.getInName().equalsIgnoreCase(levelName)) {
145 fLogLevel = TraceLogLevel.TRACE_DEBUG_MODULE;
146 } else if(TraceLogLevel.TRACE_DEBUG_UNIT.getInName().equalsIgnoreCase(levelName)) {
147 fLogLevel = TraceLogLevel.TRACE_DEBUG_UNIT;
148 } else if(TraceLogLevel.TRACE_DEBUG_FUNCTION.getInName().equalsIgnoreCase(levelName)) {
149 fLogLevel = TraceLogLevel.TRACE_DEBUG_FUNCTION;
150 } else if(TraceLogLevel.TRACE_DEBUG_LINE.getInName().equalsIgnoreCase(levelName)) {
151 fLogLevel = TraceLogLevel.TRACE_DEBUG_LINE;
152 } else if(TraceLogLevel.TRACE_DEBUG.getInName().equalsIgnoreCase(levelName)) {
153 fLogLevel = TraceLogLevel.TRACE_DEBUG;
154 } else if(TraceLogLevel.LEVEL_UNKNOWN.getInName().equalsIgnoreCase(levelName)) {
155 fLogLevel = TraceLogLevel.LEVEL_UNKNOWN;
156 } else {
157 fLogLevel = TraceLogLevel.TRACE_DEBUG;
158 }
159 }
160
161 @Override
162 public IFieldInfo[] getFields() {
163 return fFields.toArray(new IFieldInfo[fFields.size()]);
164 }
165
166 @Override
167 public void addField(IFieldInfo field) {
168 fFields.add(field);
169 }
170
171 @Override
172 public void setFields(List<IFieldInfo> fields) {
173 fFields.clear();
174 for (Iterator<IFieldInfo> iterator = fields.iterator(); iterator.hasNext();) {
175 IFieldInfo fieldInfo = iterator.next();
176 fFields.add(fieldInfo);
177 }
178 }
179
180 @Override
181 public String getFilterExpression() {
182 return fFilterExpression;
183 }
184
185 @Override
186 public void setFilterExpression(String filter) {
187 fFilterExpression = filter;
188 }
189
190 @Override
191 public int hashCode() {
192 final int prime = 31;
193 int result = super.hashCode();
194 result = prime * result + ((fEventType == null) ? 0 : fEventType.hashCode());
195 result = prime * result + fFields.hashCode();
196 result = prime * result + ((fFilterExpression == null) ? 0 : fFilterExpression.hashCode());
197 result = prime * result + ((fLogLevel == null) ? 0 : fLogLevel.hashCode());
198 return result;
199 }
200
201 @Override
202 public boolean equals(Object obj) {
203 if (this == obj) {
204 return true;
205 }
206 if (!super.equals(obj)) {
207 return false;
208 }
209 if (getClass() != obj.getClass()) {
210 return false;
211 }
212 BaseEventInfo other = (BaseEventInfo) obj;
213 if (fEventType != other.fEventType) {
214 return false;
215 }
216 if (!fFields.equals(other.fFields)) {
217 return false;
218 }
219 if (fFilterExpression == null) {
220 if (other.fFilterExpression != null) {
221 return false;
222 }
223 } else if (!fFilterExpression.equals(other.fFilterExpression)) {
224 return false;
225 }
226 if (fLogLevel != other.fLogLevel) {
227 return false;
228 }
229 return true;
230 }
231
232 @SuppressWarnings("nls")
233 @Override
234 public String toString() {
235 StringBuffer output = new StringBuffer();
236 output.append("[BaseEventInfo(");
237 output.append(super.toString());
238 output.append(",type=");
239 output.append(fEventType);
240 output.append(",level=");
241 output.append(fLogLevel);
242 if (!fFields.isEmpty()) {
243 output.append(",Fields=");
244 for (Iterator<IFieldInfo> iterator = fFields.iterator(); iterator.hasNext();) {
245 IFieldInfo field = iterator.next();
246 output.append(field.toString());
247 }
248 }
249 if (fFilterExpression != null) {
250 output.append(",Filter=");
251 output.append(fFilterExpression);
252 }
253 output.append(")]");
254 return output.toString();
255 }
256
257 }
This page took 0.055532 seconds and 5 git commands to generate.