This is an automated email from the ASF dual-hosted git repository.

peacewong pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git


The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
     new 473c231e4 [Feature][Module Name]New Instance Condition Search in 
Management Console (#3744)
473c231e4 is described below

commit 473c231e4a24c9add3c0a6b2bff109f81847302d
Author: huangKai-2323 <[email protected]>
AuthorDate: Mon Nov 14 12:08:08 2022 +0800

    [Feature][Module Name]New Instance Condition Search in Management Console 
(#3744)
---
 .../linkis/jobhistory/dao/JobHistoryMapper.java    |   9 +-
 .../jobhistory/dao/impl/JobHistoryMapper.xml       |   3 +
 .../jobhistory/restful/api/QueryRestfulApi.java    |  25 ++--
 .../jobhistory/service/JobHistoryQueryService.java |   2 +-
 .../service/impl/JobHistoryQueryServiceImpl.scala  |  24 +++-
 .../apache/linkis/jobhistory/util/QueryUtils.scala |   6 +
 .../linkis/jobhistory/dao/JobDetailMapperTest.java | 129 ---------------------
 .../jobhistory/dao/JobHistoryMapperTest.java       |   6 +-
 .../service/JobHistoryQueryServiceTest.java        |   2 +-
 9 files changed, 55 insertions(+), 151 deletions(-)

diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
 
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
index 290e62fc0..65b37eeb1 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/JobHistoryMapper.java
@@ -47,7 +47,8 @@ public interface JobHistoryMapper {
       @Param("startDate") Date startDate,
       @Param("endDate") Date endDate,
       @Param("engineType") String engineType,
-      @Param("startId") Long startId);
+      @Param("startId") Long startId,
+      @Param("instances") String instances);
 
   List<JobHistory> searchWithUserCreator(
       @Param("id") Long id,
@@ -58,7 +59,8 @@ public interface JobHistoryMapper {
       @Param("startDate") Date startDate,
       @Param("endDate") Date endDate,
       @Param("engineType") String engineType,
-      @Param("startId") Long startId);
+      @Param("startId") Long startId,
+      @Param("instances") String instances);
 
   List<JobHistory> searchWithCreatorOnly(
       @Param("id") Long id,
@@ -69,7 +71,8 @@ public interface JobHistoryMapper {
       @Param("startDate") Date startDate,
       @Param("endDate") Date endDate,
       @Param("engineType") String engineType,
-      @Param("startId") Long startId);
+      @Param("startId") Long startId,
+      @Param("instances") String instances);
 
   Integer countUndoneTaskNoCreator(
       @Param("umUser") String username,
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
 
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
index 6eb48f122..3a76d8a76 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/dao/impl/JobHistoryMapper.xml
@@ -89,6 +89,7 @@
             <if test="startDate != null">and created_time >= #{startDate} AND 
created_time <![CDATA[<=]]> #{endDate}</if>
             <if test="status != null">and <foreach collection="status" 
item="element" close=")" separator="," open="status in 
(">#{element}</foreach></if>
             <if test="startId != null">and id >= #{startId}</if>
+            <if test="instances != null">and instances = #{instances}</if>
         </where>
         ORDER BY linkis_ps_job_history_group_history.created_time DESC
     </select>
@@ -117,6 +118,7 @@
                 and  LOCATE(CONCAT('"', #{userCreatorKey}, '":"', 
#{userCreatorValue}), labels) > 0
             </if>
             <if test="startId != null">and id >= #{startId}</if>
+            <if test="instances != null">and instances = #{instances}</if>
         </where>
         ORDER BY linkis_ps_job_history_group_history.created_time DESC
     </select>
@@ -133,6 +135,7 @@
                 and labels like CONCAT('%"', #{userCreatorKey}, '":"%-', 
#{creator}, '%')
             </if>
             <if test="startId != null">and id >= #{startId}</if>
+            <if test="instances != null">and instances = #{instances}</if>
         </where>
         ORDER BY linkis_ps_job_history_group_history.created_time DESC
     </select>
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
 
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
index 791bd6418..1c0669e09 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/main/java/org/apache/linkis/jobhistory/restful/api/QueryRestfulApi.java
@@ -123,6 +123,7 @@ public class QueryRestfulApi {
         @ApiImplicitParam(name = "creator", required = false, dataType = 
"String", value = "creator"),
         @ApiImplicitParam(name = "jobId", required = false, dataType = 
"String", value = "job id"),
         @ApiImplicitParam(name = "isAdminView", required = false, dataType = 
"Boolean", value = "is admin view"),
+        @ApiImplicitParam(name = "instance", required = false, dataType = 
"String", value = "instance"),
     })
     @RequestMapping(path = "/list", method = RequestMethod.GET)
     public Message list(
@@ -137,8 +138,8 @@ public class QueryRestfulApi {
                     String executeApplicationName,
             @RequestParam(value = "creator", required = false) String creator,
             @RequestParam(value = "proxyUser", required = false) String 
proxyUser,
-            @RequestParam(value = "isAdminView", required = false) Boolean 
isAdminView)
-            throws IOException, QueryException {
+            @RequestParam(value = "isAdminView", required = false) Boolean 
isAdminView,
+            @RequestParam(value = "instance", required = false) String 
instance) throws IOException, QueryException {
         String username = SecurityFilter.getLoginUsername(req);
         if (StringUtils.isEmpty(status)) {
             status = null;
@@ -172,10 +173,10 @@ public class QueryRestfulApi {
         Date sDate = new Date(startDate);
         Date eDate = new Date(endDate);
         if (sDate.getTime() == eDate.getTime()) {
-            Calendar instance = Calendar.getInstance();
-            instance.setTimeInMillis(endDate);
-            instance.add(Calendar.DAY_OF_MONTH, 1);
-            eDate = new Date(instance.getTime().getTime()); // todo check
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTimeInMillis(endDate);
+            calendar.add(Calendar.DAY_OF_MONTH, 1);
+            eDate = new Date(calendar.getTime().getTime()); // todo check
         }
         if (isAdminView == null) {
             isAdminView = false;
@@ -189,6 +190,13 @@ public class QueryRestfulApi {
                 }
             }
         }
+        if (StringUtils.isEmpty(instance)) {
+            instance = null;
+        }else{
+            if (!QueryUtils.checkNameValid(instance)) {
+                return Message.error("Invalid instances : " + instance);
+            }
+        }
         List<JobHistory> queryTasks = null;
         PageHelper.startPage(pageNow, pageSize);
         try {
@@ -201,7 +209,8 @@ public class QueryRestfulApi {
                             sDate,
                             eDate,
                             executeApplicationName,
-                            null);
+                            null,
+                            instance);
         } finally {
             PageHelper.clearPage();
         }
@@ -306,7 +315,7 @@ public class QueryRestfulApi {
                             sDate,
                             eDate,
                             engineType,
-                            queryCacheManager.getUndoneTaskMinId());
+                            queryCacheManager.getUndoneTaskMinId(), null);
         } finally {
             PageHelper.clearPage();
         }
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
 
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
index ff309ebaa..3c1b7a830 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/JobHistoryQueryService.java
@@ -38,7 +38,7 @@ public interface JobHistoryQueryService {
 
     JobHistory getJobHistoryByIdAndName(Long jobID, String userName);
 
-    List<JobHistory> search(Long jobId, String username, String creator, 
String status, Date sDate, Date eDate, String engineType, Long startJobId);
+    List<JobHistory> search(Long jobId, String username, String creator, 
String status, Date sDate, Date eDate, String engineType, Long startJobId, 
String instance);
 
     Integer countUndoneTasks(String username, String creator, Date sDate, Date 
eDate, String engineType, Long startJobId);
 
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
 
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
index 73e58b3ea..ef228c80c 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/service/impl/JobHistoryQueryServiceImpl.scala
@@ -254,19 +254,29 @@ class JobHistoryQueryServiceImpl extends 
JobHistoryQueryService with Logging {
   }
 
   override def search(
-      jobId: java.lang.Long,
+      jobId: lang.Long,
       username: String,
       status: String,
       creator: String,
       sDate: Date,
       eDate: Date,
       engineType: String,
-      startJobId: java.lang.Long
+      startJobId: lang.Long,
+      instance: String
   ): util.List[JobHistory] = {
 
     val split: util.List[String] = if (status != null) 
status.split(",").toList.asJava else null
     val result = if (StringUtils.isBlank(creator)) {
-      jobHistoryMapper.search(jobId, username, split, sDate, eDate, 
engineType, startJobId)
+      jobHistoryMapper.search(
+        jobId,
+        username,
+        split,
+        sDate,
+        eDate,
+        engineType,
+        startJobId,
+        instance
+      )
     } else if (StringUtils.isBlank(username)) {
       val fakeLabel = new UserCreatorLabel
       jobHistoryMapper.searchWithCreatorOnly(
@@ -278,7 +288,8 @@ class JobHistoryQueryServiceImpl extends 
JobHistoryQueryService with Logging {
         sDate,
         eDate,
         engineType,
-        startJobId
+        startJobId,
+        instance
       )
     } else {
       val fakeLabel = new UserCreatorLabel
@@ -298,7 +309,8 @@ class JobHistoryQueryServiceImpl extends 
JobHistoryQueryService with Logging {
         sDate,
         eDate,
         engineType,
-        startJobId
+        startJobId,
+        instance
       )
     }
     result
@@ -320,7 +332,7 @@ class JobHistoryQueryServiceImpl extends 
JobHistoryQueryService with Logging {
 
   override def searchOne(jobId: lang.Long, sDate: Date, eDate: Date): 
JobHistory = {
     Iterables.getFirst(
-      jobHistoryMapper.search(jobId, null, null, sDate, eDate, null, null), {
+      jobHistoryMapper.search(jobId, null, null, sDate, eDate, null, null, 
null), {
         val queryJobHistory = new QueryJobHistory
         queryJobHistory.setId(jobId)
         queryJobHistory.setStatus(TaskStatus.Inited.toString)
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
 
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
index 340b681bb..7ae3908a3 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/main/scala/org/apache/linkis/jobhistory/util/QueryUtils.scala
@@ -50,7 +50,9 @@ object QueryUtils extends Logging {
   private val CODE_SPLIT = ";"
   private val LENGTH_SPLIT = "#"
   private val NAME_REGEX = "^[a-zA-Z\\-\\d_\\.]+$"
+  private val INSTANCE_NAME_REGEX = "^[a-zA-Z\\-\\d_\\.:]+$"
   private val nameRegexPattern = Pattern.compile(NAME_REGEX)
+  private val instanceNameRegexPattern = Pattern.compile(INSTANCE_NAME_REGEX)
 
   private val dateFormatLocal = new ThreadLocal[SimpleDateFormat]() {
     override protected def initialValue = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss.SSS")
@@ -168,4 +170,8 @@ object QueryUtils extends Logging {
     nameRegexPattern.matcher(param).find()
   }
 
+  def checkInstanceNameValid(param: String): Boolean = {
+    instanceNameRegexPattern.matcher(param).find()
+  }
+
 }
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobDetailMapperTest.java
 
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobDetailMapperTest.java
deleted file mode 100644
index d862c11f5..000000000
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobDetailMapperTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.linkis.jobhistory.dao;
-
-import org.apache.linkis.jobhistory.entity.JobDetail;
-
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.Date;
-import java.util.List;
-
-import org.h2.tools.Server;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.*;
-
-class JobDetailMapperTest extends BaseDaoTest {
-
-  private static final Logger logger = 
LoggerFactory.getLogger(JobDetailMapperTest.class);
-
-  @Autowired JobDetailMapper jobDetailMapper;
-
-  /**
-   * User-created test data, if it is an auto-increment id, it should not be 
assigned CURD should be
-   * based on the data created by this method insert
-   *
-   * @return JobDetail
-   */
-  private JobDetail insertOne() {
-    // insertOne
-    JobDetail jobDetail = new JobDetail();
-    jobDetail.setJobHistoryId(0L);
-    jobDetail.setResultLocation("/test/location");
-    jobDetail.setResultArraySize(2);
-    jobDetail.setExecutionContent("excution content");
-    jobDetail.setJobGroupInfo("test");
-    jobDetail.setCreatedTime(new Date());
-    jobDetail.setUpdatedTime(new Date());
-    jobDetail.setStatus("success");
-    jobDetail.setPriority(0);
-
-    jobDetailMapper.insertJobDetail(jobDetail);
-    return jobDetail;
-  }
-
-  @BeforeAll
-  @DisplayName("Each unit test method is executed once before execution")
-  protected static void beforeAll() throws Exception {
-    // Start the console of h2 to facilitate viewing of h2 data
-    Server.createWebServer("-web", "-webAllowOthers", "-webPort", 
"8082").start();
-  }
-
-  @AfterAll
-  @DisplayName("Each unit test method is executed once before execution")
-  protected static void afterAll() throws Exception {}
-
-  @Test
-  void testSelectJobDetailByJobHistoryId() {
-    JobDetail jobDetail = insertOne();
-    List<JobDetail> result =
-        
jobDetailMapper.selectJobDetailByJobHistoryId(jobDetail.getJobHistoryId());
-    assertNotEquals(result.size(), 0);
-  }
-
-  @Test
-  void testSelectJobDetailByJobDetailId() {
-    JobDetail jobDetail = insertOne();
-    JobDetail result = 
jobDetailMapper.selectJobDetailByJobDetailId(jobDetail.getId());
-    assertNotNull(result);
-  }
-
-  @Test
-  void testInsertJobDetail() {
-    JobDetail jobDetail = insertOne();
-    assertTrue(jobDetail.getId() > 0);
-  }
-
-  @Test
-  void testUpdateJobDetail() {
-
-    JobDetail expectedJobDetail = insertOne();
-    expectedJobDetail.setResultLocation("modify " + 
expectedJobDetail.getResultLocation());
-    expectedJobDetail.setResultArraySize(10);
-    expectedJobDetail.setExecutionContent("modify " + 
expectedJobDetail.getExecutionContent());
-    expectedJobDetail.setJobGroupInfo("modify " + 
expectedJobDetail.getJobGroupInfo());
-    expectedJobDetail.setCreatedTime(new Date());
-    expectedJobDetail.setUpdatedTime(new Date());
-    expectedJobDetail.setStatus("modify " + expectedJobDetail.getStatus());
-    expectedJobDetail.setPriority(1);
-
-    jobDetailMapper.updateJobDetail(expectedJobDetail);
-
-    JobDetail actualJobDetail =
-        
jobDetailMapper.selectJobDetailByJobDetailId(expectedJobDetail.getId());
-
-    //        assertEquals(expectedJobDetail, actualJobDetail);
-    ////       assertThat(actual, samePropertyValuesAs(expected));
-    // Determine whether the property values of the two objects are exactly 
the same
-    
assertThat(actualJobDetail).usingRecursiveComparison().isEqualTo(expectedJobDetail);
-  }
-
-  @Test
-  void testSelectJobDetailStatusForUpdateByJobDetailId() {
-    JobDetail jobDetail = insertOne();
-    String result = 
jobDetailMapper.selectJobDetailStatusForUpdateByJobDetailId(jobDetail.getId());
-    assertNotNull(result);
-  }
-}
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
 
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
index edf235864..7a9da1d10 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/dao/JobHistoryMapperTest.java
@@ -109,7 +109,7 @@ public class JobHistoryMapperTest extends BaseDaoTest {
     List<String> status = new ArrayList<>();
     status.add("Succeed");
     List<JobHistory> histories =
-        jobHistoryMapper.search(1L, "hadoop", status, null, null, "spark", 1L);
+        jobHistoryMapper.search(1L, "hadoop", status, null, null, "spark", 1L, 
null);
     Assertions.assertTrue(histories.size() > 0);
   }
 
@@ -121,7 +121,7 @@ public class JobHistoryMapperTest extends BaseDaoTest {
     status.add("Succeed");
     List<JobHistory> histories =
         jobHistoryMapper.searchWithUserCreator(
-            1L, "hadoop", null, null, status, null, null, "spark", 1L);
+            1L, "hadoop", null, null, status, null, null, "spark", 1L, null);
     Assertions.assertTrue(histories.size() > 0);
   }
 
@@ -133,7 +133,7 @@ public class JobHistoryMapperTest extends BaseDaoTest {
     status.add("Succeed");
     List<JobHistory> histories =
         jobHistoryMapper.searchWithCreatorOnly(
-            1L, "hadoop", null, "hadoop", status, null, null, "spark", 1L);
+            1L, "hadoop", null, "hadoop", status, null, null, "spark", 1L, 
null);
     Assertions.assertTrue(histories.size() > 0);
   }
 
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
 
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
index 810c30e85..576ffa6f5 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/test/java/org/apache/linkis/jobhistory/service/JobHistoryQueryServiceTest.java
@@ -106,7 +106,7 @@ public class JobHistoryQueryServiceTest {
   public void searchTest() {
     List<JobHistory> histories =
         jobRequestQueryService.search(
-            1L, "hadoop", "hadoop", "Succeed", new Date(), new Date(), 
"spark", 1L);
+            1L, "hadoop", "hadoop", "Succeed", new Date(), new Date(), 
"spark", 1L, null);
     Assertions.assertTrue(histories.size() == 0);
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to