package com.qianwen.core.sequence.builder; import javax.sql.DataSource; import com.qianwen.core.sequence.range.BizName; import com.qianwen.core.sequence.range.db.DbSeqRangeMgr; import com.qianwen.core.sequence.sequence.Sequence; import com.qianwen.core.sequence.sequence.impl.DefaultRangeSequence; public class DbSeqBuilder implements SeqBuilder { private DataSource dataSource; private BizName bizName; private String tableName = "sequence"; private int retryTimes = 3; private int step = 1; private long stepStart = 0; public static DbSeqBuilder create() { DbSeqBuilder builder = new DbSeqBuilder(); return builder; } @Override // com.qianwen.core.sequence.builder.SeqBuilder public Sequence build() { DbSeqRangeMgr dbSeqRangeMgr = new DbSeqRangeMgr(); dbSeqRangeMgr.setDataSource(this.dataSource); dbSeqRangeMgr.setTableName(this.tableName); dbSeqRangeMgr.setRetryTimes(this.retryTimes); dbSeqRangeMgr.setStep(this.step); dbSeqRangeMgr.setStepStart(this.stepStart); dbSeqRangeMgr.init(); DefaultRangeSequence sequence = new DefaultRangeSequence(); sequence.setName(this.bizName); sequence.setStep(Integer.valueOf(this.step)); sequence.setStartStep(this.stepStart); sequence.setSeqRangeMgr(dbSeqRangeMgr); return sequence; } public DbSeqBuilder dataSource(DataSource dataSource) { this.dataSource = dataSource; return this; } public DbSeqBuilder tableName(String tableName) { this.tableName = tableName; return this; } public DbSeqBuilder retryTimes(int retryTimes) { this.retryTimes = retryTimes; return this; } public DbSeqBuilder step(int step) { this.step = step; return this; } public DbSeqBuilder bizName(BizName bizName) { this.bizName = bizName; return this; } public DbSeqBuilder stepStart(long stepStart) { this.stepStart = stepStart; return this; } }