You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by bi...@apache.org on 2018/02/28 15:53:07 UTC
[kylin] branch 2.3.x updated: KYLIN-3265 Add jobSearchMode as a
filter condition for jobs api
This is an automated email from the ASF dual-hosted git repository.
billyliu pushed a commit to branch 2.3.x
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/2.3.x by this push:
new 5442644 KYLIN-3265 Add jobSearchMode as a filter condition for jobs api
5442644 is described below
commit 5442644c6387386755bf44fb86721a9c12a1e88f
Author: shaofengshi <sh...@apache.org>
AuthorDate: Sat Feb 24 11:52:03 2018 +0800
KYLIN-3265 Add jobSearchMode as a filter condition for jobs api
Signed-off-by: shaofengshi <sh...@apache.org>
---
.../kylin/rest/controller/JobController.java | 14 +++++--
.../apache/kylin/rest/request/JobListRequest.java | 10 +++++
.../org/apache/kylin/rest/service/JobService.java | 48 +++++++++++-----------
.../apache/kylin/rest/service/JobServiceTest.java | 12 +++---
4 files changed, 50 insertions(+), 34 deletions(-)
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
index ca3be99..1bf6ab6 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
@@ -20,7 +20,6 @@ package org.apache.kylin.rest.controller;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -60,7 +59,7 @@ public class JobController extends BasicController {
@ResponseBody
public List<JobInstance> list(JobListRequest jobRequest) {
- List<JobInstance> jobInstanceList = Collections.emptyList();
+ List<JobInstance> jobInstanceList;
List<JobStatusEnum> statusList = new ArrayList<JobStatusEnum>();
if (null != jobRequest.getStatus()) {
@@ -74,9 +73,18 @@ public class JobController extends BasicController {
timeFilter = JobTimeFilterEnum.getByCode(jobRequest.getTimeFilter());
}
+ JobService.JobSearchMode jobSearchMode = JobService.JobSearchMode.CUBING_ONLY;
+ if (null != jobRequest.getJobSearchMode()) {
+ try {
+ jobSearchMode = JobService.JobSearchMode.valueOf(jobRequest.getJobSearchMode());
+ } catch (IllegalArgumentException e) {
+ logger.error("Invalid value for JobSearchMode: '" + jobRequest.getJobSearchMode() + "', skip it.", e);
+ }
+ }
+
try {
jobInstanceList = jobService.searchJobs(jobRequest.getCubeName(), jobRequest.getProjectName(), statusList,
- jobRequest.getLimit(), jobRequest.getOffset(), timeFilter);
+ jobRequest.getLimit(), jobRequest.getOffset(), timeFilter, jobSearchMode);
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
throw new InternalErrorException(e);
diff --git a/server-base/src/main/java/org/apache/kylin/rest/request/JobListRequest.java b/server-base/src/main/java/org/apache/kylin/rest/request/JobListRequest.java
index 51160d2..1dc4562 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/request/JobListRequest.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/request/JobListRequest.java
@@ -32,6 +32,7 @@ public class JobListRequest {
private Integer offset;
private Integer limit;
private Integer timeFilter;
+ private String jobSearchMode;
public JobListRequest() {
}
@@ -83,4 +84,13 @@ public class JobListRequest {
public void setTimeFilter(Integer timeFilter) {
this.timeFilter = timeFilter;
}
+
+ public String getJobSearchMode() {
+ return jobSearchMode;
+ }
+
+ public void setJobSearchMode(String jobSearchMode) {
+ this.jobSearchMode = jobSearchMode;
+ }
+
}
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
index 5f80b84..6afc568 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
@@ -18,18 +18,12 @@
package org.apache.kylin.rest.service;
-import java.io.IOException;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
-
-import javax.annotation.Nullable;
-
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import org.apache.commons.lang3.StringUtils;
import org.apache.directory.api.util.Strings;
import org.apache.kylin.common.KylinConfig;
@@ -78,12 +72,16 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
+import javax.annotation.Nullable;
+import java.io.IOException;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
/**
* @author ysong1
@@ -633,10 +631,10 @@ public class JobService extends BasicService implements InitializingBean {
*/
public List<JobInstance> searchJobs(final String cubeNameSubstring, final String projectName,
final List<JobStatusEnum> statusList, final Integer limitValue, final Integer offsetValue,
- final JobTimeFilterEnum timeFilter) {
+ final JobTimeFilterEnum timeFilter, JobSearchMode jobSearchMode) {
Integer limit = (null == limitValue) ? 30 : limitValue;
Integer offset = (null == offsetValue) ? 0 : offsetValue;
- List<JobInstance> jobs = searchJobsByCubeName(cubeNameSubstring, projectName, statusList, timeFilter);
+ List<JobInstance> jobs = searchJobsByCubeName(cubeNameSubstring, projectName, statusList, timeFilter, jobSearchMode);
Collections.sort(jobs);
@@ -653,11 +651,11 @@ public class JobService extends BasicService implements InitializingBean {
public List<JobInstance> searchJobsByCubeName(final String cubeNameSubstring, final String projectName,
final List<JobStatusEnum> statusList, final JobTimeFilterEnum timeFilter) {
- return searchJobsByCubeName(cubeNameSubstring, projectName, statusList, timeFilter, JobSearchMode.ALL);
+ return searchJobsByCubeName(cubeNameSubstring, projectName, statusList, timeFilter, JobSearchMode.CUBING_ONLY);
}
public List<JobInstance> searchJobsByCubeName(final String cubeNameSubstring, final String projectName,
- final List<JobStatusEnum> statusList, final JobTimeFilterEnum timeFilter, JobSearchMode jobSearchMode) {
+ final List<JobStatusEnum> statusList, final JobTimeFilterEnum timeFilter, final JobSearchMode jobSearchMode) {
return innerSearchJobs(cubeNameSubstring, null, projectName, statusList, timeFilter, jobSearchMode);
}
@@ -675,16 +673,16 @@ public class JobService extends BasicService implements InitializingBean {
final List<JobStatusEnum> statusList, final JobTimeFilterEnum timeFilter, JobSearchMode jobSearchMode) {
List<JobInstance> result = Lists.newArrayList();
switch (jobSearchMode) {
- case CUBING_ONLY:
+ case ALL:
result.addAll(innerSearchCubingJobs(cubeName, jobName, projectName, statusList, timeFilter));
+ result.addAll(innerSearchCheckpointJobs(cubeName, jobName, projectName, statusList, timeFilter));
break;
case CHECKPOINT_ONLY:
result.addAll(innerSearchCheckpointJobs(cubeName, jobName, projectName, statusList, timeFilter));
break;
- case ALL:
+ case CUBING_ONLY:
default:
result.addAll(innerSearchCubingJobs(cubeName, jobName, projectName, statusList, timeFilter));
- result.addAll(innerSearchCheckpointJobs(cubeName, jobName, projectName, statusList, timeFilter));
}
return result;
}
diff --git a/server/src/test/java/org/apache/kylin/rest/service/JobServiceTest.java b/server/src/test/java/org/apache/kylin/rest/service/JobServiceTest.java
index 65ad7fb..a617b7c 100644
--- a/server/src/test/java/org/apache/kylin/rest/service/JobServiceTest.java
+++ b/server/src/test/java/org/apache/kylin/rest/service/JobServiceTest.java
@@ -18,11 +18,6 @@
package org.apache.kylin.rest.service;
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.Collections;
-import java.util.List;
-
import org.apache.kylin.engine.mr.CubingJob;
import org.apache.kylin.job.constant.JobTimeFilterEnum;
import org.apache.kylin.job.exception.ExecuteException;
@@ -40,6 +35,11 @@ import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.List;
+
/**
* @author xduo
*/
@@ -60,7 +60,7 @@ public class JobServiceTest extends ServiceTestBase {
Assert.assertNotNull(jobService.getDataModelManager());
Assert.assertNotNull(QueryConnection.getConnection(ProjectInstance.DEFAULT_PROJECT_NAME));
Assert.assertNull(jobService.getJobInstance("job_not_exist"));
- Assert.assertNotNull(jobService.searchJobs(null, null, null, 0, 0, JobTimeFilterEnum.ALL));
+ Assert.assertNotNull(jobService.searchJobs(null, null, null, 0, 0, JobTimeFilterEnum.ALL, JobService.JobSearchMode.ALL));
}
@Test
--
To stop receiving notification emails like this one, please contact
billyliu@apache.org.