yangys
2024-05-18 040976de6f9934b99f30268a28e2ecf42260e217
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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();
    }
}