private void fixConnexity(CompositeItem copy) { List<Item> flatland = new ArrayList<>(); List<Item> flatCopy = new ArrayList<>(); taggingFlatten(this, flatland); taggingFlatten(copy, flatCopy); int barrier = flatland.size(); for (int i = 0; i < barrier; ++i) { Item orig = flatland.get(i); int connectedTo = find(orig.connectedItem, flatland); if (connectedTo >= 0) { TaggableItem tagged = (TaggableItem) flatCopy.get(i); tagged.setConnectivity(flatCopy.get(connectedTo), orig.connectivity); } } }
private void taggingFlatten(Item tree, List<Item> container) { if (tree.hasUniqueID()) { container.add(tree); } else if (tree instanceof CompositeItem) { CompositeItem asComposite = (CompositeItem) tree; for (Iterator<Item> i = asComposite.getItemIterator(); i.hasNext();) { taggingFlatten(i.next(), container); } } }