Remove UI dependencies in tmf.core.
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / tmf / core / event / TmfEvent.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2013 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are made
5 * 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 * Francois Chouinard - Initial API and implementation
11 * Francois Chouinard - Updated as per TMF Event Model 1.0
12 * Alexandre Montplaisir - Made immutable
13 *******************************************************************************/
14
15 package org.eclipse.linuxtools.tmf.core.event;
16
17 import org.eclipse.core.runtime.PlatformObject;
18 import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
19 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
20 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
21
22 /**
23 * A basic implementation of ITmfEvent.
24 *
25 * @version 1.0
26 * @author Francois Chouinard
27 *
28 * @see ITmfTimestamp
29 * @see ITmfEventType
30 * @see ITmfEventField
31 * @see ITmfTrace
32 */
33 public class TmfEvent extends PlatformObject implements ITmfEvent {
34
35 // ------------------------------------------------------------------------
36 // Attributes
37 // ------------------------------------------------------------------------
38
39 private final ITmfTrace fTrace;
40 private final long fRank;
41 private final ITmfTimestamp fTimestamp;
42 private final String fSource;
43 private final ITmfEventType fType;
44 private final ITmfEventField fContent;
45 private final String fReference;
46
47 // ------------------------------------------------------------------------
48 // Constructors
49 // ------------------------------------------------------------------------
50
51 /**
52 * Default constructor. All fields have their default value (null) and the
53 * event rank is set to TmfContext.UNKNOWN_RANK.
54 */
55 public TmfEvent() {
56 this(null, ITmfContext.UNKNOWN_RANK, null, null, null, null, null);
57 }
58
59 /**
60 * Standard constructor. The event rank will be set to TmfContext.UNKNOWN_RANK.
61 *
62 * @param trace the parent trace
63 * @param timestamp the event timestamp
64 * @param source the event source
65 * @param type the event type
66 * @param content the event content (payload)
67 * @param reference the event reference
68 * @since 2.0
69
70 */
71 public TmfEvent(final ITmfTrace trace, final ITmfTimestamp timestamp, final String source,
72 final ITmfEventType type, final ITmfEventField content, final String reference)
73 {
74 this(trace, ITmfContext.UNKNOWN_RANK, timestamp, source, type, content, reference);
75 }
76
77 /**
78 * Full constructor
79 *
80 * @param trace the parent trace
81 * @param rank the event rank (in the trace)
82 * @param timestamp the event timestamp
83 * @param source the event source
84 * @param type the event type
85 * @param content the event content (payload)
86 * @param reference the event reference
87 * @since 2.0
88 */
89 public TmfEvent(final ITmfTrace trace, final long rank, final ITmfTimestamp timestamp, final String source,
90 final ITmfEventType type, final ITmfEventField content, final String reference)
91 {
92 fTrace = trace;
93 fRank = rank;
94 fTimestamp = timestamp;
95 fSource = source;
96 fType = type;
97 fContent = content;
98 fReference = reference;
99 }
100
101 /**
102 * Copy constructor
103 *
104 * @param event the original event
105 */
106 public TmfEvent(final ITmfEvent event) {
107 if (event == null) {
108 throw new IllegalArgumentException();
109 }
110 fTrace = event.getTrace();
111 fRank = event.getRank();
112 fTimestamp = event.getTimestamp();
113 fSource = event.getSource();
114 fType = event.getType();
115 fContent = event.getContent();
116 fReference = event.getReference();
117 }
118
119 // ------------------------------------------------------------------------
120 // ITmfEvent
121 // ------------------------------------------------------------------------
122
123 @Override
124 public ITmfTrace getTrace() {
125 return fTrace;
126 }
127
128 @Override
129 public long getRank() {
130 return fRank;
131 }
132
133 /**
134 * @since 2.0
135 */
136 @Override
137 public ITmfTimestamp getTimestamp() {
138 return fTimestamp;
139 }
140
141 @Override
142 public String getSource() {
143 return fSource;
144 }
145
146 @Override
147 public ITmfEventType getType() {
148 return fType;
149 }
150
151 @Override
152 public ITmfEventField getContent() {
153 return fContent;
154 }
155
156 @Override
157 public String getReference() {
158 return fReference;
159 }
160
161 // ------------------------------------------------------------------------
162 // Object
163 // ------------------------------------------------------------------------
164
165 @Override
166 public int hashCode() {
167 final int prime = 31;
168 int result = 1;
169 result = prime * result + ((fTrace == null) ? 0 : fTrace.hashCode());
170 result = prime * result + (int) (fRank ^ (fRank >>> 32));
171 result = prime * result + ((fTimestamp == null) ? 0 : fTimestamp.hashCode());
172 result = prime * result + ((fSource == null) ? 0 : fSource.hashCode());
173 result = prime * result + ((fType == null) ? 0 : fType.hashCode());
174 result = prime * result + ((fContent == null) ? 0 : fContent.hashCode());
175 result = prime * result + ((fReference == null) ? 0 : fReference.hashCode());
176 return result;
177 }
178
179 @Override
180 public boolean equals(final Object obj) {
181 if (this == obj) {
182 return true;
183 }
184 if (obj == null) {
185 return false;
186 }
187 if (!(obj instanceof TmfEvent)) {
188 return false;
189 }
190 final TmfEvent other = (TmfEvent) obj;
191 if (fTrace == null) {
192 if (other.fTrace != null) {
193 return false;
194 }
195 } else if (!fTrace.equals(other.fTrace)) {
196 return false;
197 }
198 if (fRank != other.fRank) {
199 return false;
200 }
201 if (fTimestamp == null) {
202 if (other.fTimestamp != null) {
203 return false;
204 }
205 } else if (!fTimestamp.equals(other.fTimestamp)) {
206 return false;
207 }
208 if (fSource == null) {
209 if (other.fSource != null) {
210 return false;
211 }
212 } else if (!fSource.equals(other.fSource)) {
213 return false;
214 }
215 if (fType == null) {
216 if (other.fType != null) {
217 return false;
218 }
219 } else if (!fType.equals(other.fType)) {
220 return false;
221 }
222 if (fContent == null) {
223 if (other.fContent != null) {
224 return false;
225 }
226 } else if (!fContent.equals(other.fContent)) {
227 return false;
228 }
229 if (fReference == null) {
230 if (other.fReference != null) {
231 return false;
232 }
233 } else if (!fReference.equals(other.fReference)) {
234 return false;
235 }
236 return true;
237 }
238
239 @Override
240 @SuppressWarnings("nls")
241 public String toString() {
242 return getClass().getSimpleName() + " [fTimestamp=" + getTimestamp()
243 + ", fTrace=" + getTrace() + ", fRank=" + getRank()
244 + ", fSource=" + getSource() + ", fType=" + getType()
245 + ", fContent=" + getContent() + ", fReference=" + getReference()
246 + "]";
247 }
248
249 }
This page took 0.044767 seconds and 6 git commands to generate.