@Override public List<Tuple> getTuples(EntityKey[] keys, TupleContext tupleContext) { if ( keys.length == 0 ) { return Collections.emptyList(); } Object[] searchObjects = new Object[keys.length]; for ( int i = 0; i < keys.length; i++ ) { searchObjects[i] = prepareIdObjectValue( keys[i].getColumnNames(), keys[i].getColumnValues() ); } MongoCursor<Document> cursor = this.getObjects( keys[0].getMetadata(), searchObjects, tupleContext ); try { return tuplesResult( keys, searchObjects, tupleContext, cursor ); } finally { if ( cursor != null ) { cursor.close(); } } }
SerializableEntityKey(EntityKey key) { columnNames = key.getColumnNames(); columnValues = key.getColumnValues(); table = key.getTable(); }
new EntityKey( (Integer) typeToValueMap.get(TypeId.PLAYER), (Integer) typeToValueMap.get(TypeId.PLATFORM)),
PerTableSerializableEntityKey(EntityKey key) { columnNames = key.getColumnNames(); columnValues = key.getColumnValues(); }
private void saveToOneAssociations(List<Statement> statements, EntityKey key, final Map<String, EntityKey> toOneAssociations, TupleContext tupleContext) { for ( Map.Entry<String, EntityKey> entry : toOneAssociations.entrySet() ) { Statement statement = getEntityQueries( key.getMetadata(), tupleContext ).getUpdateOneToOneAssociationStatement( entry.getKey(), key.getColumnValues(), entry.getValue().getColumnValues() ); statements.add( statement ); } }
/** * Creates a new {@code TupleAlreadyExistsException}. * * @param entityKey An {@link EntityKey} containing the id of the affected entity */ public TupleAlreadyExistsException(EntityKey entityKey) { super( (Throwable) null ); this.entityKey = entityKey; this.entityKeyMetadata = entityKey.getMetadata(); }
private static boolean emptyNode(EntityKey entityKey) { for ( Object value : entityKey.getColumnValues() ) { if ( value != null ) { return false; } } return true; }
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" } );
private static String cacheName(EntityKey key) { return key.getTable(); }
String key = associationKey.getEntityKey().getColumnNames()[i]; if ( ownerNode.containsKey( key ) ) { properties.put( associationKey.getColumnNames()[i], ownerNode.get( key ) );
protected Map<String, Object> multiGetParams(EntityKey[] keys) { // We assume only one metadata type int numberOfColumnNames = keys[0].getColumnNames().length; int numberOfParams = keys.length * numberOfColumnNames; int counter = 0; Map<String, Object> params = new HashMap<>( numberOfParams ); for ( int row = 0; row < keys.length; row++ ) { for ( int col = 0; col < keys[row].getColumnValues().length; col++ ) { params.put( String.valueOf( counter++ ), keys[row].getColumnValues()[col] ); } } return params; }
private void updateTuple(EntityKey key, List<Statement> statements, Map<String, Object> properties, TupleContext tupleContext) { if ( !properties.isEmpty() ) { Statement statement = getEntityQueries( key.getMetadata(), tupleContext ).getUpdateEntityPropertiesStatement( key.getColumnValues(), properties ); statements.add( statement ); } }
/** * Creates a new {@code TupleAlreadyExistsException}. * * @param entityKeyMetadata Key metadata for the affected entity */ public TupleAlreadyExistsException(EntityKeyMetadata entityKeyMetadata) { super( (Throwable) null ); this.entityKey = null; this.entityKeyMetadata = entityKey.getMetadata(); }
private static boolean emptyNode(EntityKey entityKey) { for ( Object value : entityKey.getColumnValues() ) { if ( value != null ) { return false; } } return true; }
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" } );
@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 void removeTupleOperation(EntityKey entityKey, Node node, TupleOperation operation, TupleContext tupleContext, Set<String> processedAssociationRoles) { if ( !tupleContext.getTupleTypeContext().isPartOfAssociation( operation.getColumn() ) ) { if ( isPartOfRegularEmbedded( entityKey.getColumnNames(), operation.getColumn() ) ) { // Embedded node String[] split = split( operation.getColumn() ); removePropertyForEmbedded( node, split, 0 ); } else if ( node.hasProperty( operation.getColumn() ) ) { node.removeProperty( operation.getColumn() ); } } // if the column represents a to-one association, remove the relationship else { String associationRole = tupleContext.getTupleTypeContext().getRole( operation.getColumn() ); if ( !processedAssociationRoles.contains( associationRole ) ) { Iterator<Relationship> relationships = node.getRelationships( withName( associationRole ) ).iterator(); if ( relationships.hasNext() ) { relationships.next().delete(); } } } }
@Override public List<Tuple> getTuples(EntityKey[] keys, TupleContext tupleContext) { if ( keys.length == 0 ) { return Collections.emptyList(); } Object[] searchObjects = new Object[keys.length]; for ( int i = 0; i < keys.length; i++ ) { searchObjects[i] = prepareIdObjectValue( keys[i].getColumnNames(), keys[i].getColumnValues() ); } MongoCursor<Document> cursor = this.getObjects( keys[0].getMetadata(), searchObjects, tupleContext ); try { return tuplesResult( keys, searchObjects, tupleContext, cursor ); } finally { if ( cursor != null ) { cursor.close(); } } }
@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() ); }
/** * Create a Document which represents the _id field. * In case of simple id objects the json representation will look like {_id: "theIdValue"} * In case of composite id objects the json representation will look like {_id: {author: "Guillaume", title: "What this method is used for?"}} * * @param key * * @return the Document which represents the id field */ private static Document prepareIdObject(EntityKey key) { return prepareIdObject( key.getColumnNames(), key.getColumnValues() ); }