package com.meidusa.amoeba.seq.fetcher; import org.apache.log4j.Logger; public class SeqFetchService { private static SeqProvider provider; protected static Logger logger = Logger.getLogger(SeqFetchService.class); public static SeqOperationResult createSeq(String schema, String seqName, long start, long offset) { checkProviderExisted(); return provider.createSeq(schema, seqName, start, offset); } public static long getSeqCurrVal(String schema, String seqName) { checkProviderExisted(); return provider.getSeqCurrVal(schema, seqName); } public static long getSeqNextVal(String schema, String seqName) { checkProviderExisted(); return provider.getSeqNextVal(schema, seqName); } public static long batchGetSeqVal(String schema, String seqName, long count) { checkProviderExisted(); return provider.batchGetSeqVal(schema, seqName, count); } public static SeqOperationResult deleteSeq(String schema, String seqName) { checkProviderExisted(); return provider.deleteSeq(schema, seqName); } public void setProvider(SeqProvider provider) { SeqFetchService.provider = provider; } public void removeProvider() { if (provider != null) { try { provider.stop(); } catch (Exception e) { logger.error(String.format("stop sequence number provide service error, since %s", e.getMessage())); } } provider = null; } public static void init() throws Exception { if (provider != null ) { provider.init(); if (logger.isInfoEnabled()) { logger.info("sequence service is ready"); } } } public static void stop() throws Exception { if (provider != null) { provider.stop(); } } public static void checkProviderExisted() { if (provider == null) { throw new RuntimeException("no sequence number service provider found"); } } }