More javadoc updates
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / tmf / core / filter / xml / TmfFilterContentHandler.java
CommitLineData
46ab8ce3
FC
1/*******************************************************************************\r
2 * Copyright (c) 2010 Ericsson\r
3 * \r
4 * All rights reserved. This program and the accompanying materials are\r
5 * made available under the terms of the Eclipse Public License v1.0 which\r
6 * accompanies this distribution, and is available at\r
7 * http://www.eclipse.org/legal/epl-v10.html\r
8 * \r
9 * Contributors:\r
10 * Yuriy Vashchuk (yvashchuk@gmail.com) - Initial API and implementation\r
11 * based on http://smeric.developpez.com/java/cours/xml/sax/\r
12 * Patrick Tasse - Refactoring\r
13 *******************************************************************************/\r
14\r
6c13869b 15package org.eclipse.linuxtools.tmf.core.filter.xml;\r
46ab8ce3
FC
16\r
17import java.util.Stack;\r
18\r
6c13869b
FC
19import org.eclipse.linuxtools.tmf.core.filter.model.ITmfFilterTreeNode;\r
20import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterAndNode;\r
21import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterCompareNode;\r
22import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterContainsNode;\r
23import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEqualsNode;\r
24import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEventTypeNode;\r
25import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterMatchesNode;\r
26import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterNode;\r
27import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterOrNode;\r
28import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterRootNode;\r
29import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterTreeNode;\r
30import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterCompareNode.Type;\r
46ab8ce3
FC
31import org.xml.sax.Attributes;\r
32import org.xml.sax.SAXException;\r
33import org.xml.sax.helpers.DefaultHandler;\r
34\r
35/**\r
d37aaa7f
FC
36 * The SAX Content Handler\r
37 * \r
38 * @version 1.0\r
39 * @author Yuriy Vashchuk\r
40 * @author Patrick Tasse\r
46ab8ce3
FC
41 */\r
42public class TmfFilterContentHandler extends DefaultHandler {\r
43 \r
44 private ITmfFilterTreeNode fRoot = null;\r
45 private Stack<ITmfFilterTreeNode> fFilterTreeStack = null;\r
46\r
47 /**\r
48 * The default constructor\r
49 */ \r
50 public TmfFilterContentHandler() {\r
51 super();\r
52 fFilterTreeStack = new Stack<ITmfFilterTreeNode>();\r
53 }\r
54\r
55 /**\r
56 * Getter of tree\r
57 * \r
58 * @return The builded tree\r
59 */ \r
60 public ITmfFilterTreeNode getTree() {\r
61 return fRoot;\r
62 }\r
63 \r
64 /*\r
65 * (non-Javadoc)\r
66 * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)\r
67 */\r
68 @Override\r
69 public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {\r
70 ITmfFilterTreeNode node = null;\r
71 \r
72 if (localName.equalsIgnoreCase(TmfFilterRootNode.NODE_NAME)) {\r
73 \r
74 node = new TmfFilterRootNode();\r
75 \r
76 } else if (localName.equals(TmfFilterNode.NODE_NAME)) {\r
77 \r
78 node = new TmfFilterNode(atts.getValue(TmfFilterNode.NAME_ATTR));\r
79 \r
80 } else if (localName.equals(TmfFilterEventTypeNode.NODE_NAME)) {\r
81 \r
82 node = new TmfFilterEventTypeNode(null);\r
83 ((TmfFilterEventTypeNode) node).setEventType(atts.getValue(TmfFilterEventTypeNode.TYPE_ATTR));\r
84 ((TmfFilterEventTypeNode) node).setName(atts.getValue(TmfFilterEventTypeNode.NAME_ATTR));\r
85 \r
86 } else if (localName.equals(TmfFilterAndNode.NODE_NAME)) {\r
87 \r
88 node = new TmfFilterAndNode(null);\r
89 String value = atts.getValue(TmfFilterAndNode.NOT_ATTR);\r
90 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
91 ((TmfFilterAndNode) node).setNot(true);\r
92 }\r
93 \r
94 } else if (localName.equals(TmfFilterOrNode.NODE_NAME)) {\r
95 \r
96 node = new TmfFilterOrNode(null);\r
97 String value = atts.getValue(TmfFilterOrNode.NOT_ATTR);\r
98 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
99 ((TmfFilterOrNode) node).setNot(true);\r
100 }\r
101 \r
102 } else if (localName.equals(TmfFilterContainsNode.NODE_NAME)) {\r
103 \r
104 node = new TmfFilterContainsNode(null);\r
105 String value = atts.getValue(TmfFilterContainsNode.NOT_ATTR);\r
106 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
107 ((TmfFilterContainsNode) node).setNot(true);\r
108 }\r
109 ((TmfFilterContainsNode) node).setField(atts.getValue(TmfFilterContainsNode.FIELD_ATTR));\r
110 ((TmfFilterContainsNode) node).setValue(atts.getValue(TmfFilterContainsNode.VALUE_ATTR));\r
111 value = atts.getValue(TmfFilterContainsNode.IGNORECASE_ATTR);\r
112 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
113 ((TmfFilterContainsNode) node).setIgnoreCase(true);\r
114 }\r
115 \r
116 } else if (localName.equals(TmfFilterEqualsNode.NODE_NAME)) {\r
117 \r
118 node = new TmfFilterEqualsNode(null);\r
119 String value = atts.getValue(TmfFilterEqualsNode.NOT_ATTR);\r
120 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
121 ((TmfFilterEqualsNode) node).setNot(true);\r
122 }\r
123 ((TmfFilterEqualsNode) node).setField(atts.getValue(TmfFilterEqualsNode.FIELD_ATTR));\r
124 ((TmfFilterEqualsNode) node).setValue(atts.getValue(TmfFilterEqualsNode.VALUE_ATTR));\r
125 value = atts.getValue(TmfFilterEqualsNode.IGNORECASE_ATTR);\r
126 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
127 ((TmfFilterEqualsNode) node).setIgnoreCase(true);\r
128 }\r
129 \r
130 } else if (localName.equals(TmfFilterMatchesNode.NODE_NAME)) {\r
131 \r
132 node = new TmfFilterMatchesNode(null);\r
133 String value = atts.getValue(TmfFilterMatchesNode.NOT_ATTR);\r
134 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
135 ((TmfFilterMatchesNode) node).setNot(true);\r
136 }\r
137 ((TmfFilterMatchesNode) node).setField(atts.getValue(TmfFilterMatchesNode.FIELD_ATTR));\r
138 ((TmfFilterMatchesNode) node).setRegex(atts.getValue(TmfFilterMatchesNode.REGEX_ATTR));\r
139 \r
140 } else if (localName.equals(TmfFilterCompareNode.NODE_NAME)) {\r
141 \r
142 node = new TmfFilterCompareNode(null);\r
143 String value = atts.getValue(TmfFilterCompareNode.NOT_ATTR);\r
144 if (value != null && value.equalsIgnoreCase(Boolean.TRUE.toString())) {\r
145 ((TmfFilterCompareNode) node).setNot(true);\r
146 }\r
147 ((TmfFilterCompareNode) node).setField(atts.getValue(TmfFilterCompareNode.FIELD_ATTR));\r
148 value = atts.getValue(TmfFilterCompareNode.TYPE_ATTR);\r
149 if (value != null) {\r
150 ((TmfFilterCompareNode) node).setType(Type.valueOf(value));\r
151 }\r
152 value = atts.getValue(TmfFilterCompareNode.RESULT_ATTR);\r
153 if (value != null) {\r
154 if (value.equals(Integer.toString(-1))) {\r
155 ((TmfFilterCompareNode) node).setResult(-1);\r
156 } else if (value.equals(Integer.toString(1))) {\r
157 ((TmfFilterCompareNode) node).setResult(1);\r
158 } else {\r
159 ((TmfFilterCompareNode) node).setResult(0);\r
160 }\r
161 }\r
162 ((TmfFilterCompareNode) node).setValue(atts.getValue(TmfFilterCompareNode.VALUE_ATTR));\r
163 \r
164 }\r
165\r
166 fFilterTreeStack.push(node);\r
167 }\r
168\r
169 /*\r
170 * (non-Javadoc)\r
171 * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String)\r
172 */\r
173 @Override\r
174 public void endElement(String uri, String localName, String qName) throws SAXException {\r
175 ITmfFilterTreeNode node = fFilterTreeStack.pop();\r
176\r
177 if (fFilterTreeStack.isEmpty()) {\r
178 fRoot = node;\r
179 } else if (fFilterTreeStack.lastElement() instanceof TmfFilterTreeNode &&\r
180 node instanceof TmfFilterTreeNode) {\r
181 fFilterTreeStack.lastElement().addChild(node);\r
182 }\r
183 \r
184 }\r
185\r
186}\r
This page took 0.037443 seconds and 5 git commands to generate.