Iterable<T> browseByBucket(final ODatabaseDocumentTx db, final Bucket bucket) { checkNotNull(bucket); checkState(EntityHelper.hasMetadata(bucket)); Map<String, Object> parameters = ImmutableMap.<String, Object>of( P_BUCKET, bucketEntityAdapter.recordIdentity(bucket) ); String query = String.format( "select from %s where %s = :bucket", getTypeName(), P_BUCKET ); Iterable<ODocument> docs = OrientAsyncHelper.asyncIterable(db, query, parameters); return transform(docs); }
@Override @Guarded(by = ACTIVE) public void saveComponent(final Component component) { if (EntityHelper.hasMetadata(component)) { componentEntityAdapter.editEntity(db, component); } else { componentEntityAdapter.addEntity(db, component); } }
@Override @Guarded(by = ACTIVE) public void saveAsset(final Asset asset) { if (EntityHelper.hasMetadata(asset)) { assetEntityAdapter.editEntity(db, asset); } else { assetEntityAdapter.addEntity(db, asset); } }
@Override public void save(final Iterable<Asset> assets) { inTxRetry(databaseInstance).run(db -> { assets.forEach(asset -> { if (hasMetadata(asset)) { entityAdapter.editEntity(db, asset); } else { entityAdapter.addEntity(db, asset); } }); }); } }
Iterable<Asset> browseByComponent(final ODatabaseDocumentTx db, final Component component) { checkNotNull(component); checkState(EntityHelper.hasMetadata(component)); Map<String, Object> parameters = ImmutableMap.of( "bucket", bucketEntityAdapter.recordIdentity(component.bucketId()), "component", componentEntityAdapter.recordIdentity(component) ); String query = String.format( "select from %s where %s = :bucket and %s = :component", DB_CLASS, P_BUCKET, P_COMPONENT ); Iterable<ODocument> docs = db.command(new OCommandSQL(query)).execute(parameters); return transform(docs); }
/** * Finds fresh {@link Asset} instance from passed in TX by entity ID of the {@link Asset} used * to create passed in {@link Content} instance. The passed in {@link Content} must have been created with * method {@link #extractFromAsset(Asset, Iterable, AttributesMap)} to have proper attributes set for this operation. * * @see #extractFromAsset(Asset, Iterable, AttributesMap) */ @Nullable public static Asset findAsset(final StorageTx tx, final Bucket bucket, Content content) { final Asset contentAsset = content.getAttributes().require(Asset.class); if (EntityHelper.hasMetadata(contentAsset)) { return tx.findAsset(EntityHelper.id(contentAsset), bucket); } return null; }
@Override @Guarded(by = STARTED) public Asset save(Asset asset) { if (hasMetadata(asset)) { inTxRetry(databaseInstance).run(db -> entityAdapter.editEntity(db, asset)); return asset; } else { return inTxRetry(databaseInstance).call(db -> entityAdapter.readEntity(entityAdapter.addEntity(db, asset))); } }