public static void processIndexOnUpdate(ODatabaseDocumentInternal database, ODocument iDocument, List<IndexChange> changes) { final OImmutableClass cls = ODocumentInternal.getImmutableSchemaClass(database, iDocument); if (cls == null) { return; } final Collection<OIndex<?>> indexes = cls.getRawIndexes(); if (!indexes.isEmpty()) { final Set<String> dirtyFields = new HashSet<>(Arrays.asList(iDocument.getDirtyFields())); if (!dirtyFields.isEmpty()) for (final OIndex<?> index : indexes) { processIndexUpdate(iDocument, dirtyFields, getTransactionalIndex(database, index), changes); } } }
final Set<String> dirtyFields = new HashSet<>(Arrays.asList(iDocument.getDirtyFields()));
private static void checkIndexedPropertiesOnUpdate(final ODocument iRecord, final Collection<OIndex<?>> iIndexes) { final Set<String> dirtyFields = new HashSet<String>(Arrays.asList(iRecord.getDirtyFields())); if (dirtyFields.isEmpty()) return; for (final OIndex<?> index : iIndexes) { final OIndexDefinition indexDefinition = index.getDefinition(); final List<String> indexFields = indexDefinition.getFields(); for (final String indexField : indexFields) { if (dirtyFields.contains(indexField)) { final Object key = index.getDefinition().getDocumentValueToIndex(iRecord); if (key instanceof Collection) { for (final Object keyItem : (Collection<?>) key) { if (keyItem != null) index.checkEntry(iRecord, keyItem); } } else { if (key != null) index.checkEntry(iRecord, key); } break; } } } }
final Set<String> dirtyFields = new HashSet<String>(Arrays.asList(iDocument.getDirtyFields()));
public void handleUpdateSchedule(ODocument doc) { try { final String schedulerName = doc.field(OScheduledEvent.PROP_NAME); OScheduledEvent event = getEvent(schedulerName); if (event != null) { // UPDATED EVENT final Set<String> dirtyFields = new HashSet<String>(Arrays.asList(doc.getDirtyFields())); if (dirtyFields.contains(OScheduledEvent.PROP_NAME)) throw new OValidationException("Scheduled event cannot change name"); if (dirtyFields.contains(OScheduledEvent.PROP_RULE)) { // RULE CHANGED, STOP CURRENT EVENT AND RESCHEDULE IT updateEvent(new OScheduledEvent(doc)); } else { doc.field(OScheduledEvent.PROP_STATUS, OScheduler.STATUS.STOPPED.name()); event.fromStream(doc); } } } catch (Exception ex) { OLogManager.instance().error(this, "Error on updating scheduled event", ex); } } }
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); } } } } } }
private static OResultInternal calculateBefore(ODocument iDocument) { OResultInternal result = new OResultInternal(); for (String prop : iDocument.getPropertyNames()) { result.setProperty(prop, unboxRidbags(iDocument.getProperty(prop))); } result.setProperty("@rid", iDocument.getIdentity()); result.setProperty("@class", iDocument.getClassName()); result.setProperty("@version", iDocument.getVersion()); for (String prop : iDocument.getDirtyFields()) { result.setProperty(prop, iDocument.getOriginalValue(prop)); } return result; }
int i = 0; final String[] fieldNames = iOnlyDelta && record.isTrackingChanges() ? record.getDirtyFields() : record.fieldNames();
if(refProperties!=null && refProperties.size()>0) String[] changedFields = doc.getDirtyFields(); for (String field : changedFields)