-/*******************************************************************************\r
- * Copyright (c) 2010 Ericsson\r
- *\r
- * All rights reserved. This program and the accompanying materials are\r
- * made available under the terms of the Eclipse Public License v1.0 which\r
- * accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * Yuriy Vashchuk (yvashchuk@gmail.com) - Initial API and implementation\r
- *******************************************************************************/\r
-\r
-package org.eclipse.linuxtools.tmf.core.filter.xml;\r
-\r
-import java.io.File;\r
-\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
-import javax.xml.parsers.ParserConfigurationException;\r
-import javax.xml.transform.Transformer;\r
-import javax.xml.transform.TransformerConfigurationException;\r
-import javax.xml.transform.TransformerException;\r
-import javax.xml.transform.TransformerFactory;\r
-import javax.xml.transform.dom.DOMSource;\r
-import javax.xml.transform.stream.StreamResult;\r
-\r
-import org.eclipse.linuxtools.tmf.core.filter.model.ITmfFilterTreeNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterAndNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterCompareNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterContainsNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEqualsNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEventTypeNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterMatchesNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterNode;\r
-import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterOrNode;\r
-import org.w3c.dom.Document;\r
-import org.w3c.dom.Element;\r
-\r
-/**\r
- * The SAX based XML writer\r
- *\r
- * @version 1.0\r
- * @author Yuriy Vashchuk\r
- * @author Patrick Tasse\r
- */\r
-public class TmfFilterXMLWriter {\r
-\r
- private Document document = null;\r
-\r
- /**\r
- * The XMLParser constructor\r
- *\r
- * @param root The tree root\r
- * @throws ParserConfigurationException if a DocumentBuilder\r
- * cannot be created which satisfies the configuration requested.\r
- */\r
- public TmfFilterXMLWriter(final ITmfFilterTreeNode root) throws ParserConfigurationException {\r
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();\r
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();\r
- document = documentBuilder.newDocument();\r
-\r
- Element rootElement = document.createElement(root.getNodeName());\r
- document.appendChild(rootElement);\r
-\r
- for (ITmfFilterTreeNode node : root.getChildren()) {\r
- buildXMLTree(document, node, rootElement);\r
- }\r
- }\r
-\r
- /**\r
- * The Tree to XML parser\r
- *\r
- * @param document The XML document\r
- * @param treenode The node to write\r
- * @param parentElement The XML element of the parent\r
- */\r
- public static void buildXMLTree(final Document document, final ITmfFilterTreeNode treenode, Element parentElement) {\r
- Element element = document.createElement(treenode.getNodeName());\r
-\r
- if (treenode instanceof TmfFilterNode) {\r
-\r
- TmfFilterNode node = (TmfFilterNode) treenode;\r
- element.setAttribute(TmfFilterNode.NAME_ATTR, node.getFilterName());\r
-\r
- } else if (treenode instanceof TmfFilterEventTypeNode) {\r
-\r
- TmfFilterEventTypeNode node = (TmfFilterEventTypeNode) treenode;\r
- element.setAttribute(TmfFilterEventTypeNode.TYPE_ATTR, node.getEventType());\r
- element.setAttribute(TmfFilterEventTypeNode.NAME_ATTR, node.getName());\r
-\r
- } else if (treenode instanceof TmfFilterAndNode) {\r
-\r
- TmfFilterAndNode node = (TmfFilterAndNode) treenode;\r
- element.setAttribute(TmfFilterAndNode.NOT_ATTR, Boolean.toString(node.isNot()));\r
-\r
- } else if (treenode instanceof TmfFilterOrNode) {\r
-\r
- TmfFilterOrNode node = (TmfFilterOrNode) treenode;\r
- element.setAttribute(TmfFilterOrNode.NOT_ATTR, Boolean.toString(node.isNot()));\r
-\r
- } else if (treenode instanceof TmfFilterContainsNode) {\r
-\r
- TmfFilterContainsNode node = (TmfFilterContainsNode) treenode;\r
- element.setAttribute(TmfFilterContainsNode.NOT_ATTR, Boolean.toString(node.isNot()));\r
- element.setAttribute(TmfFilterContainsNode.FIELD_ATTR, node.getField());\r
- element.setAttribute(TmfFilterContainsNode.VALUE_ATTR, node.getValue());\r
- element.setAttribute(TmfFilterContainsNode.IGNORECASE_ATTR, Boolean.toString(node.isIgnoreCase()));\r
-\r
- } else if (treenode instanceof TmfFilterEqualsNode) {\r
-\r
- TmfFilterEqualsNode node = (TmfFilterEqualsNode) treenode;\r
- element.setAttribute(TmfFilterEqualsNode.NOT_ATTR, Boolean.toString(node.isNot()));\r
- element.setAttribute(TmfFilterEqualsNode.FIELD_ATTR, node.getField());\r
- element.setAttribute(TmfFilterEqualsNode.VALUE_ATTR, node.getValue());\r
- element.setAttribute(TmfFilterEqualsNode.IGNORECASE_ATTR, Boolean.toString(node.isIgnoreCase()));\r
-\r
- } else if (treenode instanceof TmfFilterMatchesNode) {\r
-\r
- TmfFilterMatchesNode node = (TmfFilterMatchesNode) treenode;\r
- element.setAttribute(TmfFilterMatchesNode.NOT_ATTR, Boolean.toString(node.isNot()));\r
- element.setAttribute(TmfFilterMatchesNode.FIELD_ATTR, node.getField());\r
- element.setAttribute(TmfFilterMatchesNode.REGEX_ATTR, node.getRegex());\r
-\r
- } else if (treenode instanceof TmfFilterCompareNode) {\r
-\r
- TmfFilterCompareNode node = (TmfFilterCompareNode) treenode;\r
- element.setAttribute(TmfFilterCompareNode.NOT_ATTR, Boolean.toString(node.isNot()));\r
- element.setAttribute(TmfFilterCompareNode.FIELD_ATTR, node.getField());\r
- element.setAttribute(TmfFilterCompareNode.RESULT_ATTR, Integer.toString(node.getResult()));\r
- element.setAttribute(TmfFilterCompareNode.TYPE_ATTR, node.getType().toString());\r
- element.setAttribute(TmfFilterCompareNode.VALUE_ATTR, node.getValue());\r
-\r
- }\r
-\r
- parentElement.appendChild(element);\r
-\r
- for (int i = 0; i < treenode.getChildrenCount(); i++) {\r
- buildXMLTree(document, treenode.getChild(i), element);\r
- }\r
- }\r
-\r
- /**\r
- * Save the tree\r
- *\r
- * @param uri The new Filter XML path\r
- */\r
- public void saveTree(final String uri) {\r
- TransformerFactory transformerFactory = TransformerFactory.newInstance();\r
-\r
- try {\r
- Transformer transformer = transformerFactory.newTransformer();\r
- DOMSource source = new DOMSource(document);\r
- StreamResult result = new StreamResult(new File(uri));\r
- transformer.transform(source, result);\r
- } catch (TransformerConfigurationException e) {\r
- e.printStackTrace();\r
- } catch (TransformerException e) {\r
- e.printStackTrace();\r
- }\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2010 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Yuriy Vashchuk (yvashchuk@gmail.com) - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.tmf.core.filter.xml;
+
+import java.io.File;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.eclipse.linuxtools.tmf.core.filter.model.ITmfFilterTreeNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterAndNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterCompareNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterContainsNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEqualsNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEventTypeNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterMatchesNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterNode;
+import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterOrNode;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * The SAX based XML writer
+ *
+ * @version 1.0
+ * @author Yuriy Vashchuk
+ * @author Patrick Tasse
+ */
+public class TmfFilterXMLWriter {
+
+ private Document document = null;
+
+ /**
+ * The XMLParser constructor
+ *
+ * @param root The tree root
+ * @throws ParserConfigurationException if a DocumentBuilder
+ * cannot be created which satisfies the configuration requested.
+ */
+ public TmfFilterXMLWriter(final ITmfFilterTreeNode root) throws ParserConfigurationException {
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+ document = documentBuilder.newDocument();
+
+ Element rootElement = document.createElement(root.getNodeName());
+ document.appendChild(rootElement);
+
+ for (ITmfFilterTreeNode node : root.getChildren()) {
+ buildXMLTree(document, node, rootElement);
+ }
+ }
+
+ /**
+ * The Tree to XML parser
+ *
+ * @param document The XML document
+ * @param treenode The node to write
+ * @param parentElement The XML element of the parent
+ */
+ public static void buildXMLTree(final Document document, final ITmfFilterTreeNode treenode, Element parentElement) {
+ Element element = document.createElement(treenode.getNodeName());
+
+ if (treenode instanceof TmfFilterNode) {
+
+ TmfFilterNode node = (TmfFilterNode) treenode;
+ element.setAttribute(TmfFilterNode.NAME_ATTR, node.getFilterName());
+
+ } else if (treenode instanceof TmfFilterEventTypeNode) {
+
+ TmfFilterEventTypeNode node = (TmfFilterEventTypeNode) treenode;
+ element.setAttribute(TmfFilterEventTypeNode.TYPE_ATTR, node.getEventType());
+ element.setAttribute(TmfFilterEventTypeNode.NAME_ATTR, node.getName());
+
+ } else if (treenode instanceof TmfFilterAndNode) {
+
+ TmfFilterAndNode node = (TmfFilterAndNode) treenode;
+ element.setAttribute(TmfFilterAndNode.NOT_ATTR, Boolean.toString(node.isNot()));
+
+ } else if (treenode instanceof TmfFilterOrNode) {
+
+ TmfFilterOrNode node = (TmfFilterOrNode) treenode;
+ element.setAttribute(TmfFilterOrNode.NOT_ATTR, Boolean.toString(node.isNot()));
+
+ } else if (treenode instanceof TmfFilterContainsNode) {
+
+ TmfFilterContainsNode node = (TmfFilterContainsNode) treenode;
+ element.setAttribute(TmfFilterContainsNode.NOT_ATTR, Boolean.toString(node.isNot()));
+ element.setAttribute(TmfFilterContainsNode.FIELD_ATTR, node.getField());
+ element.setAttribute(TmfFilterContainsNode.VALUE_ATTR, node.getValue());
+ element.setAttribute(TmfFilterContainsNode.IGNORECASE_ATTR, Boolean.toString(node.isIgnoreCase()));
+
+ } else if (treenode instanceof TmfFilterEqualsNode) {
+
+ TmfFilterEqualsNode node = (TmfFilterEqualsNode) treenode;
+ element.setAttribute(TmfFilterEqualsNode.NOT_ATTR, Boolean.toString(node.isNot()));
+ element.setAttribute(TmfFilterEqualsNode.FIELD_ATTR, node.getField());
+ element.setAttribute(TmfFilterEqualsNode.VALUE_ATTR, node.getValue());
+ element.setAttribute(TmfFilterEqualsNode.IGNORECASE_ATTR, Boolean.toString(node.isIgnoreCase()));
+
+ } else if (treenode instanceof TmfFilterMatchesNode) {
+
+ TmfFilterMatchesNode node = (TmfFilterMatchesNode) treenode;
+ element.setAttribute(TmfFilterMatchesNode.NOT_ATTR, Boolean.toString(node.isNot()));
+ element.setAttribute(TmfFilterMatchesNode.FIELD_ATTR, node.getField());
+ element.setAttribute(TmfFilterMatchesNode.REGEX_ATTR, node.getRegex());
+
+ } else if (treenode instanceof TmfFilterCompareNode) {
+
+ TmfFilterCompareNode node = (TmfFilterCompareNode) treenode;
+ element.setAttribute(TmfFilterCompareNode.NOT_ATTR, Boolean.toString(node.isNot()));
+ element.setAttribute(TmfFilterCompareNode.FIELD_ATTR, node.getField());
+ element.setAttribute(TmfFilterCompareNode.RESULT_ATTR, Integer.toString(node.getResult()));
+ element.setAttribute(TmfFilterCompareNode.TYPE_ATTR, node.getType().toString());
+ element.setAttribute(TmfFilterCompareNode.VALUE_ATTR, node.getValue());
+
+ }
+
+ parentElement.appendChild(element);
+
+ for (int i = 0; i < treenode.getChildrenCount(); i++) {
+ buildXMLTree(document, treenode.getChild(i), element);
+ }
+ }
+
+ /**
+ * Save the tree
+ *
+ * @param uri The new Filter XML path
+ */
+ public void saveTree(final String uri) {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+
+ try {
+ Transformer transformer = transformerFactory.newTransformer();
+ DOMSource source = new DOMSource(document);
+ StreamResult result = new StreamResult(new File(uri));
+ transformer.transform(source, result);
+ } catch (TransformerConfigurationException e) {
+ e.printStackTrace();
+ } catch (TransformerException e) {
+ e.printStackTrace();
+ }
+ }
+
+}