shikeyin
2024-01-11 65da8373531677b1c37a98f53eaa30c892f35e5a
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.iplatform.gather.config;
 
import com.iplatform.gather.support.DefaultMetaDataEngine;
import com.walker.connector.LocalAddress;
import com.walker.db.DatabaseType;
import com.walker.dbmeta.DatabaseMetaEngine;
import com.walker.dbmeta.support.MySQLMetaEngine;
import com.walker.dbmeta.support.OracleMetaEngine;
import com.walker.jdbc.JdbcInspector;
import com.walker.store.AbstractMetaDataEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
@ConditionalOnProperty(prefix = "iplatform.gather", name = "enabled", havingValue = "true", matchIfMissing = false)
public class GatherConfig {
 
    private final transient Logger logger = LoggerFactory.getLogger(this.getClass());
 
    @Bean
    public GatherProperties gatherProperties(){
        return new GatherProperties();
    }
 
    @Bean
    public LocalAddress localAddress(JdbcInspector jdbcInspector){
        LocalAddress localAddress = new LocalAddress(jdbcInspector.getPrimaryDataSourceMeta());
        logger.info("localAddress.serviceName = " + localAddress.getServiceName());
//        logger.info("localAddress.service = " + localAddress.getService());
        return localAddress;
    }
    
    @Bean
    public AbstractMetaDataEngine metaDataEngine(JdbcInspector jdbcInspector){
        DatabaseMetaEngine databaseMetaEngine = null;
        DatabaseType databaseType = jdbcInspector.getPrimaryDatabaseType();
        if(databaseType == DatabaseType.MYSQL){
            databaseMetaEngine = new MySQLMetaEngine();
        } else if(databaseType == DatabaseType.ORACLE){
            databaseMetaEngine = new OracleMetaEngine();
        } else {
            throw new UnsupportedOperationException("暂不支持其他数据库 DatabaseMetaEngine 创建: " + databaseType.toString());
        }
 
//        AbstractMetaDataEngine metaDataEngine = new TestMetaDataEngine();
        AbstractMetaDataEngine metaDataEngine = new DefaultMetaDataEngine();
        metaDataEngine.setDatabaseMetaEngine(databaseMetaEngine);
        logger.info("创建了对象: AbstractMetaDataEngine");
        return metaDataEngine;
    }
}