@Override public boolean visitEnter(TreeNodeResult<String> node) { String id = node.getObject(); int count = node.getAttCount(); TARGET object = converter.convert(id); TreeNodeResult<TARGET> newNode = new TreeNodeResult<TARGET>( object, count); TreeNodeResult<TARGET> parent = stack.peekLast(); if (parent == null) { // le premier noeud, donc le root a retourner plus tard tree = newNode; } else { parent.add(newNode); } stack.offerLast(newNode); return true; }
/** * Return TreeNodeResult where object in TreeNodeResult equals child in * parameter * @param child * @return */ public TreeNodeResult<T> getChild(T child) { TreeNodeResult<T> result = null; if (child != null) { for (Enumeration e = children(); e.hasMoreElements();) { TreeNodeResult<T> r = (TreeNodeResult<T>) e.nextElement(); if (child.equals(r.getObject())) { result = r; break; } } } return result; }
/** * Iterate on all children or sub-children, in depth first * @return */ @Override public Iterator<TreeNodeResult<T>> iterator() { Iterator<TreeNodeResult<T>> result = new Iterator<TreeNodeResult<T>>() { protected Enumeration enumDepth = TreeNodeResult.this.depthFirstEnumeration(); @Override public boolean hasNext() { return enumDepth.hasMoreElements(); } @Override public TreeNodeResult<T> next() { TreeNodeResult<T> result = (TreeNodeResult<T>)enumDepth.nextElement(); return result; } @Override public void remove() { throw new UnsupportedOperationException("Not supported yet."); } }; return result; }
TYPE.WIKITTY)); int nb = counts.containsKey(id) ? counts.get(id) : 0; TreeNodeResult<String> child = new TreeNodeResult<String>(id, nb); allTreeNodeResult.put(id, child); childParent.put(id, parentId); TreeNodeResult<String> child = e.getValue(); TreeNodeResult<String> parent = allTreeNodeResult.get(parentId); parent.add(child);
/** * Return only children of wikittyId passed in argument * * @param clazz * @param wikittyId * @param filter * @return * * @deprecated since 3.1: use {@link #findTreeNode(java.lang.Class, java.lang.String, int, boolean, org.nuiton.wikitty.search.Criteria) } or open new ticket with your need */ @Deprecated public <E extends BusinessEntity> Map<E, Integer> findTreeNode( Class<E> clazz, String wikittyId, Criteria filter) { long start = TimeLog.getTime(); TreeNodeResult<E> tree = findTreeNode(clazz, wikittyId, 1, true, filter); Map<E, Integer> result = new LinkedHashMap<E, Integer>(); for (TreeNodeResult<E> child : tree.getChildren()) { result.put(child.getObject(), child.getAttCount()); } timeLog.log(start, "findTreeNode"); return result; }
/** * Visite en profondeur de l'arbre, il est possible d'arreter la visite * soit en entrant dans le noeud soit en sortant du noeud, si respectivement * visitEnter ou visitLeave retourne false. * * @param visitor */ public boolean acceptVisitor(Visitor<T> visitor) { if (visitor.visitEnter(this)) { for (Enumeration e = children(); e.hasMoreElements();) { TreeNodeResult<T> child = (TreeNodeResult<T>) e.nextElement(); if (!child.acceptVisitor(visitor)) { break; } } } boolean result = visitor.visitLeave(this); return result; }
/** * Restore node with wikittyId passed in argument and count of attachment * in subtree begin with this node * * @param <E> * @param clazz * @param wikittyId * @param filter * @return * @deprecated since 3.1: use {@link #findTreeNode(java.lang.Class, java.lang.String, int, boolean, org.nuiton.wikitty.search.Criteria)} or open new ticket with your need */ @Deprecated public <E extends BusinessEntity> Map.Entry<E, Integer> restoreNode( Class<E> clazz, String wikittyId, Criteria filter) { long start = TimeLog.getTime(); TreeNodeResult<E> tree = findTreeNode(clazz, wikittyId, 0, true, filter); Map.Entry<E, Integer> result = new SimpleEntry<E, Integer>( tree.getObject(), tree.getAttCount()); timeLog.log(start, "restoreNode"); return result; }
/** * Retourne l'objet associe avec ce noeud (id, wikitty ou BusinessEntity) * @return l'objet associe avec ce noeud (id, wikitty ou BusinessEntity) */ public T getObject() { return getUserObject(); }
resultId.acceptVisitor(retrieveIdVisitor); new ConvertTreeVisitor<Wikitty>(converter); resultId.acceptVisitor(convertVisitor);
@Override public boolean visitEnter(TreeNodeResult<String> node) { String id = node.getObject(); ids.add(id); return true; }
WikittyTypes.WIKITTY); int nb = counts.containsKey(id) ? counts.get(id) : 0; TreeNodeResult<String> child = new TreeNodeResult<String>(id, nb); allTreeNodeResult.put(id, child); childParent.put(id, parentId); TreeNodeResult<String> parent = allTreeNodeResult.get(parentId); if (parent != child) { parent.add(child);
/** * Returns the result of sending <code>toString()</code> to this node's * user object, or null if this node has no user object. * * @see #getUserObject */ @Override public String toString() { T userObject = getUserObject(); if (userObject == null) { return null; } else { return userObject.toString(); } }
resultId.acceptVisitor(retrieveIdVisitor); new ConvertTreeVisitor<E>(converter); resultId.acceptVisitor(convertVisitor);