1 /*** 2 * The contents of this file are subject to the Mozilla Public 3 * License Version 1.1 (the "License"); you may not use this file 4 * except in compliance with the License. You may obtain a copy of 5 * the License at http://www.mozilla.org/MPL/ 6 * 7 * Software distributed under the License is distributed on an "AS 8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 9 * implied. See the License for the specific language governing 10 * rights and limitations under the License. 11 * 12 * The Original Code is pow2toolkit library. 13 * 14 * The Initial Owner of the Original Code is 15 * particle (www.theparticle.com) 16 * 17 * Portions created by Power Of Two S.R.L. are 18 * Copyright (C) Power Of Two S.R.L. 19 * All Rights Reserved. 20 * 21 * Contributor(s): 22 */ 23 24 package com.pow2.structures.tree; 25 26 27 /*** 28 * Tree Node class. 29 * 30 * @author <a mailto="particle@theparticle.com">particle</a> 31 * (<a href="http://www.theparticle.com/">www.theparticle.com</a>) 32 * @author Luca Fossato 33 * @created 06 July 2002 34 */ 35 public class Node 36 { 37 /*** node identifier */ 38 protected String id; 39 40 /*** node data object */ 41 protected Object data; 42 43 /*** left node */ 44 protected Node left; 45 46 /*** right node */ 47 protected Node right; 48 49 /*** parent node */ 50 protected Node parent; 51 52 /*** node depth level */ 53 protected int depth; 54 55 /*** child nodes visibility */ 56 protected boolean open; 57 58 59 /*** Default constructor for Node object. */ 60 public Node() 61 { 62 id = null; 63 parent = null; 64 left = null; 65 right = null; 66 data = null; 67 depth = 0; 68 open = false; 69 } 70 71 72 /*** 73 * Constructor for the Node object. 74 * Instance a new Node object, setting its data object. 75 * 76 * @param data the node data object 77 */ 78 public Node(Object data) 79 { 80 this(); 81 this.data = data; 82 } 83 84 85 /*** 86 * Constructor for the Node object. 87 * Instance a new Node object, setting 88 * its depth level and its data object. 89 * 90 * @param data the node data object 91 * @param depth the node depth 92 */ 93 public Node(Object data, int depth) 94 { 95 this(data); 96 this.depth = depth; 97 } 98 99 /*** 100 * Constructor for the Node object 101 * 102 * @param id the node identifier 103 * @param d the node data object 104 */ 105 public Node(String id, Object data) 106 { 107 this(data); 108 this.id = id; 109 } 110 111 112 /*** 113 * Sets the id attribute of the Node object 114 * 115 * @param v The new id value 116 */ 117 public void setId(long v) 118 { 119 id = String.valueOf(v); 120 } 121 122 123 /*** 124 * Sets the id attribute of the Node object 125 * 126 * @param v The new id value 127 */ 128 public void setId(String v) 129 { 130 id = v; 131 } 132 133 134 /*** 135 * Gets the id attribute of the ItemNode object 136 * 137 * @return The id value 138 */ 139 public String getId() 140 { 141 return id; 142 } 143 144 145 /*** 146 * Sets the left attribute of the Node object 147 * 148 * @param l The new left value 149 */ 150 public void setLeft(Node l) 151 { 152 left = l; 153 } 154 155 156 /*** 157 * Sets the right attribute of the Node object 158 * 159 * @param r The new right value 160 */ 161 public void setRight(Node r) 162 { 163 right = r; 164 } 165 166 167 /*** 168 * Sets the parent attribute of the Node object 169 * 170 * @param p The new parent value 171 */ 172 public void setParent(Node p) 173 { 174 parent = p; 175 } 176 177 178 /*** 179 * Sets the data attribute of the Node object 180 * 181 * @param d The new data value 182 */ 183 public void setData(Object d) 184 { 185 data = d; 186 } 187 188 189 /*** 190 * Gets the left attribute of the Node object 191 * 192 * @return The left value 193 */ 194 public Node getLeft() 195 { 196 return left; 197 } 198 199 200 /*** 201 * Gets the right attribute of the Node object 202 * 203 * @return The right value 204 */ 205 public Node getRight() 206 { 207 return right; 208 } 209 210 211 /*** 212 * Gets the parent attribute of the Node object 213 * 214 * @return The parent value 215 */ 216 public Node getParent() 217 { 218 return parent; 219 } 220 221 222 /*** 223 * Gets the data attribute of the Node object 224 * 225 * @return The data value 226 */ 227 public Object getData() 228 { 229 return data; 230 } 231 232 233 /*** 234 * Test if the node is open. 235 * 236 * @return true if the node is open, false otherwise. 237 */ 238 public boolean isOpen() 239 { 240 return open; 241 } 242 243 244 /*** 245 * Set the node orifice. 246 * 247 * @param open true to set the <code>open</code> attribute to true; 248 * false otherwise. 249 */ 250 public void setOpening(boolean open) 251 { 252 this.open = open; 253 } 254 255 256 /*** 257 * Gets the depth attribute of the Node object 258 * 259 * @return The depth value 260 */ 261 public int getDepth() 262 { 263 return depth; 264 } 265 266 267 /*** 268 * Sets the depth attribute of the Node object 269 * 270 * @param depth The new depth value 271 */ 272 public void setDepth(int depth) 273 { 274 this.depth = depth; 275 } 276 277 278 /*** 279 * Finalize this node. 280 * <br> 281 * Clear all the node references. 282 */ 283 public void finalize() 284 { 285 id = null; 286 parent = null; 287 left = null; 288 right = null; 289 data = null; 290 } 291 } 292