// Copyright 2000-2005, FreeHEP.
package org.freehep.rtti;
import java.util.*;
/**
* Defines a Package.
*
* @author Mark Donszelmann
* @version $Id: IPackage.java 8584 2006-08-10 23:06:37Z duns $
*/
public class IPackage {
private String name;
private Hashtable/*<String, IClass>*/ classes = new Hashtable();
IPackage(String name) {
this.name = ((name == null) || (name.equals(""))) ? "<default>" : name;
}
/**
* Returns the name of the package
*
*
* @return name of package
*/
public String getName() {
return name;
}
public void addClass(IClass clazz) {
classes.put(clazz.getName(), clazz);
}
public IClass getClass(String name) {
return (IClass)classes.get(name);
}
public IClass[] getClasses() {
IClass[] c = new IClass[classes.size()];
int i = 0;
for (Enumeration e = classes.keys(); e.hasMoreElements(); ) {
c[i++] = (IClass)classes.get(e.nextElement());
}
return c;
}
/**
* Returns a string representation of this package
*
*
* @return a string representation of this package
*/
public String toString() {
return toString(null);
}
/**
* String representation of the RTTI, which lists the full RTTI in semi-java format, with
* package prefix.
*
* @param packagePrefix name to prefix to the package name
*
* @return String representation of the RTTI.
*/
public String toString(String packagePrefix) {
StringBuffer s = new StringBuffer("Package: ");
s.append(getName());
s.append("\n");
for (Enumeration e = classes.keys(); e.hasMoreElements(); ) {
String key = (String)e.nextElement();
IClass c = (IClass)classes.get(key);
s.append(c.toString(packagePrefix));
s.append("\n");
}
return s.toString();
}
}