paths.append(it.getModel().getPath());
paths.append(",");
}
sourceHierarchyTree.traverse(new FastMSTreeItemVisitor() {
public boolean visit(FastMSTreeItem item, FastMSTreeItem parent) {
XElementNode elNode = getElementNodeCopyFrom(item);
// elNode.removeChildren();
// parents.put(item, elNode);
item.setElementNode(elNode);
XElementNode xParent = getParent(parent); //, parents); //parents.get(parent);
if(xParent == null)
roots.add(elNode);
else {
xParent.forceAddChild(elNode);
elNode.setParent(xParent);
}
return true;
}
});
xAxisHierarchy.addProperty("filterPaths", paths.toString());
} else {
final Map<FastMSTreeItem, XElementNode> parents = new HashMap<FastMSTreeItem, XElementNode>();
final List <String> filterPaths = new ArrayList <String>();
targetHierarchyTree.traverse(new FastMSTreeItemVisitor(){
public boolean visit(FastMSTreeItem item, FastMSTreeItem parent) {
XObjectModel node = item.getXObjectModel();
String path = node.get("filterPath");
if (path != null) {
filterPaths.add(path);
}
return item.getChildCount() > 0;
}
});
for (String f: filterPaths) {
paths.append(f);
paths.append(",");
}
targetHierarchyTree.traverse(new FastMSTreeItemVisitor() {
public boolean visit(FastMSTreeItem item, FastMSTreeItem parent) {
XElementNode elNode = getElementNodeCopyFrom(item);
elNode.removeChildren();
item.setElementNode(elNode);
XElementNode xParent = getParent(parent); //parents.get(parent);
if(xParent == null)
roots.add(elNode);
else {
xParent.forceAddChild(elNode);
elNode.setParent(xParent);
}
return true;
}
});