gdbtrace: Move plugins to the Trace Compass namespace
[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 fLogLevel = TraceLogLevel.valueOfString(levelName);
125 }
126
127 @Override
128 public IFieldInfo[] getFields() {
129 return fFields.toArray(new IFieldInfo[fFields.size()]);
130 }
131
132 @Override
133 public void addField(IFieldInfo field) {
134 fFields.add(field);
135 }
136
137 @Override
138 public void setFields(List<IFieldInfo> fields) {
139 fFields.clear();
140 for (Iterator<IFieldInfo> iterator = fields.iterator(); iterator.hasNext();) {
141 IFieldInfo fieldInfo = iterator.next();
142 fFields.add(fieldInfo);
143 }
144 }
145
146 @Override
147 public String getFilterExpression() {
148 return fFilterExpression;
149 }
150
151 @Override
152 public void setFilterExpression(String filter) {
153 fFilterExpression = filter;
154 }
155
156 @Override
157 public int hashCode() {
158 final int prime = 31;
159 int result = super.hashCode();
160 result = prime * result + ((fEventType == null) ? 0 : fEventType.hashCode());
161 result = prime * result + fFields.hashCode();
162 result = prime * result + ((fFilterExpression == null) ? 0 : fFilterExpression.hashCode());
163 result = prime * result + ((fLogLevel == null) ? 0 : fLogLevel.hashCode());
164 return result;
165 }
166
167 @Override
168 public boolean equals(Object obj) {
169 if (this == obj) {
170 return true;
171 }
172 if (!super.equals(obj)) {
173 return false;
174 }
175 if (getClass() != obj.getClass()) {
176 return false;
177 }
178 BaseEventInfo other = (BaseEventInfo) obj;
179 if (fEventType != other.fEventType) {
180 return false;
181 }
182 if (!fFields.equals(other.fFields)) {
183 return false;
184 }
185 if (fFilterExpression == null) {
186 if (other.fFilterExpression != null) {
187 return false;
188 }
189 } else if (!fFilterExpression.equals(other.fFilterExpression)) {
190 return false;
191 }
192 if (fLogLevel != other.fLogLevel) {
193 return false;
194 }
195 return true;
196 }
197
198 @SuppressWarnings("nls")
199 @Override
200 public String toString() {
201 StringBuffer output = new StringBuffer();
202 output.append("[BaseEventInfo(");
203 output.append(super.toString());
204 output.append(",type=");
205 output.append(fEventType);
206 output.append(",level=");
207 output.append(fLogLevel);
208 if (!fFields.isEmpty()) {
209 output.append(",Fields=");
210 for (Iterator<IFieldInfo> iterator = fFields.iterator(); iterator.hasNext();) {
211 IFieldInfo field = iterator.next();
212 output.append(field.toString());
213 }
214 }
215 if (fFilterExpression != null) {
216 output.append(",Filter=");
217 output.append(fFilterExpression);
218 }
219 output.append(")]");
220 return output.toString();
221 }
222
223 }
This page took 0.054121 seconds and 5 git commands to generate.