// Debug only List<T> ancestorValues(T name) { List<T> anx = new ArrayList<T>(); Set<HierNode<T>> nodes = ancestorNodes(getNode(name)); for (HierNode<T> node : nodes) { anx.add(node.getValue()); } return anx; }
protected void encode(HierNode<T> node) { Collection<HierNode<T>> parents = node.getParents(); // System.out.println( "Trying to encode " + node ); switch (parents.size()) { case 0: BitSet zero = new BitSet(); if (hasKey(zero)) { HierNode root = getNodeByKey(zero); if (root.getValue() != null) { fixedRoot = true; HierNode previousRoot = root; root = new HierNode((Object) null); root.addChild(previousRoot); previousRoot.addParent(root); root.setBitMask(zero); propagate(previousRoot, freeBit(root)); add(root); } node.addParent(root); updateMask(node, increment(root.getBitMask(), freeBit(root))); } else { updateMask(node, new BitSet()); } break; case 1: HierNode<T> parent = parents.iterator().next(); updateMask(node, increment(parent.getBitMask(), freeBit(parent))); break; default: inheritMerged(node); // System.out.println( " // ----------------------------------------------------------------------------------------- // " ); resolveConflicts(node); break; } }