4ea2fd5376bbb355f5e5eb1d95bd733c4de9255b
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.core / src / org / eclipse / tracecompass / tmf / core / parsers / custom / CustomTxtEvent.java
1 /*******************************************************************************
2 * Copyright (c) 2010, 2016 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.tracecompass.tmf.core.parsers.custom;
14
15 import java.util.regex.Matcher;
16
17 import org.eclipse.jdt.annotation.NonNull;
18 import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
19 import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
20 import org.eclipse.tracecompass.tmf.core.event.TmfEventType;
21 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTraceDefinition.Tag;
22 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtTraceDefinition.InputData;
23 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtTraceDefinition.InputLine;
24 import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
25 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
26
27 /**
28 * Trace event for custom text parsers.
29 *
30 * @author Patrick Tassé
31 */
32 public class CustomTxtEvent extends CustomEvent {
33
34 /**
35 * Constructor
36 *
37 * @param definition
38 * Trace definition
39 */
40 public CustomTxtEvent(CustomTxtTraceDefinition definition) {
41 super(definition);
42 }
43
44 /**
45 * Construct a custom text event from an existing TmfEvent.
46 *
47 * @param definition
48 * Trace definition
49 * @param other
50 * The TmfEvent object to copy
51 */
52 public CustomTxtEvent(CustomTxtTraceDefinition definition, @NonNull TmfEvent other) {
53 super(definition, other);
54 }
55
56 /**
57 * Full constructor.
58 *
59 * @param definition
60 * Trace definition
61 * @param parentTrace
62 * Parent trace object
63 * @param timestamp
64 * Timestamp of this event
65 * @param type
66 * Event type
67 */
68 public CustomTxtEvent(CustomTxtTraceDefinition definition,
69 ITmfTrace parentTrace, ITmfTimestamp timestamp, TmfEventType type) {
70 super(definition, parentTrace, timestamp, type);
71 }
72
73 @Override
74 public void setContent(ITmfEventField content) {
75 super.setContent(content);
76 }
77
78 /**
79 * Process an entry in the trace file
80 *
81 * @param input
82 * The input line to read
83 * @param matcher
84 * The regex matcher to use
85 */
86 public void processGroups(InputLine input, Matcher matcher) {
87 if (input.eventType != null) {
88 fData.put(Tag.EVENT_TYPE, input.eventType);
89 }
90 if (input.columns == null) {
91 return;
92 }
93 for (int i = 0; i < input.columns.size(); i++) {
94 InputData column = input.columns.get(i);
95 if (i < matcher.groupCount() && matcher.group(i + 1) != null) {
96 String value = matcher.group(i + 1).trim();
97 if (value.length() == 0) {
98 continue;
99 }
100 Object key = (column.tag.equals(Tag.OTHER) ? column.name : column.tag);
101 if (column.action == CustomTraceDefinition.ACTION_SET) {
102 fData.put(key, value);
103 if (key.equals(Tag.TIMESTAMP)) {
104 fData.put(Key.TIMESTAMP_INPUT_FORMAT, column.format);
105 }
106 } else if (column.action == CustomTraceDefinition.ACTION_APPEND) {
107 String s = fData.get(key);
108 if (s != null) {
109 fData.put(key, s + value);
110 } else {
111 fData.put(key, value);
112 }
113 if (key.equals(Tag.TIMESTAMP)) {
114 String timeStampInputFormat = fData.get(Key.TIMESTAMP_INPUT_FORMAT);
115 if (timeStampInputFormat != null) {
116 fData.put(Key.TIMESTAMP_INPUT_FORMAT, timeStampInputFormat + column.format);
117 } else {
118 fData.put(Key.TIMESTAMP_INPUT_FORMAT, column.format);
119 }
120 }
121 } else if (column.action == CustomTraceDefinition.ACTION_APPEND_WITH_SEPARATOR) {
122 String s = fData.get(key);
123 if (s != null) {
124 fData.put(key, s + " | " + value); //$NON-NLS-1$
125 } else {
126 fData.put(key, value);
127 }
128 if (key.equals(Tag.TIMESTAMP)) {
129 String timeStampInputFormat = fData.get(Key.TIMESTAMP_INPUT_FORMAT);
130 if (timeStampInputFormat != null) {
131 fData.put(Key.TIMESTAMP_INPUT_FORMAT, timeStampInputFormat + " | " + column.format); //$NON-NLS-1$
132 } else {
133 fData.put(Key.TIMESTAMP_INPUT_FORMAT, column.format);
134 }
135 }
136 }
137 }
138 }
139 }
140
141 }
This page took 0.033108 seconds and 4 git commands to generate.