package com.qianwen.core.sequence.builder;
|
|
import javax.sql.DataSource;
|
import com.qianwen.core.sequence.properties.SequenceDbProperties;
|
import com.qianwen.core.sequence.properties.SequenceRedisProperties;
|
import com.qianwen.core.sequence.range.name.DefaultBizName;
|
import com.qianwen.core.sequence.sequence.Sequence;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.core.tool.utils.SpringUtil;
|
|
|
public class SequenceBuilderFactory {
|
public static Sequence getSeqBuilder(String bizName, Integer step, Integer stepStart) {
|
SequenceDbProperties dbProperties = (SequenceDbProperties) SpringUtil.getBean(SequenceDbProperties.class);
|
if (dbProperties.isEnabled()) {
|
DataSource dataSource = (DataSource) SpringUtil.getBean(DataSource.class);
|
dbProperties.setBizName(Func.isNotEmpty(bizName) ? bizName : dbProperties.getBizName());
|
dbProperties.setStep(step.intValue());
|
dbProperties.setStepStart(stepStart.intValue());
|
return createDbSeqBuilder(dataSource, dbProperties);
|
}
|
SequenceRedisProperties redisProperties = (SequenceRedisProperties) SpringUtil.getBean(SequenceRedisProperties.class);
|
if (redisProperties.isEnabled()) {
|
dbProperties.setBizName(Func.isNotEmpty(bizName) ? bizName : dbProperties.getBizName());
|
redisProperties.setStep(step.intValue());
|
redisProperties.setStepStart(stepStart.intValue());
|
return createRedisSeqBuilder(redisProperties);
|
}
|
return null;
|
}
|
|
static Sequence createDbSeqBuilder(DataSource dataSource, SequenceDbProperties sequenceDbProperties) {
|
return DbSeqBuilder.create().bizName(new DefaultBizName(sequenceDbProperties.getBizName())).dataSource(dataSource).tableName(sequenceDbProperties.getTableName()).step(sequenceDbProperties.getStep()).stepStart(sequenceDbProperties.getStepStart()).build();
|
}
|
|
static Sequence createRedisSeqBuilder(SequenceRedisProperties sequenceRedisProperties) {
|
return RedisSeqBuilder.create().bizName(new DefaultBizName(sequenceRedisProperties.getBizName())).ip(sequenceRedisProperties.getIp()).auth(sequenceRedisProperties.getAuth()).port(sequenceRedisProperties.getPort().intValue()).step(sequenceRedisProperties.getStep()).stepStart(sequenceRedisProperties.getStepStart()).build();
|
}
|
}
|