platform35/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/AbstractDataTree.java
author timkelly
Thu, 30 Jul 2009 11:56:23 -0500
changeset 40 eb3c938c7fef
permissions -rw-r--r--
set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     1
/*******************************************************************************
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     2
 * Copyright (c) 2000, 2006 IBM Corporation and others.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     3
 * All rights reserved. This program and the accompanying materials
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     4
 * are made available under the terms of the Eclipse Public License v1.0
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     5
 * which accompanies this distribution, and is available at
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     6
 * http://www.eclipse.org/legal/epl-v10.html
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     7
 * 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     8
 * Contributors:
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
     9
 *     IBM Corporation - initial API and implementation
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    10
 *******************************************************************************/
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    11
package org.eclipse.core.internal.dtree;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    12
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    13
import org.eclipse.core.internal.utils.Messages;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    14
import org.eclipse.core.runtime.IPath;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    15
import org.eclipse.core.runtime.Path;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    16
import org.eclipse.osgi.util.NLS;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    17
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    18
/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    19
 * Data trees can be viewed as generic multi-leaf trees.  The tree points to a single
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    20
 * rootNode, and each node can contain an arbitrary number of children.<p>
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    21
 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    22
 * <p>Internally, data trees can be either complete trees (DataTree class), or delta
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    23
 * trees (<code>DeltaDataTree</code> class).  A DataTree is a stand-alone tree 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    24
 * that contains all its own data.  A <code>DeltaDataTree</code> only stores the 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    25
 * differences between itself and its parent tree.  This sparse representation allows 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    26
 * the API user to retain chains of delta trees that represent incremental changes to 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    27
 * a system.  Using the delta trees, the user can undo changes to a tree by going up to 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    28
 * the parent tree.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    29
 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    30
 * <p>Both representations of the tree support the same API, so the user of a tree
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    31
 * never needs to know if they're dealing with a complete tree or a chain of deltas.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    32
 * Delta trees support an extended API of delta operations.  See the <code>DeltaDataTree
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    33
 * </code> class for details.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    34
 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    35
 * @see DataTree
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    36
 * @see DeltaDataTree
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    37
 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    38
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    39
public abstract class AbstractDataTree {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    40
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    41
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    42
	 * Whether modifications to the given source tree are allowed 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    43
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    44
	private boolean immutable = false;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    45
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    46
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    47
	 * Singleton indicating no children
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    48
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    49
	protected static final IPath[] NO_CHILDREN = new IPath[0];
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    50
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    51
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    52
	 * Creates a new empty tree
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    53
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    54
	public AbstractDataTree() {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    55
		this.empty();
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    56
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    57
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    58
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    59
	 * Returns a copy of the receiver, which shares the receiver's
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    60
	 * instance variables.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    61
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    62
	protected AbstractDataTree copy() {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    63
		AbstractDataTree newTree = this.createInstance();
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    64
		newTree.setImmutable(this.isImmutable());
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    65
		newTree.setRootNode(this.getRootNode());
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    66
		return newTree;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    67
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    68
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    69
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    70
	 * Returns a copy of the node subtree rooted at the given key.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    71
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    72
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    73
	public abstract AbstractDataTreeNode copyCompleteSubtree(IPath key);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    74
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    75
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    76
	 * Creates a new child in the tree.  If a child with such a name exists, 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    77
	 * it is replaced with the new child
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    78
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    79
	 * @param parentKey key of parent for new child.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    80
	 * @param localName name for new child.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    81
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    82
	 *	parentKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    83
	 * @exception RuntimeException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    84
	 *	receiver is immutable
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    85
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    86
	public abstract void createChild(IPath parentKey, String localName);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    87
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    88
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    89
	 * Creates a new child in the tree.  If a child with such a name exists, 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    90
	 * it is replaced with the new child
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    91
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    92
	 * @param parentKey key of parent for new child.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    93
	 * @param localName name for new child.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    94
	 * @param object the data for the new child
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    95
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    96
	 *	parentKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    97
	 * @exception RuntimeException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    98
	 *	receiver is immutable
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
    99
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   100
	public abstract void createChild(IPath parentKey, String localName, Object object);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   101
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   102
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   103
	 * Creates and returns a new instance of the tree.  This is an 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   104
	 * implementation of the factory method creational pattern for allowing
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   105
	 * abstract methods to create instances.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   106
	 * 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   107
	 * @return the new tree.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   108
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   109
	protected abstract AbstractDataTree createInstance();
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   110
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   111
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   112
	 * Creates or replaces a subtree in the tree.  The parent node must exist.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   113
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   114
	 * @param key key of parent of subtree to create/replace
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   115
	 * @param subtree new subtree to add to tree
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   116
	 * @exception RuntimeException receiver is immutable
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   117
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   118
	public abstract void createSubtree(IPath key, AbstractDataTreeNode subtree);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   119
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   120
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   121
	 * Deletes a child from the tree.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   122
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   123
	 * <p>Note: this method requires both parentKey and localName,
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   124
	 * making it impossible to delete the root node.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   125
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   126
	 * @param parentKey parent of node to delete.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   127
	 * @param localName name of node to delete.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   128
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   129
	 *	a child of parentKey with name localName does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   130
	 * @exception RuntimeException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   131
	 *	receiver is immutable	 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   132
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   133
	public abstract void deleteChild(IPath parentKey, String localName);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   134
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   135
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   136
	 * Initializes the receiver so that it is a complete, empty tree.  The
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   137
	 * result does not represent a delta on another tree.  An empty tree is 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   138
	 * defined to have a root node with null data and no children.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   139
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   140
	public abstract void empty();
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   141
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   142
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   143
	 * Returns the key of a node in the tree.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   144
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   145
	 * @param parentKey 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   146
	 *	parent of child to retrieve.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   147
	 * @param index 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   148
	 *	index of the child to retrieve in its parent.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   149
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   150
	 * 	parentKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   151
	 * @exception ArrayIndexOutOfBoundsException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   152
	 *	if no child with the given index (runtime exception)
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   153
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   154
	public IPath getChild(IPath parentKey, int index) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   155
		/* Get name of given child of the parent */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   156
		String child = getNameOfChild(parentKey, index);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   157
		return parentKey.append(child);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   158
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   159
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   160
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   161
	 * Returns the number of children of a node
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   162
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   163
	 * @param parentKey
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   164
	 *	key of the node for which we want to retreive the number of children
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   165
	 * @exception ObjectNotFoundException 
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   166
	 *	parentKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   167
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   168
	public int getChildCount(IPath parentKey) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   169
		return getNamesOfChildren(parentKey).length;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   170
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   171
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   172
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   173
	 * Returns the keys of all children of a node.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   174
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   175
	 * @param parentKey
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   176
	 *	key of parent whose children we want to retrieve.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   177
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   178
	 *	parentKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   179
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   180
	public IPath[] getChildren(IPath parentKey) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   181
		String names[] = getNamesOfChildren(parentKey);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   182
		int len = names.length;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   183
		if (len == 0)
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   184
			return NO_CHILDREN;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   185
		IPath answer[] = new IPath[len];
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   186
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   187
		for (int i = 0; i < len; i++) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   188
			answer[i] = parentKey.append(names[i]);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   189
		}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   190
		return answer;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   191
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   192
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   193
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   194
	 * Returns the data of a node.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   195
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   196
	 * @param key
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   197
	 *	key of node for which we want to retrieve data.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   198
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   199
	 *	key does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   200
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   201
	public abstract Object getData(IPath key);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   202
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   203
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   204
	 * Returns the local name of a node in the tree
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   205
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   206
	 * @param parentKey
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   207
	 *	parent of node whose name we want to retrieve
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   208
	 * @param index
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   209
	 *	index of node in its parent
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   210
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   211
	 *	parentKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   212
	 * @exception ArrayIndexOutOfBoundsException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   213
	 *	if no child with the given index
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   214
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   215
	public String getNameOfChild(IPath parentKey, int index) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   216
		String childNames[] = getNamesOfChildren(parentKey);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   217
		/* Return the requested child as long as its in range */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   218
		return childNames[index];
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   219
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   220
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   221
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   222
	 * Returns the local names for the children of a node
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   223
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   224
	 * @param parentKey
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   225
	 *	key of node whose children we want to retrieve
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   226
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   227
	 *	parentKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   228
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   229
	public abstract String[] getNamesOfChildren(IPath parentKey);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   230
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   231
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   232
	 * Returns the root node of the tree.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   233
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   234
	 * <p>Both subclasses must be able to return their root node.  However subclasses
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   235
	 * can have different types of root nodes, so this is not enforced as an abstract
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   236
	 * method
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   237
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   238
	AbstractDataTreeNode getRootNode() {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   239
		throw new AbstractMethodError(Messages.dtree_subclassImplement);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   240
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   241
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   242
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   243
	 * Handles the case where an attempt was made to modify
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   244
	 * the tree when it was in an immutable state.  Throws
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   245
	 * an unchecked exception.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   246
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   247
	static void handleImmutableTree() {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   248
		throw new RuntimeException(Messages.dtree_immutable);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   249
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   250
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   251
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   252
	 * Handles the case where an attempt was made to manipulate
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   253
	 * an element in the tree that does not exist.  Throws an
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   254
	 * unchecked exception.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   255
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   256
	static void handleNotFound(IPath key) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   257
		throw new ObjectNotFoundException(NLS.bind(Messages.dtree_notFound, key));
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   258
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   259
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   260
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   261
	 * Makes the tree immutable
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   262
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   263
	public void immutable() {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   264
		immutable = true;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   265
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   266
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   267
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   268
	 * Returns true if the receiver includes a node with the given key, false
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   269
	 * otherwise.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   270
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   271
	 * @param key
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   272
	 *	key of node to find
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   273
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   274
	public abstract boolean includes(IPath key);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   275
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   276
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   277
	 * Returns true if the tree is immutable, and false otherwise.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   278
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   279
	public boolean isImmutable() {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   280
		return immutable;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   281
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   282
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   283
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   284
	 * Returns an object containing:
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   285
	 * 	- a flag indicating whether the specified node was found
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   286
	 *  - the data for the node, if it was found
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   287
	 * @param key
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   288
	 *	key of node for which we want to retrieve data.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   289
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   290
	public abstract DataTreeLookup lookup(IPath key);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   291
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   292
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   293
	 * Returns the key of the root node.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   294
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   295
	public IPath rootKey() {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   296
		return Path.ROOT;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   297
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   298
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   299
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   300
	 * Sets the data of a node.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   301
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   302
	 * @param key
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   303
	 *	key of node for which to set data
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   304
	 * @param data
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   305
	 *	new data value for node
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   306
	 * @exception ObjectNotFoundException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   307
	 *	the nodeKey does not exist in the receiver
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   308
	 * @exception IllegalArgumentException
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   309
	 *	receiver is immutable
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   310
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   311
	public abstract void setData(IPath key, Object data);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   312
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   313
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   314
	 * Sets the immutable field.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   315
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   316
	void setImmutable(boolean bool) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   317
		immutable = bool;
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   318
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   319
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   320
	/**
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   321
	 * Sets the root node of the tree.
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   322
	 *
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   323
	 * <p>Both subclasses must be able to set their root node.  However subclasses
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   324
	 * can have different types of root nodes, so this is not enforced as an abstract
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   325
	 * method
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   326
	 */
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   327
	void setRootNode(AbstractDataTreeNode node) {
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   328
		throw new Error(Messages.dtree_subclassImplement);
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   329
	}
eb3c938c7fef set up for custom build for logging. merged from carbide 2.1.x builds. this state is as it comes from platform. Next changelog will add the updates.
timkelly
parents:
diff changeset
   330
}