private static String cacheName(EntityKey key) { return key.getTable(); }
@Override public boolean test(java.util.Map.Entry<EntityKey, Map<String, Object>> cacheEntry) { if ( !( cacheEntry.getKey() instanceof EntityKey ) ) { return false; } for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) { if ( cacheEntry.getKey().getTable().equals( entityKeyMetadata.getTable() ) ) { return true; } } return false; } }
@Override public boolean test(java.util.Map.Entry<EntityKey, Map<String, Object>> cacheEntry) { if ( !( cacheEntry.getKey() instanceof EntityKey ) ) { return false; } for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) { if ( cacheEntry.getKey().getTable().equals( entityKeyMetadata.getTable() ) ) { return true; } } return false; } }
private MongoCollection<Document> getCollection( EntityKey key) { return getCollection( key.getTable(), null ); }
private MongoCollection<Document> getCollection( EntityKey key, OptionsContext context ) { return getCollection( key.getTable(), context ); }
private MongoCollection<Document> getCollection( EntityKey key, OptionsContext context ) { return getCollection( key.getTable(), context ); }
public boolean isValidKey(EntityKey key) { return key.getTable().equals( metadata.getTable() ); }
private MongoCollection<Document> getCollection( EntityKey key) { return getCollection( key.getTable(), null ); }
@Override public void writeObject(ObjectOutput output, EntityKey key) throws IOException { output.writeInt( VERSION ); output.writeUTF( key.getTable() ); output.writeObject( key.getColumnNames() ); output.writeObject( key.getColumnValues() ); }
@Override public void writeObject(ObjectOutput output, EntityKey key) throws IOException { output.writeInt( VERSION ); output.writeUTF( key.getTable() ); output.writeObject( key.getColumnNames() ); output.writeObject( key.getColumnValues() ); }
@Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append( "EntityKey(" ); sb.append( getTable() ); sb.append( ") [" ); int i = 0; for ( String column : keyMetadata.getColumnNames() ) { sb.append( column ).append( "=" ).append( columnValues[i] ); i++; if ( i < keyMetadata.getColumnNames().length ) { sb.append( ", " ); } } sb.append( "]" ); return sb.toString(); }
SerializableEntityKey(EntityKey key) { columnNames = key.getColumnNames(); columnValues = key.getColumnValues(); table = key.getTable(); }
/** * Create the id used to store an {@link org.hibernate.ogm.datastore.couchdb.dialect.backend.json.impl.EntityDocument} * * @param key the {@link EntityKey} used to generate the id * @return the value of the generate id */ public static String createEntityId(EntityKey key) { return key.getTable() + ":" + fromColumnValues( key.getColumnNames() ) + ":" + fromColumnValues( key.getColumnValues() ); }
/** * Creates a new entity representing the given tuple. * * @param key of the entity * @param revision the revision of the entity when loaded; may be {@code null} when inserting a new entity * @param tuple the properties of the entity; may be {@code null} when inserting a new entity */ public EntityDocument(EntityKey key, String revision, Tuple tuple) { super( Identifier.createEntityId( key ), revision ); table = key.getTable(); for ( int i = 0; i < key.getColumnNames().length; i++ ) { properties.put( key.getColumnNames()[i], key.getColumnValues()[i] ); } if ( tuple != null ) { for ( String columnName : tuple.getColumnNames() ) { if ( columnName != Document.REVISION_FIELD_NAME ) { Object value = tuple.get( columnName ); if ( value != null ) { properties.put( columnName, value ); } } } } }
deleteSelection.column( quote( tupleOperation.getColumn() ) ); Delete delete = deleteSelection.from( quote( key.getTable() ) ); Delete.Where deleteWhere = delete.where( eq( Insert insert = QueryBuilder.insertInto( quote( key.getTable() ) ); List<Object> columnValues = new LinkedList<>(); Set<String> seenColNames = new HashSet<>();
@Override public void removeTuple(EntityKey key, TupleContext tupleContext) { Delete delete = QueryBuilder.delete().from( quote( key.getTable() ) ); Delete.Where deleteWhere = delete.where( eq( quote( key.getColumnNames()[0] ), QueryBuilder.bindMarker() ) ); for ( int i = 1; i < key.getColumnNames().length; i++ ) { deleteWhere = deleteWhere.and( eq( quote( key.getColumnNames()[i] ), QueryBuilder.bindMarker() ) ); } bindAndExecute( key.getColumnValues(), delete ); }
@Override public Tuple getTuple(EntityKey key, OperationContext operationContext) { Select select = QueryBuilder.select().all().from( quote( key.getTable() ) ); Select.Where selectWhere = select.where( eq( quote( key.getColumnNames()[0] ), QueryBuilder.bindMarker() ) ); for ( int i = 1; i < key.getColumnNames().length; i++ ) { selectWhere = selectWhere.and( eq( quote( key.getColumnNames()[i] ), QueryBuilder.bindMarker() ) ); } Object[] columnValues = key.getColumnValues(); ResultSet resultSet = bindAndExecute( columnValues, select ); if ( resultSet.isExhausted() ) { return null; } Row row = resultSet.one(); Tuple tuple = createTuple( row ); return tuple; }
assertThat( appliedOperation ).isInstanceOf( UpdateTupleWithOptimisticLock.class ); UpdateTupleWithOptimisticLock updateTupleWithOptimisticLock = appliedOperation.as( UpdateTupleWithOptimisticLock.class ); assertThat( updateTupleWithOptimisticLock.getEntityKey().getTable() ).isEqualTo( "Shipment" ); assertThat( updateTupleWithOptimisticLock.getEntityKey().getColumnValues() ).isEqualTo( new Object[] { "shipment-1" } ); Iterator<GridDialectOperation> batchedOperations = batch.getOperations().iterator(); InsertOrUpdateTuple insertOrUpdate = batchedOperations.next().as( InsertOrUpdateTuple.class ); assertThat( insertOrUpdate.getEntityKey().getTable() ).isEqualTo( "Shipment" ); assertThat( insertOrUpdate.getEntityKey().getColumnValues() ).isEqualTo( new Object[] { "shipment-1" } ); assertThat( insertOrUpdate.getEntityKey().getTable() ).isEqualTo( "Shipment" ); assertThat( insertOrUpdate.getEntityKey().getColumnValues() ).isEqualTo( new Object[] { "shipment-2" } ); assertThat( appliedOperation ).isInstanceOf( InsertOrUpdateTuple.class ); InsertOrUpdateTuple insertOrUpdate = appliedOperation.as( InsertOrUpdateTuple.class ); assertThat( insertOrUpdate.getEntityKey().getTable() ).isEqualTo( "Shipment" ); assertThat( insertOrUpdate.getEntityKey().getColumnValues() ).isEqualTo( new Object[] { "shipment-1" } );
assertThat( appliedOperation ).isInstanceOf( UpdateTupleWithOptimisticLock.class ); UpdateTupleWithOptimisticLock updateTupleWithOptimisticLock = appliedOperation.as( UpdateTupleWithOptimisticLock.class ); assertThat( updateTupleWithOptimisticLock.getEntityKey().getTable() ).isEqualTo( "Shipment" ); assertThat( updateTupleWithOptimisticLock.getEntityKey().getColumnValues() ).isEqualTo( new Object[] { "shipment-2" } ); Iterator<GridDialectOperation> batchedOperations = batch.getOperations().iterator(); InsertOrUpdateTuple insertOrUpdate = batchedOperations.next().as( InsertOrUpdateTuple.class ); assertThat( insertOrUpdate.getEntityKey().getTable() ).isEqualTo( "Shipment" ); assertThat( insertOrUpdate.getEntityKey().getColumnValues() ).isEqualTo( new Object[] { "shipment-2" } ); assertThat( batchedOperations.hasNext() ).isFalse(); assertThat( appliedOperation ).isInstanceOf( InsertOrUpdateTuple.class ); InsertOrUpdateTuple insertOrUpdate = appliedOperation.as( InsertOrUpdateTuple.class ); assertThat( insertOrUpdate.getEntityKey().getTable() ).isEqualTo( "Shipment" ); assertThat( insertOrUpdate.getEntityKey().getColumnValues() ).isEqualTo( new Object[] { "shipment-2" } );