1 /**********************************************************************
2 * Copyright (c) 2012, 2014 Ericsson
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
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org
.eclipse
.linuxtools
.internal
.lttng2
.control
.core
.model
.impl
;
14 import java
.util
.ArrayList
;
15 import java
.util
.Iterator
;
16 import java
.util
.List
;
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
;
25 * Implementation of the basic trace event interface (IEventInfo) to store event
29 * @author Bernd Hufmann
31 public class BaseEventInfo
extends TraceInfo
implements IBaseEventInfo
{
33 // ------------------------------------------------------------------------
35 // ------------------------------------------------------------------------
37 * The trace event type.
39 private TraceEventType fEventType
= TraceEventType
.UNKNOWN
;
41 * The trace log level.
43 private TraceLogLevel fLogLevel
= TraceLogLevel
.TRACE_DEBUG
;
47 private final List
<IFieldInfo
> fFields
= new ArrayList
<>();
49 * The filter expression.
51 private String fFilterExpression
;
53 // ------------------------------------------------------------------------
55 // ------------------------------------------------------------------------
58 * @param name - name of base event
60 public BaseEventInfo(String name
) {
66 * @param other - the instance to copy
68 public BaseEventInfo(BaseEventInfo 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
));
80 fFilterExpression
= other
.fFilterExpression
;
83 // ------------------------------------------------------------------------
85 // ------------------------------------------------------------------------
88 public TraceEventType
getEventType() {
93 public void setEventType(TraceEventType type
) {
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
;
108 fEventType
= TraceEventType
.UNKNOWN
;
113 public TraceLogLevel
getLogLevel() {
118 public void setLogLevel(TraceLogLevel level
) {
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
;
157 fLogLevel
= TraceLogLevel
.TRACE_DEBUG
;
162 public IFieldInfo
[] getFields() {
163 return fFields
.toArray(new IFieldInfo
[fFields
.size()]);
167 public void addField(IFieldInfo field
) {
172 public void setFields(List
<IFieldInfo
> fields
) {
174 for (Iterator
<IFieldInfo
> iterator
= fields
.iterator(); iterator
.hasNext();) {
175 IFieldInfo fieldInfo
= iterator
.next();
176 fFields
.add(fieldInfo
);
181 public String
getFilterExpression() {
182 return fFilterExpression
;
186 public void setFilterExpression(String filter
) {
187 fFilterExpression
= filter
;
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());
202 public boolean equals(Object obj
) {
206 if (!super.equals(obj
)) {
209 if (getClass() != obj
.getClass()) {
212 BaseEventInfo other
= (BaseEventInfo
) obj
;
213 if (fEventType
!= other
.fEventType
) {
216 if (!fFields
.equals(other
.fFields
)) {
219 if (fFilterExpression
== null) {
220 if (other
.fFilterExpression
!= null) {
223 } else if (!fFilterExpression
.equals(other
.fFilterExpression
)) {
226 if (fLogLevel
!= other
.fLogLevel
) {
232 @SuppressWarnings("nls")
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());
249 if (fFilterExpression
!= null) {
250 output
.append(",Filter=");
251 output
.append(fFilterExpression
);
254 return output
.toString();