de/backend/src/main/java/io/dataease/provider/ProviderFactory.java
2021-12-07 17:10:16 +08:00

76 lines
2.8 KiB
Java

package io.dataease.provider;
import io.dataease.commons.constants.DatasourceTypes;
import io.dataease.provider.datasource.DatasourceProvider;
import io.dataease.provider.query.DDLProvider;
import io.dataease.provider.query.QueryProvider;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class ProviderFactory implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.context = applicationContext;
}
public static DatasourceProvider getProvider(String type) {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(type);
switch (datasourceType) {
case es:
return context.getBean("es", DatasourceProvider.class);
default:
return context.getBean("jdbc", DatasourceProvider.class);
}
}
public static QueryProvider getQueryProvider(String type) {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(type);
switch (datasourceType) {
case mysql:
case mariadb:
case ds_doris:
return context.getBean("mysqlQuery", QueryProvider.class);
case de_doris:
return context.getBean("dorisQuery", QueryProvider.class);
case sqlServer:
return context.getBean("sqlserverQuery", QueryProvider.class);
case pg:
return context.getBean("pgQuery", QueryProvider.class);
case oracle:
return context.getBean("oracleQuery", QueryProvider.class);
case es:
return context.getBean("esQuery", QueryProvider.class);
case ck:
return context.getBean("ckQuery", QueryProvider.class);
case mongo:
return context.getBean("mongoQuery", QueryProvider.class);
case redshift:
return context.getBean("redshiftQuery", QueryProvider.class);
case hive:
return context.getBean("hiveQuery", QueryProvider.class);
case db2:
return context.getBean("db2Query", QueryProvider.class);
default:
return context.getBean("mysqlQuery", QueryProvider.class);
}
}
public static DDLProvider getDDLProvider(String type) {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(type);
switch (datasourceType) {
case de_doris:
return context.getBean("dorisDDL", DDLProvider.class);
default:
return context.getBean("dorisDDL", DDLProvider.class);
}
}
}