/** * Getter for property 'upperLimit'. * <p/> * Exposure intended for testing purposes. * * @return Value for property 'upperLimit'. */ public synchronized IntegralDataTypeHolder getHiValue() { return noTenantGenerationState().upperLimit; } }
HiLoOptimizer optimizer = (HiLoOptimizer) generator.getOptimizer(); int increment = optimizer.getIncrementSize(); Entity[] entities = new Entity[ increment + 1 ]; Session s = openSession(); long expectedId = i + 1; assertEquals( expectedId, entities[i].getId().longValue() ); assertEquals( 1, ( (BasicHolder) optimizer.getLastSourceValue() ).getActualLongValue() ); assertEquals( i + 1, ( (BasicHolder) optimizer.getLastValue() ).getActualLongValue() ); assertEquals( increment + 1, ( (BasicHolder) optimizer.getHiValue() ).getActualLongValue() ); long expectedId = optimizer.getIncrementSize() + 1; assertEquals( expectedId, entities[ optimizer.getIncrementSize() ].getId().longValue() ); assertEquals( 2, ( (BasicHolder) optimizer.getLastSourceValue() ).getActualLongValue() ); // initialization + clock-over assertEquals( increment + 1, ( (BasicHolder) optimizer.getLastValue() ).getActualLongValue() ); assertEquals( ( increment * 2 ) + 1, ( (BasicHolder) optimizer.getHiValue() ).getActualLongValue() );
@Override public synchronized Serializable generate(AccessCallback callback) { final GenerationState generationState = locateGenerationState( callback.getTenantIdentifier() ); if ( generationState.lastSourceValue == null ) { // first call, so initialize ourselves. we need to read the database // value and set up the 'bucket' boundaries generationState.lastSourceValue = callback.getNextValue(); while ( generationState.lastSourceValue.lt( 1 ) ) { generationState.lastSourceValue = callback.getNextValue(); } // upperLimit defines the upper end of the bucket values generationState.upperLimit = generationState.lastSourceValue.copy().multiplyBy( incrementSize ).increment(); // initialize value to the low end of the bucket generationState.value = generationState.upperLimit.copy().subtract( incrementSize ); } else if ( ! generationState.upperLimit.gt( generationState.value ) ) { generationState.lastSourceValue = callback.getNextValue(); generationState.upperLimit = generationState.lastSourceValue.copy().multiplyBy( incrementSize ).increment(); generationState.value = generationState.upperLimit.copy().subtract( incrementSize ); } return generationState.value.makeValueThenIncrement(); }
HiLoOptimizer optimizer = (HiLoOptimizer) generator.getOptimizer(); int increment = optimizer.getIncrementSize(); Entity[] entities = new Entity[ increment + 1 ]; Session s = openSession(); s.save( entities[i] ); assertEquals( 1, generator.getTableAccessCount() ); // initialization assertEquals( 1, ( (BasicHolder) optimizer.getLastSourceValue() ).getActualLongValue() ); // initialization assertEquals( i + 1, ( (BasicHolder) optimizer.getLastValue() ).getActualLongValue() ); assertEquals( increment + 1, ( (BasicHolder) optimizer.getHiValue() ).getActualLongValue() ); s.save( entities[ increment ] ); assertEquals( 2, generator.getTableAccessCount() ); // initialization assertEquals( 2, ( (BasicHolder) optimizer.getLastSourceValue() ).getActualLongValue() ); // initialization assertEquals( increment + 1, ( (BasicHolder) optimizer.getLastValue() ).getActualLongValue() ); assertEquals( ( increment * 2 ) + 1, ( (BasicHolder) optimizer.getHiValue() ).getActualLongValue() );
@Override public synchronized Serializable generate(AccessCallback callback) { final GenerationState generationState = locateGenerationState( callback.getTenantIdentifier() ); if ( generationState.lastSourceValue == null ) { // first call, so initialize ourselves. we need to read the database // value and set up the 'bucket' boundaries generationState.lastSourceValue = callback.getNextValue(); while ( generationState.lastSourceValue.lt( 1 ) ) { generationState.lastSourceValue = callback.getNextValue(); } // upperLimit defines the upper end of the bucket values generationState.upperLimit = generationState.lastSourceValue.copy().multiplyBy( incrementSize ).increment(); // initialize value to the low end of the bucket generationState.value = generationState.upperLimit.copy().subtract( incrementSize ); } else if ( ! generationState.upperLimit.gt( generationState.value ) ) { generationState.lastSourceValue = callback.getNextValue(); generationState.upperLimit = generationState.lastSourceValue.copy().multiplyBy( incrementSize ).increment(); generationState.value = generationState.upperLimit.copy().subtract( incrementSize ); } return generationState.value.makeValueThenIncrement(); }
HiLoOptimizer optimizer = (HiLoOptimizer) generator.getOptimizer(); int increment = optimizer.getIncrementSize(); Entity[] entities = new Entity[ increment + 1 ]; Session s = openSession(); s.save( entities[i] ); assertEquals( 1, generator.getDatabaseStructure().getTimesAccessed() ); // initialization assertEquals( 1, ( (BasicHolder) optimizer.getLastSourceValue() ).getActualLongValue() ); // initialization assertEquals( i + 1, ( (BasicHolder) optimizer.getLastValue() ).getActualLongValue() ); assertEquals( increment + 1, ( (BasicHolder) optimizer.getHiValue() ).getActualLongValue() ); s.save( entities[ increment ] ); assertEquals( 2, generator.getDatabaseStructure().getTimesAccessed() ); // initialization assertEquals( 2, ( (BasicHolder) optimizer.getLastSourceValue() ).getActualLongValue() ); // initialization assertEquals( increment + 1, ( (BasicHolder) optimizer.getLastValue() ).getActualLongValue() ); assertEquals( ( increment * 2 ) + 1, ( (BasicHolder) optimizer.getHiValue() ).getActualLongValue() );
@Override public synchronized IntegralDataTypeHolder getLastSourceValue() { return noTenantGenerationState().lastSourceValue; }
/** * Getter for property 'lastValue'. * <p/> * Exposure intended for testing purposes. * * @return Value for property 'lastValue'. */ public synchronized IntegralDataTypeHolder getLastValue() { return noTenantGenerationState().value.copy().decrement(); }
/** * Getter for property 'upperLimit'. * <p/> * Exposure intended for testing purposes. * * @return Value for property 'upperLimit'. */ public synchronized IntegralDataTypeHolder getHiValue() { return noTenantGenerationState().upperLimit; } }
@Override public synchronized IntegralDataTypeHolder getLastSourceValue() { return noTenantGenerationState().lastSourceValue; }
/** * Getter for property 'lastValue'. * <p/> * Exposure intended for testing purposes. * * @return Value for property 'lastValue'. */ public synchronized IntegralDataTypeHolder getLastValue() { return noTenantGenerationState().value.copy().decrement(); }