1 /*******************************************************************************
2 * Copyright (c) 2011 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
.ITmfEventField
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventField
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEventType
;
22 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimestamp
;
23 import org
.eclipse
.linuxtools
.tmf
.core
.parser
.ITmfEventParser
;
24 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfContext
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfLocation
;
27 import org
.eclipse
.linuxtools
.tmf
.stubs
.trace
.TmfTraceStub
;
29 public class TmfUml2SDTestTrace
implements ITmfEventParser
<TmfEvent
> {
32 @SuppressWarnings({ "unchecked", "nls" })
33 public TmfEvent
parseNextEvent(ITmfTrace
<TmfEvent
> eventStream
, TmfContext context
) throws IOException
{
34 if (! (eventStream
instanceof TmfTraceStub
)) {
38 // Highly inefficient...
39 RandomAccessFile stream
= ((TmfTraceStub
) eventStream
).getStream();
41 String name
= eventStream
.getName();
42 name
= name
.substring(name
.lastIndexOf('/') + 1);
46 location
= ((TmfLocation
<Long
>) (context
.getLocation())).getLocation();
47 stream
.seek(location
);
50 long ts
= stream
.readLong();
51 String source
= stream
.readUTF();
52 String type
= stream
.readUTF();
53 String reference
= stream
.readUTF();
54 String sender
= stream
.readUTF();
55 String receiver
= stream
.readUTF();
56 String signal
= stream
.readUTF();
58 String
[] labels
= {"sender", "receiver", "signal"};
60 TmfEventType tmfEventType
= new TmfEventType("UnitTest", type
, TmfEventField
.makeRoot(labels
));
61 TmfEvent tmfEvent
= new TmfEvent(new TmfTimestamp(ts
, -9), source
, tmfEventType
, reference
);
65 content
+= "," + receiver
;
66 content
+= "," + signal
;
69 // Pre-parse the content
70 TmfEventField
[] fields
= new TmfEventField
[3];
71 fields
[0] = new TmfEventField("sender", sender
);
72 fields
[1] = new TmfEventField("receiver", receiver
);
73 fields
[2] = new TmfEventField("signal", signal
);
75 ITmfEventField tmfContent
= new TmfEventField(ITmfEventField
.ROOT_ID
, content
, fields
);
76 tmfEvent
.setContent(tmfContent
);
79 } catch (EOFException e
) {