PerTableSerializableEntityKey(EntityKey key) { columnNames = key.getColumnNames(); columnValues = 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 void writeObject(ObjectOutput output, EntityKey key) throws IOException { output.writeInt( VERSION ); output.writeUTF( key.getTable() ); output.writeObject( key.getColumnNames() ); output.writeObject( key.getColumnValues() ); }
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; }
SerializableEntityKey(EntityKey key) { columnNames = key.getColumnNames(); columnValues = key.getColumnValues(); table = key.getTable(); }
/** * 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() ); }
public static PersistentEntityKey fromEntityKey(EntityKey key) { return new PersistentEntityKey( key.getColumnNames(), 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() ); }
public static PersistentEntityKey fromEntityKey(EntityKey key) { return new PersistentEntityKey( key.getColumnNames(), key.getColumnValues() ); }
@Override public Tuple createTuple(EntityKey key, OperationContext operationContext) { Map<String, Object> toSave = new HashMap<String, Object>(); toSave.put( key.getColumnNames()[0], key.getColumnValues()[0] ); return new Tuple( new MapTupleSnapshot( toSave ), SnapshotType.INSERT ); }
private int findKeyIndex(EntityKey[] keys, Node owner) { for ( int i = 0; i < keys.length; i++ ) { if ( RemoteNeo4jHelper.matches( owner.asMap(), keys[i].getColumnNames(), keys[i].getColumnValues() ) ) { return i; } } return -1; }
private int findKeyIndex(EntityKey[] keys, Node owner) { for ( int i = 0; i < keys.length; i++ ) { if ( RemoteNeo4jHelper.matches( owner.getProperties(), keys[i].getColumnNames(), keys[i].getColumnValues() ) ) { return i; } } return -1; }
/** * 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() ); }
@Override protected String initCreateEmbeddedAssociationQuery(AssociationKey associationKey, EntityKey embeddedKey) { String collectionRole = associationKey.getMetadata().getCollectionRole(); String[] embeddedColumnNames = embeddedKey.getColumnNames(); Object[] embeddedColumnValues = embeddedKey.getColumnValues(); String[] columnNames = associationKey.getEntityKey().getMetadata().getColumnNames(); StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append( matchOwnerEntityNode ); if ( isCollectionOfPrimitives( collectionRole, embeddedColumnNames ) ) { createRelationshipForCollectionOfPrimitivesOrMap( associationKey, collectionRole, columnNames, queryBuilder ); } else { createRelationshipforCollectionOfComponents( associationKey, collectionRole, embeddedColumnNames, embeddedColumnValues, queryBuilder ); } return queryBuilder.toString(); }
@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 ); }
protected String initCreateEmbeddedAssociationQuery(AssociationKey associationKey, EntityKey embeddedKey) { String collectionRole = associationKey.getMetadata().getCollectionRole(); String[] embeddedColumnNames = embeddedKey.getColumnNames(); Object[] embeddedColumnValues = embeddedKey.getColumnValues(); String[] columnNames = associationKey.getEntityKey().getMetadata().getColumnNames(); StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append( matchOwnerEntityNode ); if ( isCollectionOfPrimitives( collectionRole, embeddedColumnNames ) ) { createRelationshipForCollectionOfPrimitivesOrMap( associationKey, collectionRole, columnNames, queryBuilder ); } else { createRelationshipforCollectionOfComponents( associationKey, collectionRole, embeddedColumnNames, embeddedColumnValues, queryBuilder ); } return queryBuilder.toString(); }
@Override public void removeTuple(EntityKey key, TupleContext tupleContext) { final String cacheName = cacheName( key ); log.debugf( "removeTuple for key '%s' on cache '%s'", key, cacheName ); ProtoStreamMappingAdapter mapper = provider.getDataMapperForCache( cacheName ); ProtostreamId idBuffer = mapper.createIdPayload( key.getColumnNames(), key.getColumnValues() ); mapper.withinCacheEncodingContext( c -> c.remove( idBuffer ) ); }
protected Object[] createRelationshipForEmbeddedQueryValues(AssociationKey associationKey, EntityKey embeddedKey) { String collectionRole = associationKey.getMetadata().getCollectionRole(); Object[] columnValues = associationKey.getEntityKey().getColumnValues(); if ( isCollectionOfPrimitives( collectionRole, embeddedKey.getColumnNames() ) ) { return ArrayHelper.concat( columnValues, embeddedKey.getColumnValues()[0] ); } else { return ArrayHelper.concat( columnValues, embeddedKey.getColumnValues() ); } }
private void flushEntity() { Tuple versionedTuple = new Tuple( new MapTupleSnapshot( owningEntity ), operationType ); ProtoStreamMappingAdapter mapper = provider.getDataMapperForCache( cacheName( ownerEntityKey ) ); ProtostreamId idBuffer = mapper.createIdPayload( ownerEntityKey.getColumnNames(), ownerEntityKey.getColumnValues() ); ProtostreamPayload valuePayload = mapper.createValuePayload( versionedTuple ); if ( operationType == SnapshotType.INSERT ) { insertEntity( mapper, idBuffer, valuePayload ); } else { updateEntity( mapper, idBuffer, valuePayload ); } }
private static Tuple getTuple(InfinispanRemoteDatastoreProvider provider, EntityKey key) { final String cacheName = cacheName( key ); ProtoStreamMappingAdapter mapper = provider.getDataMapperForCache( cacheName ); ProtostreamId idBuffer = mapper.createIdPayload( key.getColumnNames(), key.getColumnValues() ); VersionedValue<ProtostreamPayload> v = mapper.withinCacheEncodingContext( c -> c.getVersioned( idBuffer ) ); if ( v == null ) { return null; } ProtostreamPayload payload = v.getValue(); if ( payload == null ) { return null; } long version = v.getVersion(); VersionedTuple versionedTuple = payload.toVersionedTuple( SnapshotType.UPDATE ); versionedTuple.setVersion( version ); return versionedTuple; }