/** * Returns a Vector with all leafs of the tree which is described with childdef beginning at the * given depth. * * @param root the XMLElement which is the current root for the search * @param childdef a String array which describes the tree; the last element contains the leaf * name * @param depth depth to start in childdef * @return a Vector of XMLElements of all leafs founded under root */ private Vector getSubChildren(XMLElement root, String[] childdef, int depth) { Vector retval = null; Vector retval2 = null; Vector children = root != null ? root.getChildrenNamed(childdef[depth]) : null; if (children == null) return (null); if (depth < childdef.length - 1) { Iterator iter = children.iterator(); while (iter.hasNext()) { retval2 = getSubChildren((XMLElement) iter.next(), childdef, depth + 1); if (retval2 != null) { if (retval == null) retval = new Vector(); retval.addAll(retval2); } } } else return (children); return (retval); }
// helper function private void readChoices(XMLElement element, ArrayList result) { Vector choices = element.getChildrenNamed("choice"); if (choices == null) return; result.clear(); Iterator choice_it = choices.iterator(); while (choice_it.hasNext()) { XMLElement choice = (XMLElement) choice_it.next(); String value = choice.getAttribute("value"); if (value != null) { List osconstraints = OsConstraint.getOsList(choice); if (OsConstraint.oneMatchesCurrentSystem(osconstraints)) { result.add(this.vs.substitute(value, "plain")); } } } }