private void visitDataChildrenFlat(Consumer<Data> childFactoriesVisitor, long dataIterationRun){ if (this.dataIterationRun==dataIterationRun){ return; } this.dataIterationRun=dataIterationRun; getDataDictionary().visitDataChildren(this,childFactoriesVisitor); }
private void visitAttributesTripleFlat(Data other1, Data other2, TriAttributeVisitor consumer) { getDataDictionary().visitAttributesTripleFlat(this,other1,other2,consumer); }
@SuppressWarnings("unchecked") private void visitAttributesDualFlat(Data data, BiAttributeVisitor consumer) { getDataDictionary().visitAttributesDualFlat(this,data,consumer); }
private void visitAttributesFlat(AttributeVisitor consumer) { getDataDictionary().visitAttributesFlat(this,consumer); }
private Data newCopyInstance(Data data) { return getDataDictionary().newCopyInstance(data); }
private void collectChildFactoriesDeepFromNode(Set<Data> collected) { if (collected.add(this)){ getDataDictionary().visitDataChildren(this,child -> child.collectChildFactoriesDeepFromNode(collected)); } }
private void addBackReferencesForSubtree(Data root, Data parent, HashSet<Data> visited){ addParent(parent); this.root=root; getDataDictionary().addBackReferencesToAttributes(this,root); if (visited.add(this)) {//use HashSet instead of iteration counter to avoid iterationCounter mix up getDataDictionary().visitDataChildren(this, child -> child.addBackReferencesForSubtree(root,this,visited)); } }
private void addBackReferences(final Data root, final Data parent, long dataIterationRun){ addParent(parent); this.root=root; getDataDictionary().addBackReferencesToAttributes(this,root); this.visitDataChildrenFlat(data -> data.addBackReferences(root, Data.this,dataIterationRun),dataIterationRun); }