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(); } }