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 fLogLevel
= TraceLogLevel
.valueOfString(levelName
);
128 public IFieldInfo
[] getFields() {
129 return fFields
.toArray(new IFieldInfo
[fFields
.size()]);
133 public void addField(IFieldInfo field
) {
138 public void setFields(List
<IFieldInfo
> fields
) {
140 for (Iterator
<IFieldInfo
> iterator
= fields
.iterator(); iterator
.hasNext();) {
141 IFieldInfo fieldInfo
= iterator
.next();
142 fFields
.add(fieldInfo
);
147 public String
getFilterExpression() {
148 return fFilterExpression
;
152 public void setFilterExpression(String filter
) {
153 fFilterExpression
= filter
;
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());
168 public boolean equals(Object obj
) {
172 if (!super.equals(obj
)) {
175 if (getClass() != obj
.getClass()) {
178 BaseEventInfo other
= (BaseEventInfo
) obj
;
179 if (fEventType
!= other
.fEventType
) {
182 if (!fFields
.equals(other
.fFields
)) {
185 if (fFilterExpression
== null) {
186 if (other
.fFilterExpression
!= null) {
189 } else if (!fFilterExpression
.equals(other
.fFilterExpression
)) {
192 if (fLogLevel
!= other
.fLogLevel
) {
198 @SuppressWarnings("nls")
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());
215 if (fFilterExpression
!= null) {
216 output
.append(",Filter=");
217 output
.append(fFilterExpression
);
220 return output
.toString();