/** * Genera una cadena representativa del árbol que recibe. * * @param tree Árbol que se desea representar. * @param linePrefx Prefijo de cada línea de firma (por defecto, cadena vacía). * @param identationString Cadena para la identación de los nodos de firma (por defecto, * tabulador). * @return Cadena de texto. */ public static String showTreeAsString( final AOTreeModel tree, final String linePrefx, final String identationString) { if (tree == null || tree.getRoot() == null) { LOGGER.severe("Se ha proporcionado un arbol de firmas vacio"); // $NON-NLS-1$ return null; } if (!(tree.getRoot() instanceof AOTreeNode)) { LOGGER.severe( "La raiz del arbol de firmas no es de tipo DafaultMutableTreeNode"); //$NON-NLS-1$ return null; } final StringBuilder buffer = new StringBuilder(); // Transformamos en cadenas de texto cada rama que surja del nodo raiz // del arbol final AOTreeNode root = (AOTreeNode) tree.getRoot(); for (int i = 0; i < root.getChildCount(); i++) { archiveTreeNode( root.getChildAt(i), 0, linePrefx != null ? linePrefx : "", identationString != null ? identationString : "\t", buffer); //$NON-NLS-1$//$NON-NLS-2$ } return buffer.toString(); }
/** * Transforma en cadena una rama completa de un árbol. Para una correcta indexació * es necesario indicar la profundidad en la que esta el nodo del que pende la rama. En el caso de * las ramas que penden del nodo raíz del árbol la profundidad es cero (0). * * @param node Nodo del que cuelga la rama. * @param depth Profundidad del nodo del que pende la rama. * @param linePrefx Prefijo de cada línea de firma (por defecto, cadena vacía). * @param identationString Cadena para la identación de los nodos de firma (por defecto, * tabulador). * @param buffer Buffer en donde se genera la cadena de texto. */ private static void archiveTreeNode( final AOTreeNode node, final int depth, final String linePrefx, final String identationString, final StringBuilder buffer) { buffer.append('\n').append(linePrefx); for (int i = 0; i < depth; i++) { buffer.append(identationString); } buffer.append(node.getUserObject()); for (int i = 0; i < node.getChildCount(); i++) { archiveTreeNode(node.getChildAt(i), depth + 1, linePrefx, identationString, buffer); } }