@Override public IdSourceKeyMetadata getGeneratorKeyMetadata() { return idSourceKey.getMetadata(); }
SerializableIdSourceKey(IdSourceKey key) { columnName = key.getColumnName(); columnValue = key.getColumnValue(); table = key.getTable(); }
@Override public IdSourceKey readObject(ObjectInput input) throws IOException, ClassNotFoundException { VersionChecker.readAndCheckVersion( input, VERSION, IdSourceKey.class ); String tableName = input.readUTF(); String[] columnNames = (String[]) input.readObject(); Object[] values = (Object[]) input.readObject(); IdSourceKeyMetadata metadata = DefaultIdSourceKeyMetadata.forTable( tableName, columnNames[0], null ); return IdSourceKey.forTable( metadata , (String) values[0] ); }
PerTableSerializableIdSourceKey(IdSourceKey key) { columnName = key.getColumnName(); columnValue = key.getColumnValue(); }
protected String sequenceName(IdSourceKey key) { return key.getMetadata().getType() == IdSourceType.SEQUENCE ? key.getMetadata().getName() : key.getColumnValue(); }
/** * Ex.: * <pre> * MATCH (n:hibernate_sequences:TABLE_BASED_SEQUENCE) WHERE n.sequence_name = {sequenceName} RETURN n * </pre> */ private String getTableQuery(IdSourceKey idSourceKey) { String query = queryCache.get( idSourceKey.getTable() ); if ( query == null ) { query = "MATCH (n" + labels( idSourceKey.getTable(), NodeLabel.TABLE_BASED_SEQUENCE.name() ) + ") WHERE n." + idSourceKey.getMetadata().getKeyColumnName() + " = {" + SEQUENCE_NAME_QUERY_PARAM + "} RETURN n"; String cached = queryCache.putIfAbsent( idSourceKey.getTable(), query ); if ( cached != null ) { query = cached; } } return query; }
public Number getSequenceValue(NextValueRequest request) { final String cacheName = request.getKey().getMetadata().getName(); final SequencesPerCache sequencesSet = sequencesPerCache.computeIfAbsent( cacheName, ( k ) -> { SequenceTableDefinition sequenceTableDefinition = idSchemaPerName.get( cacheName ); if ( sequenceTableDefinition == null ) { throw log.valueRequestedForUnknownSequence( request.getKey().getTable(), request.getKey().getColumnValue() ); } return new SequencesPerCache( provider.getCache( cacheName ) ); } ); return sequencesSet.getSequenceValue( request ); } }
private String counterName(NextValueRequest request) { StringBuilder builder = new StringBuilder(); builder.append( request.getKey().getTable() ); builder.append( "." ); builder.append( request.getKey().getColumnValue() ); return builder.toString(); } }
HotRodSequencer( RemoteCache<SequenceId, Long> remoteCache, NextValueRequest initialRequest) { this.remoteCache = remoteCache; this.increment = initialRequest.getIncrement(); this.id = new SequenceId( initialRequest.getKey().getColumnValue() ); }
@Override public Number getSequenceValue(NextValueRequest request) { IdSourceKey idSourceKey = request.getKey(); if ( isSequenceGeneratorId( idSourceKey ) ) { return sequenceHandlers.get( idSourceKey.getTable() ).nextValue( request ); } // else it is TableGenerator: return super.getSequenceValue( request ); }
@Override protected IdSourceKey buildIdGeneratorKey(Class<?> entityClass, String sequenceName) { IdentifierGenerator metadata = generateKeyMetadata( entityClass ); IdSourceKeyMetadata sequenceMetadata = ( (OgmSequenceGenerator) metadata ).getGeneratorKeyMetadata(); if ( dialect.supportsSequences() ) { return IdSourceKey.forSequence( sequenceMetadata ); } else { // Fallback to table generators return IdSourceKey.forTable( sequenceMetadata, sequenceName ); } }
private SequenceKeyAndMetadataProvider(IdSourceKeyMetadata idSourceKeyMetadata) { idSourceKey = IdSourceKey.forSequence( idSourceKeyMetadata ); }
public Number nextValue(NextValueRequest request) { if ( request.getKey().getMetadata().getType().equals( IdSourceType.TABLE ) ) { return tableClusterHandler.nextValue( request ); } return sequenceCounterHandlers .get( request.getKey().getTable() ) .nextValue( request ); } }
public Number nextValue(NextValueRequest request) { IdSourceKey key = request.getKey(); IdSourceKeyMetadata metadata = request.getKey().getMetadata(); Long valueFromDb = null; boolean done = false; do { valueFromDb = nextValueSelect( metadata, key.getColumnValue() ); if ( valueFromDb == null ) { //if not there, insert initial value valueFromDb = nextValueInsert( metadata, key.getColumnValue(), (long) request.getInitialValue() ); } //update seq value ready for the next reader Long updatedValue = valueFromDb + (long) request.getIncrement(); done = nextValueUpdate( metadata, key.getColumnValue(), valueFromDb, updatedValue ); } while ( !done ); return valueFromDb; } }
public static PersistentIdSourceKey fromIdSourceKey(IdSourceKey key) { return new PersistentIdSourceKey( key.getColumnName(), key.getColumnValue() ); }
private String counterName(NextValueRequest request) { StringBuilder builder = new StringBuilder(); builder.append( request.getKey().getTable() ); builder.append( "." ); builder.append( request.getKey().getColumnValue() ); return builder.toString(); } }
protected String key(NextValueRequest request) { return request.getKey().getTable() + ":" + request.getInitialValue() + ":" + request.getIncrement(); }
@Override public void writeObject(ObjectOutput output, IdSourceKey key) throws IOException { output.writeInt( VERSION ); output.writeUTF( key.getTable() ); //Wrapping in String[] and Object[] respectively as this used to be the format, //to maintain compatibility with Hibernate OGM 5.0 output.writeObject( new String[] { key.getColumnName() } ); output.writeObject( new Object[] { key.getColumnValue() } ); }
public Number nextValue(NextValueRequest request) { if ( request.getKey().getMetadata().getType().equals( IdSourceType.TABLE ) ) { return tableClusterHandler.nextValue( request ); } return sequenceCounterHandlers .get( request.getKey().getTable() ) .nextValue( request ); } }
private boolean isSequenceGeneratorId(IdSourceKey idSourceKey) { return isSequenceGeneratorId( idSourceKey.getMetadata() ); }