Merge branch 'master' into lttng-kepler
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / tmf / core / filter / model / TmfFilterTreeNode.java
index d5cb9b5d5af87d26fb8dddd1a89e589d2717f51b..6f65440c8cc6d1eabb2a43d297a2454d8d2461d8 100644 (file)
-/*******************************************************************************\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
- *   Patrick Tasse - Refactoring\r
- *******************************************************************************/\r
-\r
-package org.eclipse.linuxtools.tmf.core.filter.model;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.List;\r
-\r
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;\r
-import org.eclipse.linuxtools.tmf.core.event.ITmfEventField;\r
-\r
-/**\r
- * The base class for the Filter tree nodes\r
- *\r
- * @version 1.0\r
- * @author Yuriy Vashchuk\r
- * @author Patrick Tasse\r
- */\r
-public abstract class TmfFilterTreeNode implements ITmfFilterTreeNode, Cloneable {\r
-\r
-       private static final String[] VALID_CHILDREN = {\r
-               TmfFilterEventTypeNode.NODE_NAME,\r
-               TmfFilterAndNode.NODE_NAME,\r
-               TmfFilterOrNode.NODE_NAME,\r
-               TmfFilterContainsNode.NODE_NAME,\r
-               TmfFilterEqualsNode.NODE_NAME,\r
-               TmfFilterMatchesNode.NODE_NAME,\r
-               TmfFilterCompareNode.NODE_NAME\r
-       };\r
-\r
-       private ITmfFilterTreeNode parent = null;\r
-       private ArrayList<ITmfFilterTreeNode> children = new ArrayList<ITmfFilterTreeNode>();\r
-\r
-    /**\r
-     * @param parent the parent node\r
-     */\r
-    public TmfFilterTreeNode(final ITmfFilterTreeNode parent) {\r
-       if (parent != null) {\r
-               parent.addChild(this);\r
-       }\r
-    }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getParent()\r
-        */\r
-       @Override\r
-       public ITmfFilterTreeNode getParent() {\r
-               return parent;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getNodeName()\r
-        */\r
-       @Override\r
-       public abstract String getNodeName();\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#hasChildren()\r
-        */\r
-       @Override\r
-       public boolean hasChildren() {\r
-               return (children.size() > 0);\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChildrenCount()\r
-        */\r
-       @Override\r
-       public int getChildrenCount() {\r
-               return children.size();\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChildren()\r
-        */\r
-       @Override\r
-       public ITmfFilterTreeNode[] getChildren() {\r
-               return children.toArray(new ITmfFilterTreeNode[0]);\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChild(int)\r
-        */\r
-       @Override\r
-       public ITmfFilterTreeNode getChild(final int index) throws IndexOutOfBoundsException {\r
-               return children.get(index);\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#remove()\r
-        */\r
-       @Override\r
-       public ITmfFilterTreeNode remove() {\r
-               if (getParent() != null) {\r
-                       getParent().removeChild(this);\r
-               }\r
-               return this;\r
-       }\r
-\r
-       /*\r
-        * (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#removeChild(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
-        */\r
-       @Override\r
-       public ITmfFilterTreeNode removeChild(ITmfFilterTreeNode node) {\r
-               children.remove(node);\r
-               node.setParent(null);\r
-               return node;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#addChild(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
-        */\r
-       @Override\r
-       public int addChild(final ITmfFilterTreeNode node) {\r
-               node.setParent(this);\r
-               if(children.add(node)) {\r
-                       return (children.size() - 1);\r
-               }\r
-               return -1;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#replaceChild(int, org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
-        */\r
-       @Override\r
-       public ITmfFilterTreeNode replaceChild(final int index, final ITmfFilterTreeNode node) throws IndexOutOfBoundsException {\r
-               node.setParent(this);\r
-               return children.set(index, node);\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#setParent(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
-        */\r
-       @Override\r
-       public void setParent(final ITmfFilterTreeNode parent) {\r
-               this.parent = parent;\r
-       }\r
-\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#matches(org.eclipse.linuxtools.tmf.event.TmfEvent)\r
-        */\r
-       @Override\r
-       public abstract boolean matches(ITmfEvent event);\r
-\r
-    /**\r
-     * @param event the event\r
-     * @param field the field id\r
-     * @return the field value\r
-     */\r
-    protected Object getFieldValue(ITmfEvent event, String field) {\r
-        Object value = null;\r
-        if (ITmfEvent.EVENT_FIELD_CONTENT.equals(field)) {\r
-            ITmfEventField content = event.getContent();\r
-            value = (content.getValue() != null) ? content.getValue().toString() : content.toString();\r
-        }\r
-        else if (ITmfEvent.EVENT_FIELD_TYPE.equals(field)) {\r
-            value = event.getType().getName();\r
-        }\r
-        else if (ITmfEvent.EVENT_FIELD_TIMESTAMP.equals(field)) {\r
-            value = event.getTimestamp().toString();\r
-        }\r
-        else if (ITmfEvent.EVENT_FIELD_SOURCE.equals(field)) {\r
-            value = event.getSource();\r
-        }\r
-        else if (ITmfEvent.EVENT_FIELD_REFERENCE.equals(field)) {\r
-            value = event.getReference();\r
-        }\r
-        else {\r
-            ITmfEventField eventField = event.getContent().getField(field);\r
-            if (eventField != null) {\r
-                value = eventField.getValue();\r
-            }\r
-        }\r
-        return value;\r
-    }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getValidChildren()\r
-        *\r
-        * By default, all node types are valid children. Override if different.\r
-        */\r
-       @Override\r
-       public List<String> getValidChildren() {\r
-               return Arrays.asList(VALID_CHILDREN);\r
-       }\r
-\r
-       @Override\r
-       public ITmfFilterTreeNode clone() {\r
-               try {\r
-                       TmfFilterTreeNode clone = (TmfFilterTreeNode) super.clone();\r
-                       clone.parent = null;\r
-                       clone.children = new ArrayList<ITmfFilterTreeNode>(children.size());\r
-                       for (ITmfFilterTreeNode child : getChildren()) {\r
-                               clone.addChild(child.clone());\r
-                       }\r
-                       return clone;\r
-               } catch (CloneNotSupportedException e) {\r
-                       return null;\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
+ *   Patrick Tasse - Refactoring
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.tmf.core.filter.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.ITmfEventField;
+
+/**
+ * The base class for the Filter tree nodes
+ *
+ * @version 1.0
+ * @author Yuriy Vashchuk
+ * @author Patrick Tasse
+ */
+public abstract class TmfFilterTreeNode implements ITmfFilterTreeNode, Cloneable {
+
+       private static final String[] VALID_CHILDREN = {
+               TmfFilterEventTypeNode.NODE_NAME,
+               TmfFilterAndNode.NODE_NAME,
+               TmfFilterOrNode.NODE_NAME,
+               TmfFilterContainsNode.NODE_NAME,
+               TmfFilterEqualsNode.NODE_NAME,
+               TmfFilterMatchesNode.NODE_NAME,
+               TmfFilterCompareNode.NODE_NAME
+       };
+
+       private ITmfFilterTreeNode parent = null;
+       private ArrayList<ITmfFilterTreeNode> children = new ArrayList<ITmfFilterTreeNode>();
+
+    /**
+     * @param parent the parent node
+     */
+    public TmfFilterTreeNode(final ITmfFilterTreeNode parent) {
+       if (parent != null) {
+               parent.addChild(this);
+       }
+    }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getParent()
+        */
+       @Override
+       public ITmfFilterTreeNode getParent() {
+               return parent;
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getNodeName()
+        */
+       @Override
+       public abstract String getNodeName();
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#hasChildren()
+        */
+       @Override
+       public boolean hasChildren() {
+               return (children.size() > 0);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChildrenCount()
+        */
+       @Override
+       public int getChildrenCount() {
+               return children.size();
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChildren()
+        */
+       @Override
+       public ITmfFilterTreeNode[] getChildren() {
+               return children.toArray(new ITmfFilterTreeNode[0]);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChild(int)
+        */
+       @Override
+       public ITmfFilterTreeNode getChild(final int index) throws IndexOutOfBoundsException {
+               return children.get(index);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#remove()
+        */
+       @Override
+       public ITmfFilterTreeNode remove() {
+               if (getParent() != null) {
+                       getParent().removeChild(this);
+               }
+               return this;
+       }
+
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#removeChild(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)
+        */
+       @Override
+       public ITmfFilterTreeNode removeChild(ITmfFilterTreeNode node) {
+               children.remove(node);
+               node.setParent(null);
+               return node;
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#addChild(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)
+        */
+       @Override
+       public int addChild(final ITmfFilterTreeNode node) {
+               node.setParent(this);
+               if(children.add(node)) {
+                       return (children.size() - 1);
+               }
+               return -1;
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#replaceChild(int, org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)
+        */
+       @Override
+       public ITmfFilterTreeNode replaceChild(final int index, final ITmfFilterTreeNode node) throws IndexOutOfBoundsException {
+               node.setParent(this);
+               return children.set(index, node);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#setParent(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)
+        */
+       @Override
+       public void setParent(final ITmfFilterTreeNode parent) {
+               this.parent = parent;
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#matches(org.eclipse.linuxtools.tmf.event.TmfEvent)
+        */
+       @Override
+       public abstract boolean matches(ITmfEvent event);
+
+    /**
+     * @param event the event
+     * @param field the field id
+     * @return the field value
+     */
+    protected Object getFieldValue(ITmfEvent event, String field) {
+        Object value = null;
+        if (ITmfEvent.EVENT_FIELD_CONTENT.equals(field)) {
+            ITmfEventField content = event.getContent();
+            value = (content.getValue() != null) ? content.getValue().toString() : content.toString();
+        }
+        else if (ITmfEvent.EVENT_FIELD_TYPE.equals(field)) {
+            value = event.getType().getName();
+        }
+        else if (ITmfEvent.EVENT_FIELD_TIMESTAMP.equals(field)) {
+            value = event.getTimestamp().toString();
+        }
+        else if (ITmfEvent.EVENT_FIELD_SOURCE.equals(field)) {
+            value = event.getSource();
+        }
+        else if (ITmfEvent.EVENT_FIELD_REFERENCE.equals(field)) {
+            value = event.getReference();
+        }
+        else {
+            ITmfEventField eventField = event.getContent().getField(field);
+            if (eventField != null) {
+                value = eventField.getValue();
+            }
+        }
+        return value;
+    }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getValidChildren()
+        *
+        * By default, all node types are valid children. Override if different.
+        */
+       @Override
+       public List<String> getValidChildren() {
+               return Arrays.asList(VALID_CHILDREN);
+       }
+
+       @Override
+       public ITmfFilterTreeNode clone() {
+               try {
+                       TmfFilterTreeNode clone = (TmfFilterTreeNode) super.clone();
+                       clone.parent = null;
+                       clone.children = new ArrayList<ITmfFilterTreeNode>(children.size());
+                       for (ITmfFilterTreeNode child : getChildren()) {
+                               clone.addChild(child.clone());
+                       }
+                       return clone;
+               } catch (CloneNotSupportedException e) {
+                       return null;
+               }
+       }
+}
This page took 0.033102 seconds and 5 git commands to generate.