import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * * <pre> * Copyright (C): 2012 * * Description: * ��oracle��sequence�ĵ��ýӿ� * * Revision History: * 2012-10-23 initial version. * * </pre> */ public class SequenceUtil { private Map<String,ISequence> keyMap = new ConcurrentHashMap<String, ISequence>(); private static SequenceUtil _instance = new SequenceUtil(); private SequenceUtil(){}; public static SequenceUtil getInstance(){ return _instance; } /** * getSequence * @param sequenceName * @return */ private ISequence getSequence(String sequenceName){ // return new SequenceImpl(); return new AtomicLongSequence(sequenceName); } /** * ��������,��ʵ���Ǵ������ĿǰΪ���������� * @param sequenceName ������� */ public void resetSequence(String sequenceName){ if(keyMap.containsKey(sequenceName)){ ISequence sequence = keyMap.get(sequenceName); keyMap.remove(sequenceName); sequence = null; } } /** * ȡ����һ������ * @param sequenceName ������� * @return */ public long getNextVal(String sequenceName){ ISequence sequence = null; if(keyMap.containsKey(sequenceName)){ sequence = keyMap.get(sequenceName); } else{ sequence = getSequence(sequenceName); keyMap.put(sequenceName, sequence); } return sequence.getNextVal(); } }
