private void readFully(XmlObject xmlObject) { xmlObject.getXmlObjectDescendants(); }
@Override public final XmlObjectNode[] getXmlObjectPrecedingOrAncestor() { // find all descendants of root and keep everything but ancestors, until // self. XmlObject parent = getXmlObjectParent(); if (parent == null) return EMPTY_ARRAY; XmlObjectNode lastXmlObjectAfterPreceding = this; XmlObject root = getXmlObjectRoot(); XmlObjectNode[] rootDescendants = root.getXmlObjectDescendants(); List<XmlObjectNode> precedingOrAncestor = new LinkedList<XmlObjectNode>(); precedingOrAncestor.add(root); for (XmlObjectNode descendantXmlObject : rootDescendants) { if (descendantXmlObject == lastXmlObjectAfterPreceding) { break; } precedingOrAncestor.add(descendantXmlObject); } return precedingOrAncestor.toArray(new XmlObjectNode[precedingOrAncestor.size()]); }
@Override public final XmlObjectNode[] getXmlObjectFollowing() { XmlObject parent = getXmlObjectParent(); if (parent == null) return EMPTY_ARRAY; XmlObjectNode[] descendants = getXmlObjectDescendants(); XmlObjectNode lastXmlObjectBeforeFollowing = this; if (descendants.length != 0) { lastXmlObjectBeforeFollowing = descendants[descendants.length - 1]; } XmlObjectNode[] rootDescendants = getXmlObjectRoot().getXmlObjectDescendants(); List<XmlObjectNode> following = new LinkedList<XmlObjectNode>(); boolean lastXmlObjectBeforeFollowingFound = false; for (XmlObjectNode descendantXmlObject : rootDescendants) { if (descendantXmlObject == lastXmlObjectBeforeFollowing) { lastXmlObjectBeforeFollowingFound = true; continue; } if (lastXmlObjectBeforeFollowingFound == false) continue; following.add(descendantXmlObject); } return following.toArray(new XmlObjectNode[following.size()]); }
@Override public final XmlObjectNode[] getXmlObjectPreceding() { // find all descendants of root and keep everything but ancestors, until // self. XmlObject parent = getXmlObjectParent(); if (parent == null) return EMPTY_ARRAY; XmlObjectNode lastXmlObjectAfterPreceding = this; XmlObjectNode[] rootDescendants = getXmlObjectRoot().getXmlObjectDescendants(); List<XmlObjectNode> preceding = new LinkedList<XmlObjectNode>(); XmlObjectNode[] ancestors = getXmlObjectAncestors(); for (XmlObjectNode descendantXmlObject : rootDescendants) { if (descendantXmlObject == lastXmlObjectAfterPreceding) { break; } if (ArrayHelper.arrayContainsSameObject(ancestors, descendantXmlObject)) continue; preceding.add(descendantXmlObject); } return preceding.toArray(new XmlObjectNode[preceding.size()]); }