/** * Creates a new object by the record received. */ public ORawBuffer(final ORecord iRecord) { this.buffer = iRecord.toStream(); this.version = iRecord.getVersion(); this.recordType = ORecordInternal.getRecordType(iRecord); }
public Object evaluate(OResult iCurrentRecord, OCommandContext ctx) { if (name.equalsIgnoreCase("@rid")) { return iCurrentRecord.getIdentity().orElse(null); } else if (name.equalsIgnoreCase("@class")) { return iCurrentRecord.getElement().flatMap(r -> r.getSchemaType()).map(clazz -> clazz.getName()).orElse(null); } else if (name.equalsIgnoreCase("@version")) { return iCurrentRecord.getRecord().map(r -> r.getVersion()).orElse(null); } return null; }
public OPlaceholder(final ORecord iRecord) { rid = (ORecordId) iRecord.getIdentity().copy(); recordVersion = iRecord.getVersion(); }
public Object evaluate(OElement iCurrentRecord, OCommandContext ctx) { if (iCurrentRecord == null) { return null; } if (name.equalsIgnoreCase("@rid")) { return iCurrentRecord.getIdentity(); } else if (name.equalsIgnoreCase("@class")) { return iCurrentRecord.getSchemaType().map(clazz -> clazz.getName()).orElse(null); } else if (name.equalsIgnoreCase("@version")) { ORecord record = iCurrentRecord.getRecord(); if (record == null) { return null; } return record.getVersion(); } return null; } }
@Override public void onAfterIdentityChange(final ORecord record) { OObjectSerializerHelper.setObjectID(record.getIdentity(), pojo); OObjectSerializerHelper.setObjectVersion(record.getVersion(), pojo); } });
private void invokeCallbacks() { for (ORecordOperation recordOperation : allEntries.values()) { final ORecord record = recordOperation.getRecord(); final ORID identity = record.getIdentity(); if (recordOperation.type == ORecordOperation.CREATED && recordOperation.createdCallback != null) recordOperation.createdCallback.call(new ORecordId(identity), identity.getClusterPosition()); else if (recordOperation.type == ORecordOperation.UPDATED && recordOperation.updatedCallback != null) recordOperation.updatedCallback.call(new ORecordId(identity), record.getVersion()); } }
private void invokeCallbacks() { for (ORecordOperation recordOperation : recordOperations.values()) { final ORecord record = recordOperation.getRecord(); final ORID identity = record.getIdentity(); if (recordOperation.type == ORecordOperation.CREATED && recordOperation.createdCallback != null) recordOperation.createdCallback.call(new ORecordId(identity), identity.getClusterPosition()); else if (recordOperation.type == ORecordOperation.UPDATED && recordOperation.updatedCallback != null) recordOperation.updatedCallback.call(new ORecordId(identity), record.getVersion()); } }
toRet = database.executeSaveRecord(next, iClusterName, next.getVersion(), iMode, iForceCreate, iRecordCreatedCallback, iRecordUpdatedCallback); else database .executeSaveRecord(next, getClusterName(next), next.getVersion(), OPERATION_MODE.SYNCHRONOUS, false, null, null); next = path.pollFirst(); database.executeSaveRecord(next, null, next.getVersion(), iMode, false, null, null); next = path.pollFirst();
return iCurrent.getIdentity().getClusterPosition(); else if (iFieldName.equalsIgnoreCase(ATTRIBUTE_VERSION)) return iCurrent.getRecord().getVersion(); else if (iFieldName.equalsIgnoreCase(ATTRIBUTE_CLASS)) return ((ODocument) iCurrent.getRecord()).getClassName();
message("\n+-------------------------------------------------------------------------------------------------+"); message("\n| %s - record id: %s v.%d", currentRecord.getClass().getSimpleName(), currentRecord.getIdentity().toString(), currentRecord.getVersion()); message("\n+-------------------------------------------------------------------------------------------------+");
@Override public <RET extends ORecord> RET reload(ORecord record, String fetchPlan, boolean ignoreCache, boolean force) { checkIfActive(); final ORecord loadedRecord = currentTx.reloadRecord(record.getIdentity(), record, fetchPlan, ignoreCache, force); if (loadedRecord != null && record != loadedRecord) { record.fromStream(loadedRecord.toStream()); ORecordInternal.setVersion(record, loadedRecord.getVersion()); } else if (loadedRecord == null) { throw new ORecordNotFoundException(record.getIdentity()); } return (RET) record; }
/** * Pushes record to cache. Identifier of record used as access key * * @param record * record that should be cached */ public void updateRecord(final ORecord record) { if (record.getIdentity().getClusterId() != excludedCluster && record.getIdentity().isValid() && !record.isDirty() && !ORecordVersionHelper.isTombstone(record.getVersion())) { if (underlying.get(record.getIdentity()) != record) underlying.put(record); } }
for (ORecord rec : updatedRecord) { if (rec == iRecord) { toRet = database.executeSaveRecord(rec, iClusterName, rec.getVersion(), iMode, iForceCreate, iRecordCreatedCallback, iRecordUpdatedCallback); } else database.executeSaveRecord(rec, getClusterName(rec), rec.getVersion(), OPERATION_MODE.SYNCHRONOUS, false, null, null); return toRet; else return database.executeSaveRecord(iRecord, iClusterName, iRecord.getVersion(), iMode, iForceCreate, iRecordCreatedCallback, iRecordUpdatedCallback); } catch (Exception e) {
@Override public OResult next() { OResult result = lastFetched.next(); long begin = profilingEnabled ? System.nanoTime() : 0; try { if (result instanceof OUpdatableResult) { OResultInternal prevValue = new OResultInternal(); ORecord rec = result.getElement().get().getRecord(); prevValue.setProperty("@rid", rec.getIdentity()); prevValue.setProperty("@version", rec.getVersion()); if (rec instanceof ODocument) { prevValue.setProperty("@class", ((ODocument) rec).getSchemaClass().getName()); } if (!result.toElement().getIdentity().isNew()) { for (String propName : result.getPropertyNames()) { prevValue.setProperty(propName, OLiveQueryHookV2.unboxRidbags(result.getProperty(propName))); } } ((OUpdatableResult) result).previousValue = prevValue; } else { throw new OCommandExecutionException("Cannot fetch previous value: " + result); } return result; } finally { if (profilingEnabled) { cost += (System.nanoTime() - begin); } } }
record.getVersion()); if (settings.attribSameRow) firstAttribute = false;
@Override public ORecord loadRecordIfVersionIsNotLatest(ORID rid, final int recordVersion, String fetchPlan, boolean ignoreCache) throws ORecordNotFoundException { checkTransaction(); final ORecord txRecord = getRecord(rid); if (txRecord == OBasicTransaction.DELETED_RECORD) // DELETED IN TX throw new ORecordNotFoundException(rid); if (txRecord != null) { if (txRecord.getVersion() > recordVersion) return txRecord; else return null; } if (rid.isTemporary()) throw new ORecordNotFoundException(rid); // DELEGATE TO THE STORAGE, NO TOMBSTONES SUPPORT IN TX MODE final ORecord record = database .executeReadRecord((ORecordId) rid, null, recordVersion, fetchPlan, ignoreCache, !ignoreCache, false, OStorage.LOCKING_STRATEGY.NONE, new SimpleRecordReader(database.isPrefetchRecords())); if (record != null && isolationLevel == ISOLATION_LEVEL.REPEATABLE_READ) // KEEP THE RECORD IN TX TO ASSURE REPEATABLE READS addRecord(record, ORecordOperation.LOADED, null); return record; }
/** * Deletes the record. */ public void deleteRecord(final ORecord iRecord, final OPERATION_MODE iMode) { if (!iRecord.getIdentity().isPersistent()) return; try { database.executeDeleteRecord(iRecord, iRecord.getVersion(), true, iMode, false); } catch (Exception e) { // REMOVE IT FROM THE CACHE TO AVOID DIRTY RECORDS final ORecordId rid = (ORecordId) iRecord.getIdentity(); if (rid.isValid()) database.getLocalCache().freeRecord(rid); if (e instanceof RuntimeException) throw (RuntimeException) e; throw OException.wrapException( new ODatabaseException("Error during deletion of record" + (iRecord != null ? " with rid " + iRecord.getIdentity() : "")), e); } }
public <RET extends ORecord> RET executeSaveEmptyRecord(ORecord record, String clusterName) { ORecordId rid = (ORecordId) record.getIdentity(); assert rid.isNew(); ORecordInternal.onBeforeIdentityChanged(record); int id = assignAndCheckCluster(record, clusterName); clusterName = getClusterNameById(id); checkSecurity(ORule.ResourceGeneric.CLUSTER, ORole.PERMISSION_CREATE, clusterName); byte[] content = getSerializer().writeClassOnly(record); final OStorageOperationResult<OPhysicalPosition> ppos = getStorage() .createRecord(rid, content, record.getVersion(), recordType, OPERATION_MODE.SYNCHRONOUS.ordinal(), null); ORecordInternal.setVersion(record, ppos.getResult().recordVersion); ((ORecordId) record.getIdentity()).copyFrom(rid); ORecordInternal.onAfterIdentityChanged(record); return (RET) record; }
final OPhysicalPosition ppos; final byte recordType = ORecordInternal.getRecordType(rec); ppos = doCreateRecord(rid, stream, rec.getVersion(), recordType, null, cluster, allocated).getResult(); rec.getVersion(), ORecordInternal.getRecordType(rec), null, cluster); ORecordInternal.setVersion(rec, updateRes.getResult()); if (updateRes.getModifiedRecordContent() != null) { ORidBagDeleter.deleteAllRidBags((ODocument) rec); deleteRecord(rid, rec.getVersion(), -1, null); break;
if (iRecord != null) { iRecord.fromStream(record.toStream()); ORecordInternal.setVersion(iRecord, record.getVersion()); record = iRecord; version = iRecord.getVersion(); else version = recordVersion; ODocumentInternal.checkClass((ODocument) iRecord, this); if (ORecordVersionHelper.isTombstone(iRecord.getVersion())) return (RET) iRecord;