From c007f0ca1785db093d48f4846cda82fe8e955765 Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期三, 27 五月 2020 09:59:29 +0800
Subject: [PATCH] merage

---
 src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java |  104 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 91 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java
index 8384686..7706a70 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java
@@ -1,20 +1,15 @@
 package com.highdatas.mdm.service.impl;
 
-import com.alibaba.druid.pool.DruidDataSource;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.highdatas.mdm.entity.SysAssemble;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.highdatas.mdm.entity.SysAssembleDb;
 import com.highdatas.mdm.entity.SysAssembleDbdriver;
 import com.highdatas.mdm.mapper.SysAssembleDbMapper;
-import com.highdatas.mdm.pojo.kettle.UnBigDataDataSourceInfo;
 import com.highdatas.mdm.service.ISysAssembleDbService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.highdatas.mdm.service.ISysAssembleDbdriverService;
-import com.highdatas.mdm.service.ISysAssembleService;
 import com.highdatas.mdm.util.Constant;
+import org.apache.commons.dbutils.DbUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.pentaho.di.core.KettleClientEnvironment;
-import org.pentaho.di.core.database.DatabaseMeta;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -22,6 +17,7 @@
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 
 /**
  * <p>
@@ -43,12 +39,18 @@
             return null;
         }
 
+        return getConnection(assemble);
+
+    }
+
+    private Connection getConnection(SysAssembleDb assemble) {
         Connection connection  = null;
         try {
             SysAssembleDbdriver sysAssembleDbdriver = dbdriverService.selectOne(new EntityWrapper<SysAssembleDbdriver>().eq(Constant.TYPE, assemble.getDatasourceType()));
+            String driver = "com.mysql.cj.jdbc.Driver";
             if (sysAssembleDbdriver != null) {
-                String driver = sysAssembleDbdriver.getDriver();
-                Class.forName(driver).newInstance();
+                driver = sysAssembleDbdriver.getDriver();
+//                dataSource.setDriverClassName(driver);c
             }
 
 //            Boolean bigdata = assemble.getBigdata();
@@ -58,16 +60,47 @@
 //                dataMetaOutput = new DatabaseMeta("Output", unBigDataDataSourceInfo.getDbType(), "Native", unBigDataDataSourceInfo.getDbHostName(), unBigDataDataSourceInfo.getDbName(), unBigDataDataSourceInfo.getDbPort(),
 //                        unBigDataDataSourceInfo.getUsername(), unBigDataDataSourceInfo.getPassword());
 //            }
+            DriverManager.setLoginTimeout(5);
+            String datasourcePass = assemble.getDatasourcePass();
+            try {
+                datasourcePass = com.datacvg.common.EncryptUtils.decrypt(datasourcePass);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
 
-            connection = DriverManager.getConnection(assemble.getDatasourceUrl(), assemble.getDatasourceUser(), assemble.getDatasourcePass());
+//            dataSource.setUrl(assemble.getDatasourceUrl());
+//            dataSource.setUsername(assemble.getDatasourceUser());
+//            dataSource.setPassword(datasourcePass);
+//            connection = dataSource.getConnection();
+            Properties properties = new Properties();
+            properties.setProperty("user",assemble.getDatasourceUser());
+            properties.setProperty("password",datasourcePass);
+            DbUtils.loadDriver(driver);
+//            Class.forName(driver);
+            String datasourceUrl = assemble.getDatasourceUrl();
+            if (!datasourceUrl.contains(Constant.timeZone)) {
+                datasourceUrl += "&serverTimezone=Asia/Shanghai";
+            }
+            datasourceUrl += "&nullCatalogMeansCurrent=true";
+
+            connection = DriverManager.getConnection(datasourceUrl,properties);
             return connection;
         }  catch (Exception e) {
                 e.printStackTrace();
                 return null;
             }
-
     }
 
+
+    public boolean testDatasource(String key,String driveClass,String url,String username,String password){
+        try {
+            Class.forName(driveClass);
+            DriverManager.getConnection(url, username, password);
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
     @Override
     public List<String> getFieldsByTableName(String parentId, String tableName) {
         SysAssembleDb assemble = this.selectById(parentId);
@@ -112,6 +145,37 @@
     }
 
     @Override
+    public boolean testConnection(SysAssembleDb sysAssembleDb) {
+        Connection connection = null;
+        try{
+            connection = getConnection(sysAssembleDb);
+            if (connection != null) {
+                return true;
+            }
+            return false;
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+        finally {
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+    /**
+     *
+     * @description:  娴嬭瘯杩炴帴
+     * @param parentId 姹囬泦id
+     * @return: 鏄惁娴嬭瘯杩炴帴鎴愬姛
+     *
+     */
+    @Override
     public boolean testConnection(String parentId) {
         Connection connection = null;
         try{
@@ -136,7 +200,14 @@
         }
 
     }
-
+    /**
+     *
+     * @description:  娴嬭瘯sql鏄惁璇硶姝e父
+     * @param sql sql
+     * @param parentId 姹囬泦id
+     * @return: 璇硶鏄惁姝g‘
+     *
+     */
     @Override
     public boolean testSql(String parentId, String sql) {
         Connection connection = null;
@@ -170,7 +241,14 @@
             }
         }
     }
-
+    /**
+     *
+     * @description:  閫氳繃sql 鑾峰彇sql 鍐呬娇鐢ㄧ殑瀛楁
+     * @param sql sql
+     * @param parentId 姹囬泦id
+     * @return: 瀛楁鍒楄〃
+     *
+     */
     @Override
     public List<String> getFieldsBySql(String parentId, String sql) {
         Connection connection = null;

--
Gitblit v1.8.0