protected void clearDocumentTracking(final ORecord record) { if (record instanceof ODocument && ((ODocument) record).isTrackingChanges()) { ODocumentInternal.clearTrackData((ODocument) record); } }
@Override public RESULT onRecordBeforeUpdate(ODocument iDocument) { List<String> calcProperties = getCalcProperties(iDocument); if(calcProperties!=null && calcProperties.size()>0) { boolean wasChanged=false; String[] fieldNames = iDocument.fieldNames(); for (String field : fieldNames) { if(calcProperties.contains(field)) { boolean tracking = iDocument.isTrackingChanges(); if(tracking) iDocument.undo(field); // iDocument.removeField(field); wasChanged = true; } } return wasChanged?RESULT.RECORD_CHANGED:RESULT.RECORD_NOT_CHANGED; } return RESULT.RECORD_NOT_CHANGED; }
@Override protected void unTrack(OIdentifiable id) { if (isTrackingChanges() && id.getIdentity().getClusterId() != -2) super.unTrack(id); } }
@Override protected void track(OIdentifiable id) { if (isTrackingChanges() && id.getIdentity().getClusterId() != -2) super.track(id); }
if (iDocument.isTrackingChanges()) { iDocument.setTrackingChanges(false); iDocument.setTrackingChanges(true);
private void doRollback() { storage.rollback(this); database.getLocalCache().clear(); for (ORecordOperation recordOperation : recordOperations.values()) { final ORecord record = recordOperation.record.getRecord(); if (record.isDirty()) if (record instanceof ODocument) { final ODocument document = (ODocument) record; if (document.isTrackingChanges()) document.undo(); } else record.unload(); } reset(); }
@Override public RESULT onTrigger(TYPE iType, ORecord iRecord) { if(iRecord instanceof ODocument) { ODocument doc = (ODocument) iRecord; if(classA.isSuperClassOf(doc.getSchemaClass())) { // System.out.println("During "+iType+" document should track changes: "+doc.isTrackingChanges()); assertTrue("During "+iType+" document should track changes", doc.isTrackingChanges()); } } return RESULT.RECORD_NOT_CHANGED; }
private void updateIndexEntries(ODocument iDocument) { iDocument = checkForLoading(iDocument); final OClass cls = iDocument.getSchemaClass(); if (cls == null) return; final Collection<OIndex<?>> indexes = (Collection<OIndex<?>>) getDatabase().getMetadata().getIndexManager().getIndexes(); if (!indexes.isEmpty()) { final Set<String> dirtyFields = new HashSet<String>(Arrays.asList(iDocument.getDirtyFields())); if (!dirtyFields.isEmpty()) { for (final OIndex<?> index : indexes) { if (index.getInternal() instanceof OLuceneIndex && index.getConfiguration().field("metadata") != null) { if (index.getDefinition() instanceof OCompositeIndexDefinition) processCompositeIndexUpdate(index, dirtyFields, iDocument); else processSingleIndexUpdate(index, dirtyFields, iDocument); if (iDocument.isTrackingChanges()) { iDocument.setTrackingChanges(false); iDocument.setTrackingChanges(true); } } } } } }
track((OIdentifiable) newValue); value = newValue; if (this.isTrackingChanges()) { ORecordInternal.setDirtyManager((ORecord) value, this.getDirtyManager());
track((OIdentifiable) newValue); value = newValue; if (isTrackingChanges()) { ORecordInternal.setDirtyManager((ORecord) value, this.getDirtyManager());
if (owner instanceof ODocument && ((ODocument) owner).isTrackingChanges() && ((ODocument) owner).getIdentity().isPersistent()) addToChangedList = true;
int i = 0; final String[] fieldNames = iOnlyDelta && record.isTrackingChanges() ? record.getDirtyFields() : record.fieldNames();
if (iRecord instanceof ODocument && ((ODocument) iRecord).isTrackingChanges()) { ODocumentInternal.clearTrackData(((ODocument) iRecord));
if (record instanceof ODocument && ((ODocument) record).isTrackingChanges()) ODocumentInternal.clearTrackData(((ODocument) record));
if (rec instanceof ODocument && ((ODocument) rec).isTrackingChanges()) { ODocumentInternal.clearTrackData(((ODocument) rec));