* the hashtable (with the root element as key)
*/
public static Hashtable sortClassesByRoot(String classes) {
Hashtable roots;
Hashtable result;
Enumeration enm;
int i;
StringTokenizer tok;
String clsname;
Vector list;
HierarchyPropertyParser hpp;
String separator;
String root;
String tmpStr;
if (classes == null)
return null;
roots = new Hashtable();
hpp = new HierarchyPropertyParser();
separator = hpp.getSeperator();
// go over all classnames and store them in the hashtable, with the
// root element as the key
tok = new StringTokenizer(classes, ", ");
while (tok.hasMoreElements()) {
clsname = tok.nextToken();
root = getRootFromClass(clsname, separator);
if (root == null)
continue;
// already stored?
if (!roots.containsKey(root)) {
list = new Vector();
roots.put(root, list);
}
else {
list = (Vector) roots.get(root);
}
list.add(clsname);
}
// build result
result = new Hashtable();
enm = roots.keys();
while (enm.hasMoreElements()) {
root = (String) enm.nextElement();
list = (Vector) roots.get(root);
tmpStr = "";
for (i = 0; i < list.size(); i++) {
if (i > 0)
tmpStr += ",";