/******************************************************************************* * Copyright (c) 2000, 2004 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.wst.ws.internal.datamodel; import java.util.Enumeration; import java.util.Vector; /** * This is the abstract class for a simple data model consisting of * a network of named nodes (class Node). Every node carries a set * of named properties (class Property). Nodes are interrelated by * relationships (class Rel) and connections (class Connection). * Each Model keeps a registry of all of its nodes, and keeps a * reference to one "root" node that can be used as a starting * point for navigation. */ public interface Model { // Copyright public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002."; /** * Sets the name of the model. * @param name The name of the model. */ public void setName ( String name ); /** * Gets the name of the model. * @return String The name of the model. This must not be null. */ public String getName (); /** * Sets a node as the root of the model. If the node does not * belong to a model, then it is added automatically. If the * node already belongs to another model, then the root node * is not set and method returns false. * @param root The node to set as the root. The node must * belong either to this model or to no model. This must * not be null. * @return boolean True if the node was set as the root. * This method returns false if the given node already belongs * to another model. */ public boolean setRootElement ( Element root ); /** * Returns the root node. This method always returns a node * except on an empty Model. If setRootNode() has not been * called, or if the last root node was removed from the model, * then the method will select and return an arbitrary node as * the root. This method will consistently return the same node * until either * (a) setRootNode() is called with a different node or * (b) removeNode() is called to remove the node from the model. * @return Node The current root node, or null if the model is empty. */ public Element getRootElement (); /** * Get the elements that have this name * @param String name the name of the element * @return Vector a vector of elements that have this name * These elements may be of different types **/ public Vector getElementsByName(String name); /** * Adds a node to the model. If the node already belongs to another * model then it will not be added. * @param node The node to add. This must not be null. * @return boolean True if the node was added successfully. * This method returns false if the given node already belongs to * the current model or to another model. */ public boolean addElement ( Element element ); /** * Removes a node from the model. * @param node The node to remove. This must not be null. * @return boolean True if the node was removed successfully. * This method returns false if the given node does not belong * to this model. */ public boolean removeElement ( Element element ); /** * Returns an enumeration of all nodes in the model and in no * particular order, * @return Enumeration An enumeration of all nodes in the model. * This method never returns null. */ public Enumeration getElements (); /** * Returns the number of nodes in the model. * @return int The number of nodes in the model. * This method never returns a negative value. */ public int getNumberOfElements (); /** * Determines if this model contains the given node. * @param node The node to check for. This must not be null. * @return boolean True if and only if the model contains the node. */ public boolean containsElement ( Element element ); /* * This function will provide the next number in the queue for the MUID * */ public int getUniqueNumber(); /* * heres what we call from the element */ public String makeMUID(String name); }