private Sequence findSequence(String sequenceName) { if (!sequences.containsKey(sequenceName)) { synchronized (lock) { //double check, condition could change while obtaining the lock if (!sequences.containsKey(sequenceName)) { Sequence sequence = new Sequence(sequenceName, sequenceDefinition); sequences.put(sequenceName, sequence); } } } return sequences.get(sequenceName); }
synchronized long nextValue(Session session) { if (recalculationNeeded()) { long currentSequenceValue = session.executeQueryForLong( new Select("SELECT next from seq "+ sequenceName, sequenceGenerator.nextFromSequenceAsSelect(sequenceName))); recalculate(currentSequenceValue); } return nextLocalValue(); }
long nextLocalValue() { if(recalculationNeeded()) { throw new SequenceLimitReachedException("Sequence " + sequenceName + " has reached its limit of " + currentLimit + ". " + "Before fetching value, check if recalculation is needed using recalculationNeeded() method."); } currentValue++; return currentValue - 1; }
@Override public long generateKey(String sequenceName, Session session) { long nextVal = findSequence(sequenceName).nextValue(session); lastKey.set(nextVal); return nextVal; }
long nextLocalValue() { if(recalculationNeeded()) { throw new SequenceLimitReachedException("Sequence " + sequenceName + " has reached its limit of " + currentLimit + ". " + "Before fetching value, check if recalculation is needed using recalculationNeeded() method."); } currentValue++; return currentValue - 1; }
@Override public long generateKey(String sequenceName, Session session) { long nextVal = findSequence(sequenceName).nextValue(session); lastKey.set(nextVal); return nextVal; }
synchronized long nextValue(Session session) { if (recalculationNeeded()) { long currentSequenceValue = session.executeQueryForLong( new Select("SELECT next from seq "+ sequenceName, sequenceGenerator.nextFromSequenceAsSelect(sequenceName))); recalculate(currentSequenceValue); } return nextLocalValue(); }
private Sequence findSequence(String sequenceName) { if (!sequences.containsKey(sequenceName)) { synchronized (lock) { //double check, condition could change while obtaining the lock if (!sequences.containsKey(sequenceName)) { Sequence sequence = new Sequence(sequenceName, sequenceDefinition); sequences.put(sequenceName, sequence); } } } return sequences.get(sequenceName); }