private static Map<DomainBPlusTreeData, Integer> getAndSetSizeDiffMap() { if (sizeDiffMap.get() == null) { sizeDiffMap.put(new HashMap<DomainBPlusTreeData, Integer>()); } return sizeDiffMap.get(); }
@Override public boolean justRemove(E2 obj) { TransactionSupport.logAttrChange(listHolder, attributeName); elementsToRemove.put(elementsToRemove.get().cons(obj)); elementsToAdd.put(elementsToAdd.get().removeAll(obj)); // HACK!!! This is to be fixed upon migration to RelationAwareSet // I wouldn't like to force a load of the list to be able to return the correct boolean value return true; }
@Override public boolean justAdd(E2 obj) { TransactionSupport.logAttrChange(listHolder, attributeName); elementsToAdd.put(elementsToAdd.get().cons(obj)); elementsToRemove.put(elementsToRemove.get().removeAll(obj)); // HACK!!! This is to be fixed upon migration to RelationAwareSet // I wouldn't like to force a load of the list to be able to return the correct boolean value return true; }
private void consolidateElements() { VBox<FunctionalSet<E2>> box = getElementsBox(); FunctionalSet<E2> origSet = box.get(listHolder, attributeName); FunctionalSet<E2> newSet = origSet; if (elementsToRemove.get().size() > 0) { Iterator<E2> iter = elementsToRemove.get().iterator(); while (iter.hasNext()) { newSet = newSet.remove(iter.next()); } elementsToRemove.put(Cons.<E2> empty()); } if (elementsToAdd.get().size() > 0) { Iterator<E2> iter = elementsToAdd.get().iterator(); while (iter.hasNext()) { newSet = newSet.add(iter.next()); } elementsToAdd.put(Cons.<E2> empty()); } if (newSet != origSet) { // Because a nested FenixConsistencyCheckTransaction cannot perform writes, but may need to // consolidate the elements of a relation changed by the parent transaction box.putInParent(newSet); } }