1 /*******************************************************************************
2 * Copyright (c) 2011, 2013 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
.tmf
.ui
.tests
.uml2sd
.trace
;
14 import java
.io
.EOFException
;
15 import java
.io
.IOException
;
16 import java
.io
.RandomAccessFile
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEventField
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventField
;
22 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventType
;
23 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimestamp
;
24 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfEventParser
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
27 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
30 * Parser implementation for Uml2SD Test Traces.
33 public class TmfUml2SDTestTrace
implements ITmfEventParser
{
35 ITmfTrace fEventStream
;
40 public TmfUml2SDTestTrace() {
45 * @param eventStream ITmfTrace implementation
47 public TmfUml2SDTestTrace(ITmfTrace eventStream
) {
48 fEventStream
= eventStream
;
52 * @param eventStream ITmfTrace implementation to set
54 public void setTrace(ITmfTrace eventStream
) {
55 fEventStream
= eventStream
;
59 @SuppressWarnings({ "nls" })
60 public ITmfEvent
parseEvent(ITmfContext context
) {
61 if (! (fEventStream
instanceof TmfTraceStub
)) {
65 // Highly inefficient...
66 RandomAccessFile stream
= ((TmfTraceStub
) fEventStream
).getStream();
68 // String name = eventStream.getName();
69 // name = name.substring(name.lastIndexOf('/') + 1);
72 if (context
!= null) {
73 location
= (Long
) context
.getLocation().getLocationInfo();
77 stream
.seek(location
);
79 long ts
= stream
.readLong();
80 String source
= stream
.readUTF();
81 String type
= stream
.readUTF();
82 String reference
= stream
.readUTF();
83 String sender
= stream
.readUTF();
84 String receiver
= stream
.readUTF();
85 String signal
= stream
.readUTF();
87 String
[] labels
= {"sender", "receiver", "signal"};
89 TmfEventType tmfEventType
= new TmfEventType("UnitTest", type
, TmfEventField
.makeRoot(labels
));
93 content
+= "," + receiver
;
94 content
+= "," + signal
;
97 // Pre-parse the content
98 TmfEventField
[] fields
= new TmfEventField
[3];
99 fields
[0] = new TmfEventField("sender", sender
);
100 fields
[1] = new TmfEventField("receiver", receiver
);
101 fields
[2] = new TmfEventField("signal", signal
);
103 ITmfEventField tmfContent
= new TmfEventField(ITmfEventField
.ROOT_FIELD_ID
, content
, fields
);
104 ITmfEvent tmfEvent
= new TmfEvent(fEventStream
, new TmfTimestamp(ts
, -9), source
, tmfEventType
, tmfContent
, reference
);
107 } catch (final EOFException e
) {
108 } catch (final IOException e
) {