Skip to content

Commit

Permalink
OGM-854 Enforce only one EntityKeyMetadata in the forEachTuple contract
Browse files Browse the repository at this point in the history
As we now require a proper TupleContext, we need to only work on a given
EntityKeyMetadata at a time. Note that the current usages of the
forEachTuple method were already respecting this rule.
  • Loading branch information
gsmet committed May 12, 2016
1 parent b7672fc commit ad68faf
Show file tree
Hide file tree
Showing 14 changed files with 72 additions and 88 deletions.
Expand Up @@ -446,23 +446,20 @@ public GridType overrideType(Type type) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
Select select = queryBuilder.select().all().from( quote( entityKeyMetadata.getTable() ) );

Select select = queryBuilder.select().all().from( quote( entityKeyMetadata.getTable() ) );

ResultSet resultSet;
try {
resultSet = session.execute( select );
}
catch (DriverException e) {
throw e;
}
Iterator<Row> iter = resultSet.iterator();
while ( iter.hasNext() ) {
Row row = iter.next();
consumer.consume( new Tuple( new MapTupleSnapshot( tupleFromRow( row ) ) ) );
}
ResultSet resultSet;
try {
resultSet = session.execute( select );
}
catch (DriverException e) {
throw e;
}
Iterator<Row> iter = resultSet.iterator();
while ( iter.hasNext() ) {
Row row = iter.next();
consumer.consume( new Tuple( new MapTupleSnapshot( tupleFromRow( row ) ) ) );
}
}

Expand Down
Expand Up @@ -140,13 +140,11 @@ public Number nextValue(NextValueRequest request) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... metadatas) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata metadata) {
Map<EntityKey, Map<String, Object>> entityMap = provider.getEntityMap();
for ( EntityKey key : entityMap.keySet() ) {
for ( EntityKeyMetadata metadata : metadatas ) {
if ( key.getTable().equals( metadata.getTable() ) ) {
consumer.consume( new Tuple( new MapTupleSnapshot( entityMap.get( key ) ) ) );
}
if ( key.getTable().equals( metadata.getTable() ) ) {
consumer.consume( new Tuple( new MapTupleSnapshot( entityMap.get( key ) ) ) );
}
}
}
Expand Down
Expand Up @@ -158,8 +158,8 @@ public GridType overrideType(Type type) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
gridDialect.forEachTuple( consumer, tupleContext, entityKeyMetadatas );
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
gridDialect.forEachTuple( consumer, tupleContext, entityKeyMetadata );
}

@Override
Expand Down
Expand Up @@ -172,10 +172,10 @@ public interface GridDialect extends Service {
* the instance that is going to be called for every {@link Tuple}
* @param tupleContext
* contains additional information that might be used to build the tuple
* @param entityKeyMetadatas
* the key metadata of the tables for which we want to apply the consumer
* @param entityKeyMetadata
* the key metadata of the table for which we want to apply the consumer
*/
void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas);
void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata);

/**
* Returns this dialect's strategy for detecting the insertion of several entity tuples of the given type with the
Expand Down
Expand Up @@ -146,7 +146,7 @@ public Number nextValue(NextValueRequest request) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
}

@Override
Expand Down
Expand Up @@ -123,7 +123,7 @@ public Number nextValue(NextValueRequest request) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
}
}
}
Expand Up @@ -83,7 +83,7 @@ public Number nextValue(NextValueRequest request) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
}
}
}
Expand Up @@ -311,10 +311,8 @@ else if ( type instanceof SerializableToBlobType ) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) {
forTuple( consumer, entityKeyMetadata );
}
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
forTuple( consumer, entityKeyMetadata );
}

@Override
Expand Down
Expand Up @@ -205,8 +205,8 @@ public boolean isStoredInEntityStructure(AssociationKeyMetadata associationKeyMe
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
getCacheManager().forEachTuple( new EntityKeyProcessor( consumer ), entityKeyMetadatas );
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
getCacheManager().forEachTuple( new EntityKeyProcessor( consumer ), entityKeyMetadata );
}

@Override
Expand Down
Expand Up @@ -209,9 +209,9 @@ public Number nextValue(NextValueRequest request) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
Set<Bucket<EK>> buckets = getCacheManager().getWorkBucketsFor(
entityKeyMetadatas
entityKeyMetadata
);
for ( Bucket<EK> bucket : buckets ) {
Map<EK, Map<String, Object>> queryResult = retrieveKeys( bucket.getCache(), bucket.getEntityKeyMetadata() );
Expand Down
Expand Up @@ -782,13 +782,11 @@ else if ( type instanceof StringAsObjectIdType ) {
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
DB db = provider.getDatabase();
for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) {
DBCollection collection = db.getCollection( entityKeyMetadata.getTable() );
for ( DBObject dbObject : collection.find() ) {
consumer.consume( new Tuple( new MongoDBTupleSnapshot( dbObject, entityKeyMetadata, UPDATE ) ) );
}
DBCollection collection = db.getCollection( entityKeyMetadata.getTable() );
for ( DBObject dbObject : collection.find() ) {
consumer.consume( new Tuple( new MongoDBTupleSnapshot( dbObject, entityKeyMetadata, UPDATE ) ) );
}
}

Expand Down
Expand Up @@ -615,22 +615,20 @@ private void putOneToOneAssociation(Tuple tuple, Node node, TupleOperation opera
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) {
ResourceIterator<Node> queryNodes = entityQueries.get( entityKeyMetadata ).findEntities( dataBase );
try {
while ( queryNodes.hasNext() ) {
Node next = queryNodes.next();
Tuple tuple = new Tuple( Neo4jTupleSnapshot.fromNode( next,
tupleContext.getAllAssociatedEntityKeyMetadata(), tupleContext.getAllRoles(),
entityKeyMetadata ) );
consumer.consume( tuple );
}
}
finally {
queryNodes.close();
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
ResourceIterator<Node> queryNodes = entityQueries.get( entityKeyMetadata ).findEntities( dataBase );
try {
while ( queryNodes.hasNext() ) {
Node next = queryNodes.next();
Tuple tuple = new Tuple( Neo4jTupleSnapshot.fromNode( next,
tupleContext.getAllAssociatedEntityKeyMetadata(), tupleContext.getAllRoles(),
entityKeyMetadata ) );
consumer.consume( tuple );
}
}
finally {
queryNodes.close();
}
}

@Override
Expand Down
Expand Up @@ -264,27 +264,24 @@ public boolean isStoredInEntityStructure(
}

@Override
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
public void forEachTuple(ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
KeyScanCursor<String> cursor = null;
String prefix = entityKeyMetadata.getTable() + ":";

for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) {
KeyScanCursor<String> cursor = null;
String prefix = entityKeyMetadata.getTable() + ":";
ScanArgs scanArgs = ScanArgs.Builder.matches( prefix + "*" );
do {
cursor = scan( cursor, scanArgs );

ScanArgs scanArgs = ScanArgs.Builder.matches( prefix + "*" );
do {
cursor = scan( cursor, scanArgs );
for ( String key : cursor.getKeys() ) {
Map<String, String> hgetall = connection.hgetall( key );
Map<String, Object> entity = new HashMap<>();

for ( String key : cursor.getKeys() ) {
Map<String, String> hgetall = connection.hgetall( key );
Map<String, Object> entity = new HashMap<>();

entity.putAll( hgetall );
addKeyValuesFromKeyName( entityKeyMetadata, prefix, key, entity );
consumer.consume( new Tuple( new RedisTupleSnapshot( entity ) ) );
}
entity.putAll( hgetall );
addKeyValuesFromKeyName( entityKeyMetadata, prefix, key, entity );
consumer.consume( new Tuple( new RedisTupleSnapshot( entity ) ) );
}

} while ( !cursor.isFinished() );
}
} while ( !cursor.isFinished() );
}

protected void addKeyValuesFromKeyName(
Expand Down
Expand Up @@ -271,25 +271,23 @@ public void removeAssociation(AssociationKey key, AssociationContext association
}

@Override
public void forEachTuple(final ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata... entityKeyMetadatas) {
for ( EntityKeyMetadata entityKeyMetadata : entityKeyMetadatas ) {
KeyScanCursor<String> cursor = null;
String prefix = entityKeyMetadata.getTable() + ":";
public void forEachTuple(final ModelConsumer consumer, TupleContext tupleContext, EntityKeyMetadata entityKeyMetadata) {
KeyScanCursor<String> cursor = null;
String prefix = entityKeyMetadata.getTable() + ":";

ScanArgs scanArgs = ScanArgs.Builder.matches( prefix + "*" );
do {
cursor = scan( cursor, scanArgs );
ScanArgs scanArgs = ScanArgs.Builder.matches( prefix + "*" );
do {
cursor = scan( cursor, scanArgs );

for ( String key : cursor.getKeys() ) {
Entity document = entityStorageStrategy.getEntity( key );
for ( String key : cursor.getKeys() ) {
Entity document = entityStorageStrategy.getEntity( key );

addKeyValuesFromKeyName( entityKeyMetadata, prefix, key, document );
addKeyValuesFromKeyName( entityKeyMetadata, prefix, key, document );

consumer.consume( new Tuple( new RedisTupleSnapshot( document.getProperties() ) ) );
}
consumer.consume( new Tuple( new RedisTupleSnapshot( document.getProperties() ) ) );
}

} while ( !cursor.isFinished() );
}
} while ( !cursor.isFinished() );
}

private void storeEntity(
Expand Down

0 comments on commit ad68faf

Please sign in to comment.