Fix for custom parsers
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / parsers / custom / CustomEvent.java
1 /*******************************************************************************
2 * Copyright (c) 2010 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.tmf.ui.parsers.custom;
14
15 import java.text.ParseException;
16 import java.text.SimpleDateFormat;
17 import java.util.Date;
18 import java.util.HashMap;
19 import java.util.Map;
20
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;
28
29 public class CustomEvent extends TmfEvent {
30
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;
34
35 protected CustomTraceDefinition fDefinition;
36 protected Map<String, String> fData;
37 private String[] fColumnData;
38
39 public CustomEvent(CustomTraceDefinition definition) {
40 fDefinition = definition;
41 fData = new HashMap<String, String>();
42 }
43
44 public CustomEvent(CustomTraceDefinition definition, TmfEvent other) {
45 super(other);
46 fDefinition = definition;
47 fData = new HashMap<String, String>();
48 }
49
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>();
54 }
55
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>();
60 }
61
62 @Override
63 public TmfTimestamp getTimestamp() {
64 if (fData != null) processData();
65 return super.getTimestamp();
66 }
67
68 @Override
69 public TmfTimestamp getOriginalTimestamp() {
70 if (fData != null) processData();
71 return super.getOriginalTimestamp();
72 }
73
74 public String[] extractItemFields() {
75 if (fData != null) processData();
76 return fColumnData;
77 }
78
79 private void processData() {
80 String timeStampString = fData.get(CustomTraceDefinition.TAG_TIMESTAMP);
81 String timeStampInputFormat = fData.get(TIMESTAMP_INPUT_FORMAT_KEY);
82 Date date = null;
83 if (timeStampInputFormat != null && timeStampString != null) {
84 SimpleDateFormat dateFormat = new SimpleDateFormat(timeStampInputFormat);
85 try {
86 date = dateFormat.parse(timeStampString);
87 fOriginalTimestamp = fEffectiveTimestamp = new TmfTimestamp(date.getTime(), TIMESTAMP_SCALE);
88 } catch (ParseException e) {
89 fOriginalTimestamp = fEffectiveTimestamp = TmfTimestamp.Zero;
90 }
91 } else {
92 fOriginalTimestamp = fEffectiveTimestamp = TmfTimestamp.Zero;
93 }
94
95 int i = 0;
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);
102 } else {
103 fColumnData[i++] = (value != null ? value : ""); //$NON-NLS-1$
104 }
105 }
106 fData = null;
107 }
108 }
This page took 0.034214 seconds and 6 git commands to generate.