@Override public boolean convertRecords2Links() { final Map<OIdentifiable, Change> newChangedValues = new HashMap<OIdentifiable, Change>(); for (Map.Entry<OIdentifiable, Change> entry : changes.entrySet()) { OIdentifiable identifiable = entry.getKey(); if (identifiable instanceof ORecord) { ORID identity = identifiable.getIdentity(); ORecord record = (ORecord) identifiable; identity = record.getIdentity(); newChangedValues.put(identity, entry.getValue()); } else newChangedValues.put(entry.getKey().getIdentity(), entry.getValue()); } for (Map.Entry<OIdentifiable, Change> entry : newChangedValues.entrySet()) { if (entry.getKey() instanceof ORecord) { ORecord record = (ORecord) entry.getKey(); newChangedValues.put(record, entry.getValue()); } else return false; } newEntries.clear(); changes.clear(); changes.putAll(newChangedValues); return true; }
@Override public void reset() { newEntryIterator = newEntries.entrySet().iterator(); this.changedValuesIterator = changedValues.entrySet().iterator(); if (sbTreeIterator != null) this.sbTreeIterator.reset(); nextChange = nextChangedNotRemovedEntry(changedValuesIterator); if (sbTreeIterator != null) nextSBTreeEntry = nextChangedNotRemovedSBTreeEntry(sbTreeIterator); }
@Override public void convertLinks2Records() { TreeMap<OIdentifiable, Change> newChanges = new TreeMap<OIdentifiable, Change>(); for (Map.Entry<OIdentifiable, Change> entry : changes.entrySet()) { final OIdentifiable key = entry.getKey().getRecord(); if (key != null && this.owner != null) { ORecordInternal.unTrack(this.owner, entry.getKey()); ORecordInternal.track(this.owner, key); } newChanges.put((key == null) ? entry.getKey() : key, entry.getValue()); } changes.clear(); changes.putAll(newChanges); }
private RIDBagIterator( IdentityHashMap<OIdentifiable, OModifiableInteger> newEntries, NavigableMap<OIdentifiable, Change> changedValues, SBTreeMapEntryIterator sbTreeIterator, boolean convertToRecord) { newEntryIterator = newEntries.entrySet().iterator(); this.changedValues = changedValues; this.convertToRecord = convertToRecord; this.changedValuesIterator = changedValues.entrySet().iterator(); this.sbTreeIterator = sbTreeIterator; nextChange = nextChangedNotRemovedEntry(changedValuesIterator); if (sbTreeIterator != null) nextSBTreeEntry = nextChangedNotRemovedSBTreeEntry(sbTreeIterator); }