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
CommitLineData
eb1bab5b 1/**********************************************************************
60ae41e1 2 * Copyright (c) 2012, 2014 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 **********************************************************************/
8e8c0226 12package org.eclipse.linuxtools.internal.lttng2.control.core.model.impl;
eb1bab5b 13
d4514365
BH
14import java.util.ArrayList;
15import java.util.Iterator;
16import java.util.List;
17
8e8c0226
AM
18import org.eclipse.linuxtools.internal.lttng2.control.core.model.IBaseEventInfo;
19import org.eclipse.linuxtools.internal.lttng2.control.core.model.IFieldInfo;
20import org.eclipse.linuxtools.internal.lttng2.control.core.model.TraceEventType;
21import org.eclipse.linuxtools.internal.lttng2.control.core.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 */
e0838ca1 47 private final List<IFieldInfo> fFields = new ArrayList<>();
d4514365
BH
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;
54f2dcc0 71 fLogLevel = other.fLogLevel;
77fdc5df
AM
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);
d4514365
BH
78 }
79 }
80 fFilterExpression = other.fFilterExpression;
eb1bab5b
BH
81 }
82
83 // ------------------------------------------------------------------------
84 // Accessors
85 // ------------------------------------------------------------------------
11252342 86
eb1bab5b
BH
87 @Override
88 public TraceEventType getEventType() {
89 return fEventType;
90 }
91
eb1bab5b
BH
92 @Override
93 public void setEventType(TraceEventType type) {
94 fEventType = type;
95 }
96
eb1bab5b
BH
97 @Override
98 public void setEventType(String typeName) {
0df4af5f 99 if(TraceEventType.TRACEPOINT.getInName().equalsIgnoreCase(typeName)) {
eb1bab5b 100 fEventType = TraceEventType.TRACEPOINT;
0df4af5f 101 } else if(TraceEventType.SYSCALL.getInName().equalsIgnoreCase(typeName)) {
3e91c9c0 102 fEventType = TraceEventType.SYSCALL;
0df4af5f 103 } else if (TraceEventType.PROBE.getInName().equalsIgnoreCase(typeName)) {
d4514365 104 fEventType = TraceEventType.PROBE;
0df4af5f 105 } else if (TraceEventType.FUNCTION.getInName().equalsIgnoreCase(typeName)) {
1f07c96c 106 fEventType = TraceEventType.FUNCTION;
ccc66d01 107 } else {
eb1bab5b
BH
108 fEventType = TraceEventType.UNKNOWN;
109 }
110 }
111
eb1bab5b
BH
112 @Override
113 public TraceLogLevel getLogLevel() {
114 return fLogLevel;
115 }
116
eb1bab5b
BH
117 @Override
118 public void setLogLevel(TraceLogLevel level) {
119 fLogLevel = level;
120 }
121
eb1bab5b
BH
122 @Override
123 public void setLogLevel(String levelName) {
0df4af5f 124 if(TraceLogLevel.TRACE_EMERG.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 125 fLogLevel = TraceLogLevel.TRACE_EMERG;
0df4af5f 126 } else if(TraceLogLevel.TRACE_ALERT.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 127 fLogLevel = TraceLogLevel.TRACE_ALERT;
0df4af5f 128 } else if(TraceLogLevel.TRACE_CRIT.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 129 fLogLevel = TraceLogLevel.TRACE_CRIT;
0df4af5f 130 } else if(TraceLogLevel.TRACE_ERR.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 131 fLogLevel = TraceLogLevel.TRACE_ERR;
0df4af5f 132 } else if(TraceLogLevel.TRACE_WARNING.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 133 fLogLevel = TraceLogLevel.TRACE_WARNING;
0df4af5f 134 } else if(TraceLogLevel.TRACE_NOTICE.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 135 fLogLevel = TraceLogLevel.TRACE_NOTICE;
0df4af5f 136 } else if(TraceLogLevel.TRACE_INFO.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 137 fLogLevel = TraceLogLevel.TRACE_INFO;
0df4af5f 138 } else if(TraceLogLevel.TRACE_DEBUG_SYSTEM.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 139 fLogLevel = TraceLogLevel.TRACE_DEBUG_SYSTEM;
0df4af5f 140 } else if(TraceLogLevel.TRACE_DEBUG_PROGRAM.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 141 fLogLevel = TraceLogLevel.TRACE_DEBUG_PROGRAM;
0df4af5f 142 } else if(TraceLogLevel.TRACE_DEBUG_PROCESS.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 143 fLogLevel = TraceLogLevel.TRACE_DEBUG_PROCESS;
0df4af5f 144 } else if(TraceLogLevel.TRACE_DEBUG_MODULE.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 145 fLogLevel = TraceLogLevel.TRACE_DEBUG_MODULE;
0df4af5f 146 } else if(TraceLogLevel.TRACE_DEBUG_UNIT.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 147 fLogLevel = TraceLogLevel.TRACE_DEBUG_UNIT;
0df4af5f 148 } else if(TraceLogLevel.TRACE_DEBUG_FUNCTION.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 149 fLogLevel = TraceLogLevel.TRACE_DEBUG_FUNCTION;
0df4af5f 150 } else if(TraceLogLevel.TRACE_DEBUG_LINE.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 151 fLogLevel = TraceLogLevel.TRACE_DEBUG_LINE;
0df4af5f 152 } else if(TraceLogLevel.TRACE_DEBUG.getInName().equalsIgnoreCase(levelName)) {
eb1bab5b 153 fLogLevel = TraceLogLevel.TRACE_DEBUG;
0df4af5f 154 } else if(TraceLogLevel.LEVEL_UNKNOWN.getInName().equalsIgnoreCase(levelName)) {
4775bcbf 155 fLogLevel = TraceLogLevel.LEVEL_UNKNOWN;
eb1bab5b 156 } else {
4775bcbf 157 fLogLevel = TraceLogLevel.TRACE_DEBUG;
eb1bab5b
BH
158 }
159 }
d4514365 160
d4514365
BH
161 @Override
162 public IFieldInfo[] getFields() {
163 return fFields.toArray(new IFieldInfo[fFields.size()]);
164 }
165
d4514365
BH
166 @Override
167 public void addField(IFieldInfo field) {
168 fFields.add(field);
169 }
170
d4514365
BH
171 @Override
172 public void setFields(List<IFieldInfo> fields) {
a6702bfa 173 fFields.clear();
d4514365
BH
174 for (Iterator<IFieldInfo> iterator = fields.iterator(); iterator.hasNext();) {
175 IFieldInfo fieldInfo = iterator.next();
176 fFields.add(fieldInfo);
177 }
178 }
179
d4514365
BH
180 @Override
181 public String getFilterExpression() {
182 return fFilterExpression;
183 }
184
d4514365
BH
185 @Override
186 public void setFilterExpression(String filter) {
187 fFilterExpression = filter;
188 }
189
eb1bab5b
BH
190 @Override
191 public int hashCode() {
d132bcc7
BH
192 final int prime = 31;
193 int result = super.hashCode();
d4514365 194 result = prime * result + ((fEventType == null) ? 0 : fEventType.hashCode());
77fdc5df 195 result = prime * result + fFields.hashCode();
d4514365
BH
196 result = prime * result + ((fFilterExpression == null) ? 0 : fFilterExpression.hashCode());
197 result = prime * result + ((fLogLevel == null) ? 0 : fLogLevel.hashCode());
eb1bab5b 198 return result;
d4514365 199 }
eb1bab5b 200
eb1bab5b 201 @Override
d132bcc7
BH
202 public boolean equals(Object obj) {
203 if (this == obj) {
204 return true;
205 }
206 if (!super.equals(obj)) {
eb1bab5b
BH
207 return false;
208 }
d132bcc7 209 if (getClass() != obj.getClass()) {
eb1bab5b
BH
210 return false;
211 }
d132bcc7
BH
212 BaseEventInfo other = (BaseEventInfo) obj;
213 if (fEventType != other.fEventType) {
eb1bab5b
BH
214 return false;
215 }
77fdc5df 216 if (!fFields.equals(other.fFields)) {
d4514365
BH
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 }
d132bcc7 226 if (fLogLevel != other.fLogLevel) {
eb1bab5b
BH
227 return false;
228 }
229 return true;
d4514365 230 }
eb1bab5b 231
eb1bab5b
BH
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);
77fdc5df 242 if (!fFields.isEmpty()) {
d4514365
BH
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 }
eb1bab5b
BH
253 output.append(")]");
254 return output.toString();
255 }
54f2dcc0 256
a6702bfa 257}
This page took 0.059105 seconds and 5 git commands to generate.