litesoft
@ 947
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.sequences; public interface SequenceSource { public void clearAllGroups(); public void clear( String pGroup ); public void preallocateNextSequenceNumbers( String pGroup, int pBlockSize, Long pRestartAt ); public long getNextSequenceNumber( String pGroup, Long pRestartAt ); public long getNextSequenceNumber( String pGroup ); public long getNextSequenceNumber( Class pGroup ); public static class Restart { public static boolean at( long pRetVal, Long pRestartAt ) { return (pRestartAt != null) && LLat( pRetVal, pRestartAt ); } private static boolean LLat( long pRetVal, long pRestartAt ) { return (pRestartAt > 1) && (pRestartAt <= pRetVal); } } public static final SequenceSource NULL = new SequenceSource() { private long mLastNumber = 0; public void clearAllGroups() { } public void clear( String pGroup ) { } public void preallocateNextSequenceNumbers( String pGroup, int pBlockSize, Long pRestartAt ) { } public synchronized long getNextSequenceNumber( String pGroup, Long pRestartAt ) { long rv = ++mLastNumber; if ( Restart.at( rv, pRestartAt ) ) { rv = mLastNumber = 1; } return rv; } public long getNextSequenceNumber( String pGroup ) { return getNextSequenceNumber( pGroup, null ); } public long getNextSequenceNumber( Class pGroup ) { return getNextSequenceNumber( pGroup.getName() ); } }; } |