Rename xxx.lttng to xxx.lttng.core
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf / src / org / eclipse / linuxtools / tmf / filter / model / TmfFilterTreeNode.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 * Patrick Tasse - Refactoring\r
12 *******************************************************************************/\r
13\r
14package org.eclipse.linuxtools.tmf.filter.model;\r
15\r
16import java.util.ArrayList;\r
17import java.util.Arrays;\r
18import java.util.List;\r
19\r
20import org.eclipse.linuxtools.tmf.event.TmfEvent;\r
21\r
22/**\r
23 * <b><u>TmfFilterTreeNode</u></b>\r
24 * <p>\r
25 * The Filter Tree node\r
26 * <p>\r
27 */\r
28public abstract class TmfFilterTreeNode implements ITmfFilterTreeNode, Cloneable {\r
29 \r
30 private static final String[] VALID_CHILDREN = {\r
31 TmfFilterEventTypeNode.NODE_NAME,\r
32 TmfFilterAndNode.NODE_NAME,\r
33 TmfFilterOrNode.NODE_NAME,\r
34 TmfFilterContainsNode.NODE_NAME,\r
35 TmfFilterEqualsNode.NODE_NAME,\r
36 TmfFilterMatchesNode.NODE_NAME,\r
37 TmfFilterCompareNode.NODE_NAME\r
38 };\r
39 \r
40 private ITmfFilterTreeNode parent = null;\r
41 private ArrayList<ITmfFilterTreeNode> children = new ArrayList<ITmfFilterTreeNode>();\r
42\r
43 public TmfFilterTreeNode(final ITmfFilterTreeNode parent) {\r
44 if (parent != null) {\r
45 parent.addChild(this);\r
46 }\r
47 }\r
48 \r
49 /* (non-Javadoc)\r
50 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getParent()\r
51 */\r
52 @Override\r
53 public ITmfFilterTreeNode getParent() {\r
54 return parent;\r
55 }\r
56\r
57 /* (non-Javadoc)\r
58 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getNodeName()\r
59 */\r
60 @Override\r
61 public abstract String getNodeName();\r
62\r
63 /* (non-Javadoc)\r
64 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#hasChildren()\r
65 */\r
66 @Override\r
67 public boolean hasChildren() {\r
68 return (children.size() > 0);\r
69 }\r
70\r
71 /* (non-Javadoc)\r
72 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChildrenCount()\r
73 */\r
74 @Override\r
75 public int getChildrenCount() {\r
76 return children.size();\r
77 }\r
78\r
79 /* (non-Javadoc)\r
80 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChildren()\r
81 */\r
82 @Override\r
83 public ITmfFilterTreeNode[] getChildren() {\r
84 return children.toArray(new ITmfFilterTreeNode[0]);\r
85 }\r
86\r
87 /* (non-Javadoc)\r
88 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getChild(int)\r
89 */\r
90 @Override\r
91 public ITmfFilterTreeNode getChild(final int index) throws IndexOutOfBoundsException {\r
92 return children.get(index);\r
93 }\r
94\r
95 /* (non-Javadoc)\r
96 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#remove()\r
97 */\r
98 @Override\r
99 public ITmfFilterTreeNode remove() {\r
100 if (getParent() != null) {\r
101 getParent().removeChild(this);\r
102 }\r
103 return this;\r
104 }\r
105\r
106 /*\r
107 * (non-Javadoc)\r
108 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#removeChild(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
109 */\r
110 @Override\r
111 public ITmfFilterTreeNode removeChild(ITmfFilterTreeNode node) {\r
112 children.remove(node);\r
113 node.setParent(null);\r
114 return node;\r
115 }\r
116\r
117 /* (non-Javadoc)\r
118 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#addChild(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
119 */\r
120 @Override\r
121 public int addChild(final ITmfFilterTreeNode node) {\r
122 node.setParent(this);\r
123 if(children.add(node)) {\r
124 return (children.size() - 1);\r
125 }\r
126 return -1;\r
127 }\r
128\r
129 /* (non-Javadoc)\r
130 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#replaceChild(int, org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
131 */\r
132 @Override\r
133 public ITmfFilterTreeNode replaceChild(final int index, final ITmfFilterTreeNode node) throws IndexOutOfBoundsException {\r
134 node.setParent(this);\r
135 return children.set(index, node);\r
136 }\r
137\r
138 /* (non-Javadoc)\r
139 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#setParent(org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode)\r
140 */\r
141 @Override\r
142 public void setParent(final ITmfFilterTreeNode parent) {\r
143 this.parent = parent;\r
144 }\r
145\r
146 \r
147 /* (non-Javadoc)\r
148 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#matches(org.eclipse.linuxtools.tmf.event.TmfEvent)\r
149 */\r
150 @Override\r
151 public abstract boolean matches(TmfEvent event);\r
152\r
153 /* (non-Javadoc)\r
154 * @see org.eclipse.linuxtools.tmf.filter.model.ITmfFilterTreeNode#getValidChildren()\r
155 * \r
156 * By default, all node types are valid children. Override if different.\r
157 */\r
158 @Override\r
159 public List<String> getValidChildren() {\r
160 return Arrays.asList(VALID_CHILDREN);\r
161 }\r
162\r
163 @Override\r
164 public ITmfFilterTreeNode clone() {\r
165 try {\r
166 TmfFilterTreeNode clone = (TmfFilterTreeNode) super.clone();\r
167 clone.parent = null;\r
168 clone.children = new ArrayList<ITmfFilterTreeNode>(children.size());\r
169 for (ITmfFilterTreeNode child : getChildren()) {\r
170 clone.addChild(child.clone());\r
171 }\r
172 return clone;\r
173 } catch (CloneNotSupportedException e) {\r
174 return null;\r
175 }\r
176 }\r
177}\r
This page took 0.032092 seconds and 5 git commands to generate.