1 /*******************************************************************************
2 * Copyright (c) 2010 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 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.ui
.parsers
.custom
;
15 import java
.text
.ParseException
;
16 import java
.text
.SimpleDateFormat
;
17 import java
.util
.Date
;
18 import java
.util
.HashMap
;
21 import org
.eclipse
.linuxtools
.tmf
.event
.TmfEvent
;
22 import org
.eclipse
.linuxtools
.tmf
.event
.TmfEventReference
;
23 import org
.eclipse
.linuxtools
.tmf
.event
.TmfEventSource
;
24 import org
.eclipse
.linuxtools
.tmf
.event
.TmfEventType
;
25 import org
.eclipse
.linuxtools
.tmf
.event
.TmfTimestamp
;
26 import org
.eclipse
.linuxtools
.tmf
.trace
.ITmfTrace
;
27 import org
.eclipse
.linuxtools
.tmf
.ui
.parsers
.custom
.CustomTraceDefinition
.OutputColumn
;
29 public class CustomEvent
extends TmfEvent
{
31 protected static final String TIMESTAMP_INPUT_FORMAT_KEY
= "CE_TS_I_F"; //$NON-NLS-1$
32 protected static final String NO_MESSAGE
= ""; //$NON-NLS-1$
33 public static final byte TIMESTAMP_SCALE
= -3;
35 protected CustomTraceDefinition fDefinition
;
36 protected Map
<String
, String
> fData
;
37 private String
[] fColumnData
;
39 public CustomEvent(CustomTraceDefinition definition
) {
40 fDefinition
= definition
;
41 fData
= new HashMap
<String
, String
>();
44 public CustomEvent(CustomTraceDefinition definition
, TmfEvent other
) {
46 fDefinition
= definition
;
47 fData
= new HashMap
<String
, String
>();
50 public CustomEvent(CustomTraceDefinition definition
, ITmfTrace
<?
> parentTrace
, TmfTimestamp timestamp
, TmfEventSource source
, TmfEventType type
, TmfEventReference reference
) {
51 super(parentTrace
, timestamp
, source
, type
, reference
);
52 fDefinition
= definition
;
53 fData
= new HashMap
<String
, String
>();
56 public CustomEvent(CustomTraceDefinition definition
, TmfTimestamp originalTS
, TmfTimestamp effectiveTS
, TmfEventSource source
, TmfEventType type
, TmfEventReference reference
) {
57 super(originalTS
, effectiveTS
, source
, type
, reference
);
58 fDefinition
= definition
;
59 fData
= new HashMap
<String
, String
>();
63 public TmfTimestamp
getTimestamp() {
64 if (fData
!= null) processData();
65 return super.getTimestamp();
69 public TmfTimestamp
getOriginalTimestamp() {
70 if (fData
!= null) processData();
71 return super.getOriginalTimestamp();
74 public String
[] extractItemFields() {
75 if (fData
!= null) processData();
79 private void processData() {
80 String timeStampString
= fData
.get(CustomTraceDefinition
.TAG_TIMESTAMP
);
81 String timeStampInputFormat
= fData
.get(TIMESTAMP_INPUT_FORMAT_KEY
);
83 if (timeStampInputFormat
!= null && timeStampString
!= null) {
84 SimpleDateFormat dateFormat
= new SimpleDateFormat(timeStampInputFormat
);
86 date
= dateFormat
.parse(timeStampString
);
87 fOriginalTimestamp
= fEffectiveTimestamp
= new TmfTimestamp(date
.getTime(), TIMESTAMP_SCALE
);
88 } catch (ParseException e
) {
89 fOriginalTimestamp
= fEffectiveTimestamp
= TmfTimestamp
.Zero
;
92 fOriginalTimestamp
= fEffectiveTimestamp
= TmfTimestamp
.Zero
;
96 fColumnData
= new String
[fDefinition
.outputs
.size()];
97 for (OutputColumn outputColumn
: fDefinition
.outputs
) {
98 String value
= fData
.get(outputColumn
.name
);
99 if (outputColumn
.name
.equals(CustomTraceDefinition
.TAG_TIMESTAMP
) && date
!= null) {
100 SimpleDateFormat dateFormat
= new SimpleDateFormat(fDefinition
.timeStampOutputFormat
);
101 fColumnData
[i
++] = dateFormat
.format(date
);
103 fColumnData
[i
++] = (value
!= null ? value
: ""); //$NON-NLS-1$