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 <shaofeng...@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 <shaofeng...@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 billy...@apache.org.