1 // Do not edit this file! It was generated by Melati POEM's DSD preprocessor. 2 3 package org.melati.util.test.generated; 4 5 6 import java.util.Collections; 7 import java.util.Enumeration; 8 import java.util.List; 9 import org.melati.poem.AccessPoemException; 10 import org.melati.poem.CachedSelection; 11 import org.melati.poem.Column; 12 import org.melati.poem.Field; 13 import org.melati.poem.JdbcPersistent; 14 import org.melati.poem.NoSuchRowPoemException; 15 import org.melati.poem.ValidationPoemException; 16 import org.melati.poem.util.EmptyEnumeration; 17 import org.melati.util.test.Node; 18 import org.melati.util.test.NodeTable; 19 import org.melati.util.test.TreeDatabaseTables; 20 21 22 /** 23 * Melati POEM generated abstract base class for a <code>Persistent</code> 24 * <code>Node</code> Object. 25 * 26 * See org.melati.poem.prepro.TableDef#generatePersistentBaseJava 27 */ 28 public abstract class NodeBase extends JdbcPersistent { 29 30 31 /** 32 * Retrieves the Database object. 33 * 34 * See org.melati.poem.prepro.TableDef#generatePersistentBaseJava 35 * @return the database 36 */ 37 public TreeDatabaseTables getTreeDatabaseTables() { 38 return (TreeDatabaseTables)getDatabase(); 39 } 40 41 42 /** 43 * Retrieves the <code>NodeTable</code> table 44 * which this <code>Persistent</code> is from. 45 * 46 * See org.melati.poem.prepro.TableDef#generatePersistentBaseJava 47 * @return the NodeTable 48 */ 49 @SuppressWarnings("unchecked") 50 public NodeTable<Node> getNodeTable() { 51 return (NodeTable<Node>)getTable(); 52 } 53 54 @SuppressWarnings("unchecked") 55 private NodeTable<Node> _getNodeTable() { 56 return (NodeTable<Node>)getTable(); 57 } 58 59 // Fields in this table 60 /** 61 * id 62 */ 63 protected Integer id; 64 /** 65 * name - Contact Name 66 */ 67 protected String name; 68 /** 69 * parent - Parent of this Node 70 */ 71 protected Integer parent; 72 73 74 /** 75 * Retrieves the <code>Id</code> value, without locking, 76 * for this <code>Node</code> <code>Persistent</code>. 77 * 78 * see org.melati.poem.prepro.FieldDef#generateBaseMethods 79 * @return the Integer id 80 */ 81 public Integer getId_unsafe() { 82 return id; 83 } 84 85 86 /** 87 * Sets the <code>Id</code> value directly, without checking, 88 * for this Node <code>Persistent</code>. 89 * 90 * see org.melati.poem.prepro.FieldDef#generateBaseMethods 91 * @param cooked the pre-validated value to set 92 */ 93 public void setId_unsafe(Integer cooked) { 94 id = cooked; 95 } 96 97 /** 98 * Retrieves the Id value, with locking, for this 99 * <code>Node</code> <code>Persistent</code>. 100 * 101 * Generated by org.melati.poem.prepro.AtomFieldDef#generateBaseMethods 102 * @throws AccessPoemException 103 * if the current <code>AccessToken</code> 104 * does not confer write access rights 105 * @return the value of the field <code>Id</code> for this 106 * <code>Node</code> <code>Persistent</code> 107 */ 108 109 public Integer getId() 110 throws AccessPoemException { 111 readLock(); 112 return getId_unsafe(); 113 } 114 115 116 /** 117 * Sets the <code>Id</code> value, with checking, for this 118 * <code>Node</code> <code>Persistent</code>. 119 * 120 * Generated by org.melati.poem.prepro.AtomFieldDef#generateBaseMethods 121 * @param cooked a validated <code>int</code> 122 * @throws AccessPoemException 123 * if the current <code>AccessToken</code> 124 * does not confer write access rights 125 * @throws ValidationPoemException 126 * if the value is not valid 127 */ 128 public void setId(Integer cooked) 129 throws AccessPoemException, ValidationPoemException { 130 _getNodeTable().getIdColumn(). 131 getType().assertValidCooked(cooked); 132 writeLock(); 133 setId_unsafe(cooked); 134 } 135 136 /** 137 * Sets the <code>Id</code> value, with checking, for this 138 * <code>Node</code> <code>Persistent</code>. 139 * 140 * Generated by org.melati.poem.prepro.IntegerFieldDef#generateBaseMethods 141 * @param cooked a validated <code>int</code> 142 * @throws AccessPoemException 143 * if the current <code>AccessToken</code> 144 * does not confer write access rights 145 * @throws ValidationPoemException 146 * if the value is not valid 147 */ 148 149 public final void setId(int cooked) 150 throws AccessPoemException, ValidationPoemException { 151 setId(new Integer(cooked)); 152 } 153 154 155 /** 156 * Retrieves the <code>Id</code> value as a <code>Field</code> 157 * from this <code>Node</code> <code>Persistent</code>. 158 * 159 * see org.melati.poem.prepro.FieldDef#generateFieldCreator 160 * @throws AccessPoemException 161 * if the current <code>AccessToken</code> 162 * does not confer write access rights 163 * @return the Integer id 164 */ 165 public Field<Integer> getIdField() throws AccessPoemException { 166 Column<Integer> c = _getNodeTable().getIdColumn(); 167 return new Field<Integer>((Integer)c.getRaw(this), c); 168 } 169 170 171 /** 172 * Retrieves the <code>Name</code> value, without locking, 173 * for this <code>Node</code> <code>Persistent</code>. 174 * 175 * see org.melati.poem.prepro.FieldDef#generateBaseMethods 176 * @return the String name 177 */ 178 public String getName_unsafe() { 179 return name; 180 } 181 182 183 /** 184 * Sets the <code>Name</code> value directly, without checking, 185 * for this Node <code>Persistent</code>. 186 * 187 * see org.melati.poem.prepro.FieldDef#generateBaseMethods 188 * @param cooked the pre-validated value to set 189 */ 190 public void setName_unsafe(String cooked) { 191 name = cooked; 192 } 193 194 /** 195 * Retrieves the Name value, with locking, for this 196 * <code>Node</code> <code>Persistent</code>. 197 * Field description: 198 * Contact Name 199 * 200 * Generated by org.melati.poem.prepro.AtomFieldDef#generateBaseMethods 201 * @throws AccessPoemException 202 * if the current <code>AccessToken</code> 203 * does not confer write access rights 204 * @return the value of the field <code>Name</code> for this 205 * <code>Node</code> <code>Persistent</code> 206 */ 207 208 public String getName() 209 throws AccessPoemException { 210 readLock(); 211 return getName_unsafe(); 212 } 213 214 215 /** 216 * Sets the <code>Name</code> value, with checking, for this 217 * <code>Node</code> <code>Persistent</code>. 218 * Field description: 219 * Contact Name 220 * 221 * Generated by org.melati.poem.prepro.AtomFieldDef#generateBaseMethods 222 * @param cooked a validated <code>int</code> 223 * @throws AccessPoemException 224 * if the current <code>AccessToken</code> 225 * does not confer write access rights 226 * @throws ValidationPoemException 227 * if the value is not valid 228 */ 229 public void setName(String cooked) 230 throws AccessPoemException, ValidationPoemException { 231 _getNodeTable().getNameColumn(). 232 getType().assertValidCooked(cooked); 233 writeLock(); 234 setName_unsafe(cooked); 235 } 236 237 238 /** 239 * Retrieves the <code>Name</code> value as a <code>Field</code> 240 * from this <code>Node</code> <code>Persistent</code>. 241 * 242 * see org.melati.poem.prepro.FieldDef#generateFieldCreator 243 * @throws AccessPoemException 244 * if the current <code>AccessToken</code> 245 * does not confer write access rights 246 * @return the String name 247 */ 248 public Field<String> getNameField() throws AccessPoemException { 249 Column<String> c = _getNodeTable().getNameColumn(); 250 return new Field<String>((String)c.getRaw(this), c); 251 } 252 253 254 /** 255 * Retrieves the <code>Parent</code> value, without locking, 256 * for this <code>Node</code> <code>Persistent</code>. 257 * 258 * see org.melati.poem.prepro.FieldDef#generateBaseMethods 259 * @return the Integer parent 260 */ 261 public Integer getParent_unsafe() { 262 return parent; 263 } 264 265 266 /** 267 * Sets the <code>Parent</code> value directly, without checking, 268 * for this Node <code>Persistent</code>. 269 * 270 * see org.melati.poem.prepro.FieldDef#generateBaseMethods 271 * @param cooked the pre-validated value to set 272 */ 273 public void setParent_unsafe(Integer cooked) { 274 parent = cooked; 275 } 276 277 /** 278 * Retrieves the Table Row Object ID. 279 * 280 * Generated by org.melati.poem.prepro.ReferenceFieldDef#generateBaseMethods 281 * @throws AccessPoemException 282 * if the current <code>AccessToken</code> 283 * does not confer read access rights 284 * @return the TROID as an <code>Integer</code> 285 */ 286 287 public Integer getParentTroid() 288 throws AccessPoemException { 289 readLock(); 290 return getParent_unsafe(); 291 } 292 293 294 /** 295 * Sets the Table Row Object ID. 296 * 297 * Generated by org.melati.poem.prepro.ReferenceFieldDef#generateBaseMethods 298 * @param raw a Table Row Object Id 299 * @throws AccessPoemException 300 * if the current <code>AccessToken</code> 301 * does not confer write access rights 302 */ 303 public void setParentTroid(Integer raw) 304 throws AccessPoemException { 305 setParent(raw == null ? null : 306 getTreeDatabaseTables().getNodeTable().getNodeObject(raw)); 307 } 308 309 310 /** 311 * Retrieves the <code>Parent</code> object referred to. 312 * 313 * Generated by org.melati.poem.prepro.ReferenceFieldDef#generateBaseMethods 314 * @throws AccessPoemException 315 * if the current <code>AccessToken</code> 316 * does not confer read access rights 317 * @throws NoSuchRowPoemException 318 * if the <code>Persistent</code> has yet to be allocated a TROID 319 * @return the <code>Parent</code> as a <code>Node</code> 320 */ 321 public Node getParent() 322 throws AccessPoemException, NoSuchRowPoemException { 323 Integer troid = getParentTroid(); 324 return troid == null ? null : 325 getTreeDatabaseTables().getNodeTable().getNodeObject(troid); 326 } 327 328 329 /** 330 * Set the Parent. 331 * 332 * Generated by org.melati.poem.prepro.ReferenceFieldDef#generateBaseMethods 333 * @param cooked a validated <code>Node</code> 334 * @throws AccessPoemException 335 * if the current <code>AccessToken</code> 336 * does not confer write access rights 337 */ 338 public void setParent(Node cooked) 339 throws AccessPoemException { 340 _getNodeTable(). 341 getParentColumn(). 342 getType().assertValidCooked(cooked); 343 writeLock(); 344 if (cooked == null) 345 setParent_unsafe(null); 346 else { 347 cooked.existenceLock(); 348 setParent_unsafe(cooked.troid()); 349 } 350 } 351 352 353 /** 354 * Retrieves the <code>Parent</code> value as a <code>Field</code> 355 * from this <code>Node</code> <code>Persistent</code>. 356 * 357 * see org.melati.poem.prepro.FieldDef#generateFieldCreator 358 * @throws AccessPoemException 359 * if the current <code>AccessToken</code> 360 * does not confer write access rights 361 * @return the Integer parent 362 */ 363 public Field<Integer> getParentField() throws AccessPoemException { 364 Column<Integer> c = _getNodeTable().getParentColumn(); 365 return new Field<Integer>((Integer)c.getRaw(this), c); 366 } 367 368 private CachedSelection<Node> parentNodes = null; 369 /** References to this Node in the Node table via its parent field.*/ 370 @SuppressWarnings("unchecked") 371 public Enumeration<Node> getParentNodes() { 372 if (getTroid() == null) 373 return new EmptyEnumeration<Node>(); 374 else { 375 if (parentNodes == null) 376 parentNodes = 377 getTreeDatabaseTables().getNodeTable().getParentColumn().cachedSelectionWhereEq(getTroid()); 378 return parentNodes.objects(); 379 } 380 } 381 382 383 /** References to this Node in the Node table via its parent field, as a List.*/ 384 public List<Node> getParentNodeList() { 385 return Collections.list(getParentNodes()); 386 } 387 388 389 390 } 391