/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/DatasourceQueryServiceImpl.java

https://github.com/WeiYe-Jing/datax-web · Java · 115 lines · 84 code · 12 blank · 19 comment · 14 complexity · 3df299ba3ae83e1adfb43dacb9d95ed9 MD5 · raw file

  1. package com.wugui.datax.admin.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.google.common.collect.Lists;
  4. import com.wugui.datax.admin.entity.JobDatasource;
  5. import com.wugui.datax.admin.service.DatasourceQueryService;
  6. import com.wugui.datax.admin.service.JobDatasourceService;
  7. import com.wugui.datax.admin.tool.query.*;
  8. import com.wugui.datax.admin.util.JdbcConstants;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.io.IOException;
  13. import java.sql.SQLException;
  14. import java.util.List;
  15. /**
  16. * datasource query
  17. *
  18. * @author zhouhongfa@gz-yibo.com
  19. * @ClassName JdbcDatasourceQueryServiceImpl
  20. * @Version 1.0
  21. * @since 2019/7/31 20:51
  22. */
  23. @Service
  24. public class DatasourceQueryServiceImpl implements DatasourceQueryService {
  25. @Autowired
  26. private JobDatasourceService jobDatasourceService;
  27. @Override
  28. public List<String> getDBs(Long id) throws IOException {
  29. //获取数据源对象
  30. JobDatasource datasource = jobDatasourceService.getById(id);
  31. return new MongoDBQueryTool(datasource).getDBNames();
  32. }
  33. @Override
  34. public List<String> getTables(Long id, String tableSchema) throws IOException {
  35. //获取数据源对象
  36. JobDatasource datasource = jobDatasourceService.getById(id);
  37. //queryTool组装
  38. if (ObjectUtil.isNull(datasource)) {
  39. return Lists.newArrayList();
  40. }
  41. if (JdbcConstants.HBASE.equals(datasource.getDatasource())) {
  42. return new HBaseQueryTool(datasource).getTableNames();
  43. } else if (JdbcConstants.MONGODB.equals(datasource.getDatasource())) {
  44. return new MongoDBQueryTool(datasource).getCollectionNames(datasource.getDatabaseName());
  45. } else {
  46. BaseQueryTool qTool = QueryToolFactory.getByDbType(datasource);
  47. if(StringUtils.isBlank(tableSchema)){
  48. return qTool.getTableNames();
  49. }else{
  50. return qTool.getTableNames(tableSchema);
  51. }
  52. }
  53. }
  54. @Override
  55. public List<String> getTableSchema(Long id) {
  56. //获取数据源对象
  57. JobDatasource datasource = jobDatasourceService.getById(id);
  58. //queryTool组装
  59. if (ObjectUtil.isNull(datasource)) {
  60. return Lists.newArrayList();
  61. }
  62. BaseQueryTool qTool = QueryToolFactory.getByDbType(datasource);
  63. return qTool.getTableSchema();
  64. }
  65. @Override
  66. public List<String> getCollectionNames(long id, String dbName) throws IOException {
  67. //获取数据源对象
  68. JobDatasource datasource = jobDatasourceService.getById(id);
  69. //queryTool组装
  70. if (ObjectUtil.isNull(datasource)) {
  71. return Lists.newArrayList();
  72. }
  73. return new MongoDBQueryTool(datasource).getCollectionNames(dbName);
  74. }
  75. @Override
  76. public List<String> getColumns(Long id, String tableName) throws IOException {
  77. //获取数据源对象
  78. JobDatasource datasource = jobDatasourceService.getById(id);
  79. //queryTool组装
  80. if (ObjectUtil.isNull(datasource)) {
  81. return Lists.newArrayList();
  82. }
  83. if (JdbcConstants.HBASE.equals(datasource.getDatasource())) {
  84. return new HBaseQueryTool(datasource).getColumns(tableName);
  85. } else if (JdbcConstants.MONGODB.equals(datasource.getDatasource())) {
  86. return new MongoDBQueryTool(datasource).getColumns(tableName);
  87. } else {
  88. BaseQueryTool queryTool = QueryToolFactory.getByDbType(datasource);
  89. return queryTool.getColumnNames(tableName, datasource.getDatasource());
  90. }
  91. }
  92. @Override
  93. public List<String> getColumnsByQuerySql(Long datasourceId, String querySql) throws SQLException {
  94. //获取数据源对象
  95. JobDatasource jdbcDatasource = jobDatasourceService.getById(datasourceId);
  96. //queryTool组装
  97. if (ObjectUtil.isNull(jdbcDatasource)) {
  98. return Lists.newArrayList();
  99. }
  100. BaseQueryTool queryTool = QueryToolFactory.getByDbType(jdbcDatasource);
  101. return queryTool.getColumnsByQuerySql(querySql);
  102. }
  103. }