Add input suggestions API for page Job trace
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobExecutionLogRepository.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobExecutionLogRepository.java
index e2726bc..32925f6 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobExecutionLogRepository.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobExecutionLogRepository.java
@@ -20,6 +20,30 @@
import org.apache.shardingsphere.elasticjob.lite.ui.domain.JobExecutionLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
public interface JobExecutionLogRepository extends JpaRepository<JobExecutionLog, String>, JpaSpecificationExecutor<JobExecutionLog> {
+
+ /**
+ * Find all job names with specific prefix.
+ *
+ * @param prefix job name prefix
+ * @return matched job names
+ */
+ @SuppressWarnings("SpringDataRepositoryMethodReturnTypeInspection")
+ @Query("select distinct l.jobName from JobExecutionLog l where l.jobName like :prefix%")
+ List<String> findJobNameByJobNameLike(@Param("prefix") String prefix);
+
+ /**
+ * Find all IP addresses with specific prefix.
+ *
+ * @param prefix ip prefix
+ * @return matched ip
+ */
+ @SuppressWarnings("SpringDataRepositoryMethodReturnTypeInspection")
+ @Query("select distinct l.ip from JobExecutionLog l where l.ip like :prefix%")
+ List<String> findIpByIpLike(@Param("prefix") String prefix);
}
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobExecutionLog.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobExecutionLog.java
index c8c5671..de03b48 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobExecutionLog.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobExecutionLog.java
@@ -23,10 +23,12 @@
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.Table;
import java.util.Date;
@Data
-@Entity(name = "JOB_EXECUTION_LOG")
+@Entity
+@Table(name = "JOB_EXECUTION_LOG")
public class JobExecutionLog {
@Id
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java
index cf30c50..2630de8 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java
@@ -17,12 +17,14 @@
package org.apache.shardingsphere.elasticjob.lite.ui.service;
-import org.apache.shardingsphere.elasticjob.tracing.event.JobExecutionEvent;
-import org.apache.shardingsphere.elasticjob.tracing.event.JobStatusTraceEvent;
import org.apache.shardingsphere.elasticjob.lite.ui.dto.request.FindJobExecutionEventsRequest;
import org.apache.shardingsphere.elasticjob.lite.ui.dto.request.FindJobStatusTraceEventsRequest;
+import org.apache.shardingsphere.elasticjob.tracing.event.JobExecutionEvent;
+import org.apache.shardingsphere.elasticjob.tracing.event.JobStatusTraceEvent;
import org.springframework.data.domain.Page;
+import java.util.List;
+
/**
* Event trace history service.
*/
@@ -37,6 +39,22 @@
Page<JobExecutionEvent> findJobExecutionEvents(FindJobExecutionEventsRequest findJobExecutionEventsRequest);
/**
+ * Find job names with specific prefix.
+ *
+ * @param jobNamePrefix job name prefix
+ * @return matched job names
+ */
+ List<String> findJobNamesInExecutionLog(String jobNamePrefix);
+
+ /**
+ * Find ip addresses with specific prefix.
+ *
+ * @param ipPrefix ip prefix
+ * @return matched ip addresses
+ */
+ List<String> findIpInExecutionLog(String ipPrefix);
+
+ /**
* Find job status trace events.
*
* @param findJobStatusTraceEventsRequest query params
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java
index e154907..5c3c234 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java
@@ -73,6 +73,16 @@
}
@Override
+ public List<String> findJobNamesInExecutionLog(final String jobNamePrefix) {
+ return jobExecutionLogRepository.findJobNameByJobNameLike(jobNamePrefix);
+ }
+
+ @Override
+ public List<String> findIpInExecutionLog(final String ipPrefix) {
+ return jobExecutionLogRepository.findIpByIpLike(ipPrefix);
+ }
+
+ @Override
public Page<JobStatusTraceEvent> findJobStatusTraceEvents(final FindJobStatusTraceEventsRequest findJobStatusTraceEventsRequest) {
Example<JobStatusTraceLog> jobStatusTraceLogExample = getExample(findJobStatusTraceEventsRequest, JobStatusTraceLog.class);
Specification<JobStatusTraceLog> specification = getSpecWithExampleAndDate(jobStatusTraceLogExample, findJobStatusTraceEventsRequest.getStart(),
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java
index 687d38e..19e5de8 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java
@@ -27,15 +27,19 @@
import org.apache.shardingsphere.elasticjob.lite.ui.web.response.ResponseResultUtil;
import org.apache.shardingsphere.elasticjob.tracing.event.JobExecutionEvent;
import org.apache.shardingsphere.elasticjob.tracing.event.JobStatusTraceEvent;
-import org.aspectj.lang.annotation.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+import java.util.Optional;
+
/**
* Event trace history RESTful API.
*/
@@ -62,6 +66,27 @@
}
/**
+ * Find all job names with specific prefix.
+ *
+ * @param jobNamePrefix job name prefix
+ * @return matched job names
+ */
+ @GetMapping(value = {"/execution/jobNames", "/execution/jobNames/{jobNamePrefix}"})
+ public ResponseResult<List<String>> findJobNamesByPrefix(@PathVariable(required = false) final String jobNamePrefix) {
+ return ResponseResultUtil.build(eventTraceHistoryService.findJobNamesInExecutionLog(Optional.ofNullable(jobNamePrefix).orElse("")));
+ }
+
+ /**
+ * Find all ip addresses with specific prefix.
+ * @param ipPrefix ip prefix
+ * @return matched ip addresses
+ */
+ @GetMapping(value = {"/execution/ip", "/execution/ip/{ipPrefix}"})
+ public ResponseResult<List<String>> findIpByPrefix(@PathVariable(required = false) final String ipPrefix) {
+ return ResponseResultUtil.build(eventTraceHistoryService.findIpInExecutionLog(Optional.ofNullable(ipPrefix).orElse("")));
+ }
+
+ /**
* Find job status trace events.
*
* @param requestParams query criteria
@@ -75,6 +100,6 @@
@ModelAttribute
private void initDataSource() {
- eventTraceDataSourceConfigurationService.loadActivated().ifPresent(config -> SessionEventTraceDataSourceConfiguration.setDataSourceConfiguration(config));
+ eventTraceDataSourceConfigurationService.loadActivated().ifPresent(SessionEventTraceDataSourceConfiguration::setDataSourceConfiguration);
}
}