/*
 *  DynTreeItem.java v0.10 20-DEC-1999
 *  Copyright (c) TKK/TLM/Calypso
 *  Author: Alexey Mednonogov
 */

package codec.dyntree;

import java.io.*;
import java.util.*;

import codec.*;
import codec.adapt.*;
import codec.convert.*;
import codec.debug.*;
import codec.dyntree.*;
import codec.export.*;
import codec.orb.*;
import codec.pco.*;
import codec.server.*;
import codec.client.*;
import codec.visit.*;
import codec.build.*;

/** Items of DynTree class. */
final public class DynTreeItem {

   	private Vector children;
   	private int relationType;

   	private static void checkRelationType(int relationType_) {

		if ((relationType_ != DynTree.RELATION_TYPE_CONTENT) &&
			(relationType_ != DynTree.RELATION_TYPE_CONTAINER)) {

			System.out.println("DynTreeItem::checkRelationType(): " +
				"Internal error -- incorrect type.");
			System.exit(0);
		}
	}

   	public DynTreeItem() {
		children = new Vector(1, 1);
	}

   	public Vector getChildren() { return children; }

   	public int getRelationType() { return relationType; }

   	public void addChild(Object child, int relationType_) {

		checkRelationType(relationType_);

		if (children.size() == 0) {

			children.add(child);
			relationType = relationType_;
			return;
		}
		if (relationType != relationType_) {
			System.out.println("DynTreeItem::addChild(): " +
				"Internal error -- relation type mismatch.");
			System.exit(0);
		}
		if (relationType == DynTree.RELATION_TYPE_CONTENT) {
			System.out.println("DynTreeItem::addChild(): " +
				"Internal error -- attempt to add more than one child to " +
				"parent for one-to-one relationship RELATION_TYPE_CONTENT.");
			System.exit(0);
		}
		children.add(child);
	}
}
