From 08f0cd24cbad09ef969a1d1368490abab0eeaaba Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 10 May 2021 16:03:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20kettle=20=E6=9C=AA=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E7=A6=81=E7=94=A8=E6=8A=BD=E5=8F=96=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/DataSetGroupController.java | 9 ++++- .../service/dataset/ExtractDataService.java | 34 +++++++++++++++++++ frontend/src/api/dataset/dataset.js | 8 +++++ frontend/src/lang/zh.js | 3 +- frontend/src/views/dataset/add/AddDB.vue | 8 +++-- frontend/src/views/dataset/add/AddSQL.vue | 6 +++- .../dataset/common/DatasetGroupSelector.vue | 31 ++++++++++++----- frontend/src/views/dataset/group/Group.vue | 18 +++++----- 8 files changed, 96 insertions(+), 21 deletions(-) diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java index 13abe7e348..6ab588a83b 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java @@ -4,6 +4,7 @@ import io.dataease.base.domain.DatasetGroup; import io.dataease.controller.request.dataset.DataSetGroupRequest; import io.dataease.dto.dataset.DataSetGroupDTO; import io.dataease.service.dataset.DataSetGroupService; +import io.dataease.service.dataset.ExtractDataService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -18,7 +19,8 @@ import java.util.List; public class DataSetGroupController { @Resource private DataSetGroupService dataSetGroupService; - + @Resource + private ExtractDataService extractDataService; @PostMapping("/save") public DataSetGroupDTO save(@RequestBody DatasetGroup datasetGroup) { return dataSetGroupService.save(datasetGroup); @@ -38,4 +40,9 @@ public class DataSetGroupController { public DatasetGroup getScene(@PathVariable String id) { return dataSetGroupService.getScene(id); } + + @PostMapping("/isKettleRunning") + public boolean isKettleRunning(){ + return extractDataService.isKettleRunning(); + } } diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index 10d81eab98..2f45efe807 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -23,9 +23,15 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; import org.pentaho.di.cluster.SlaveServer; import org.pentaho.di.core.database.DatabaseMeta; import org.pentaho.di.core.row.ValueMetaInterface; +import org.pentaho.di.core.util.HttpClientManager; +import org.pentaho.di.core.util.Utils; import org.pentaho.di.job.Job; import org.pentaho.di.job.JobExecutionConfiguration; import org.pentaho.di.job.JobHopMeta; @@ -54,7 +60,10 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.naming.AuthenticationException; import java.io.File; +import java.io.InputStreamReader; +import java.net.InetAddress; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; @@ -529,6 +538,31 @@ public class ExtractDataService { return userDefinedJavaClassStep; } + public boolean isKettleRunning(){ + try { + if (InetAddress.getByName(carte).isReachable(1000)) { + HttpClient httpClient; + HttpGet getMethod = new HttpGet( "http://" + carte + ":" + port); + HttpClientManager.HttpClientBuilderFacade clientBuilder = HttpClientManager.getInstance().createBuilder(); + clientBuilder.setConnectionTimeout(1); + clientBuilder.setCredentials(user, passwd); + httpClient = clientBuilder.build(); + HttpResponse httpResponse = httpClient.execute( getMethod ); + int statusCode = httpResponse.getStatusLine().getStatusCode(); + if ( statusCode != -1 ) { + if ( statusCode == HttpStatus.SC_UNAUTHORIZED ) { + return false; + } + } + }else { + return false; + } + }catch (Exception e){ + return false; + } + return false; + } + private static String code = "import org.pentaho.di.core.row.ValueMetaInterface;\n" + "import java.util.List;\n" + "import java.io.File;\n" + diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index eaa27aa059..0dd77de2ba 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -119,4 +119,12 @@ export function fieldValues(fieldId) { }) } +export function isKettleRunning() { + return request({ + url: '/dataset/group/isKettleRunning', + method: 'post', + loading: true + }) +} + export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 4b2fbe697e..dfe7752094 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -811,7 +811,8 @@ export default { target_table: '被关联表', target_field: '被关联字段', union_relation: '关联关系', - pls_setting_union_success: '请正确设置关联关系' + pls_setting_union_success: '请正确设置关联关系', + invalid_dataset:'Kettle未运行,无效数据集' }, datasource: { datasource: '数据源', diff --git a/frontend/src/views/dataset/add/AddDB.vue b/frontend/src/views/dataset/add/AddDB.vue index 1d3fa828ae..6a2b950c48 100644 --- a/frontend/src/views/dataset/add/AddDB.vue +++ b/frontend/src/views/dataset/add/AddDB.vue @@ -28,8 +28,8 @@ - - + + @@ -66,6 +66,10 @@ export default { param: { type: Object, default: null + }, + isKettleRunning: { + type: Boolean, + default: false } }, data() { diff --git a/frontend/src/views/dataset/add/AddSQL.vue b/frontend/src/views/dataset/add/AddSQL.vue index 71f7f09111..79d3c85f94 100644 --- a/frontend/src/views/dataset/add/AddSQL.vue +++ b/frontend/src/views/dataset/add/AddSQL.vue @@ -33,7 +33,7 @@ - + @@ -121,6 +121,10 @@ export default { param: { type: Object, required: true + }, + isKettleRunning: { + type: Boolean, + default: false } }, data() { diff --git a/frontend/src/views/dataset/common/DatasetGroupSelector.vue b/frontend/src/views/dataset/common/DatasetGroupSelector.vue index 5ac1936be6..240f6f4779 100644 --- a/frontend/src/views/dataset/common/DatasetGroupSelector.vue +++ b/frontend/src/views/dataset/common/DatasetGroupSelector.vue @@ -103,12 +103,13 @@