Repository: incubator-griffin Updated Branches: refs/heads/master 8fffb4732 -> 6b2ce3553
add api add a api to get measures with job details group by organization Author: He Wang <[email protected]> Closes #161 from whhe/master. Project: http://git-wip-us.apache.org/repos/asf/incubator-griffin/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-griffin/commit/6b2ce355 Tree: http://git-wip-us.apache.org/repos/asf/incubator-griffin/tree/6b2ce355 Diff: http://git-wip-us.apache.org/repos/asf/incubator-griffin/diff/6b2ce355 Branch: refs/heads/master Commit: 6b2ce35533f5cd6e1f54dc47783e7f62f4224870 Parents: 8fffb47 Author: He Wang <[email protected]> Authored: Thu Nov 2 17:40:00 2017 +0800 Committer: Lionel Liu <[email protected]> Committed: Thu Nov 2 17:40:00 2017 +0800 ---------------------------------------------------------------------- .../org/apache/griffin/core/job/JobService.java | 2 ++ .../apache/griffin/core/job/JobServiceImpl.java | 18 ++++++++-- .../core/measure/MeasureOrgController.java | 10 ++++++ .../griffin/core/measure/MeasureOrgService.java | 3 ++ .../core/measure/MeasureOrgServiceImpl.java | 37 +++++++++++++++++--- 5 files changed, 63 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b2ce355/service/src/main/java/org/apache/griffin/core/job/JobService.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/JobService.java b/service/src/main/java/org/apache/griffin/core/job/JobService.java index 23f8a82..ca6f2f9 100644 --- a/service/src/main/java/org/apache/griffin/core/job/JobService.java +++ b/service/src/main/java/org/apache/griffin/core/job/JobService.java @@ -40,5 +40,7 @@ public interface JobService { List<JobInstance> findInstancesOfJob(String group, String name, int page, int size); + Map<String, List<Map<String, Serializable>>> getJobDetailsGroupByMeasureId(); + JobHealth getHealthInfo(); } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b2ce355/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java index e1aab82..6e76658 100644 --- a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java +++ b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java @@ -29,6 +29,7 @@ import org.apache.griffin.core.job.entity.JobRequestBody; import org.apache.griffin.core.job.entity.LivySessionStates; import org.apache.griffin.core.job.repo.JobInstanceRepo; import org.apache.griffin.core.measure.entity.Measure; +import org.apache.griffin.core.measure.repo.MeasureRepo; import org.apache.griffin.core.util.GriffinOperationMessage; import org.apache.griffin.core.util.JsonUtil; import org.quartz.*; @@ -242,8 +243,8 @@ public class JobServiceImpl implements JobService { * 2. set these jobs as deleted status * * @param group job group name - * @param name job name - * @return custom information + * @param name job name + * @return custom information */ @Override public GriffinOperationMessage deleteJob(String group, String name) { @@ -385,4 +386,17 @@ public class JobServiceImpl implements JobService { } return new JobHealth(jobCount - notHealthyCount, jobCount); } + + @Override + public Map<String, List<Map<String, Serializable>>> getJobDetailsGroupByMeasureId() { + Map<String, List<Map<String, Serializable>>> jobDetailsMap = new HashMap<>(); + List<Map<String, Serializable>> jobInfoList = getAliveJobs(); + for (Map<String, Serializable> jobInfo : jobInfoList) { + String measureId = (String) jobInfo.get("measureId"); + List<Map<String, Serializable>> jobs = jobDetailsMap.getOrDefault(measureId, new ArrayList<Map<String, Serializable>>()); + jobs.add(jobInfo); + jobDetailsMap.put(measureId, jobs); + } + return jobDetailsMap; + } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b2ce355/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgController.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgController.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgController.java index 499ee8e..abe36d9 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgController.java +++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgController.java @@ -19,12 +19,14 @@ under the License. package org.apache.griffin.core.measure; +import org.apache.griffin.core.job.JobService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import java.io.Serializable; import java.util.List; import java.util.Map; @@ -35,6 +37,9 @@ public class MeasureOrgController { @Autowired private MeasureOrgService measureOrgService; + @Autowired + private JobService jobService; + @RequestMapping(value = "/org", method = RequestMethod.GET) public List<String> getOrgs() { return measureOrgService.getOrgs(); @@ -54,4 +59,9 @@ public class MeasureOrgController { public Map<String, List<String>> getMeasureNamesGroupByOrg() { return measureOrgService.getMeasureNamesGroupByOrg(); } + + @RequestMapping(value = "/org/measure/jobs", method = RequestMethod.GET) + public Map<String, Map<String, List<Map<String, Serializable>>>> getMeasureWithJobsGroupByOrg() { + return measureOrgService.getMeasureWithJobDetailsGroupByOrg(jobService.getJobDetailsGroupByMeasureId()); + } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b2ce355/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java index 8b1eb08..f45c636 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java +++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgService.java @@ -19,6 +19,7 @@ under the License. package org.apache.griffin.core.measure; +import java.io.Serializable; import java.util.List; import java.util.Map; @@ -29,4 +30,6 @@ public interface MeasureOrgService { List<String> getMetricNameListByOrg(String org); Map<String, List<String>> getMeasureNamesGroupByOrg(); + + Map<String, Map<String, List<Map<String, Serializable>>>> getMeasureWithJobDetailsGroupByOrg(Map<String, List<Map<String, Serializable>>> jobDetailsGroupByMeasure); } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b2ce355/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgServiceImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgServiceImpl.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgServiceImpl.java index 05f8eda..9b08bee 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgServiceImpl.java +++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureOrgServiceImpl.java @@ -19,10 +19,13 @@ under the License. package org.apache.griffin.core.measure; +import org.apache.griffin.core.measure.entity.Measure; import org.apache.griffin.core.measure.repo.MeasureRepo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.Serializable; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -46,12 +49,36 @@ public class MeasureOrgServiceImpl implements MeasureOrgService { @Override public Map<String, List<String>> getMeasureNamesGroupByOrg() { Map<String, List<String>> orgWithMetricsMap = new HashMap<>(); - List<String> orgList = measureRepo.findOrganizations(); - for (String org : orgList) { - if (org != null) { - orgWithMetricsMap.put(org, measureRepo.findNameByOrganization(org)); - } + List<Measure> measures = measureRepo.findByDeleted(false); + if (measures == null) { + return null; + } + for (Measure measure : measures) { + String orgName = measure.getOrganization(); + String measureName = measure.getName(); + List<String> measureList = orgWithMetricsMap.getOrDefault(orgName, new ArrayList<String>()); + measureList.add(measureName); + orgWithMetricsMap.put(orgName, measureList); } return orgWithMetricsMap; } + + @Override + public Map<String, Map<String, List<Map<String, Serializable>>>> getMeasureWithJobDetailsGroupByOrg(Map<String, List<Map<String, Serializable>>> jobDetails) { + Map<String, Map<String, List<Map<String, Serializable>>>> result = new HashMap<>(); + List<Measure> measures = measureRepo.findByDeleted(false); + if (measures == null) { + return null; + } + for (Measure measure : measures) { + String orgName = measure.getOrganization(); + String measureName = measure.getName(); + String measureId = measure.getId().toString(); + List<Map<String, Serializable>> jobList = jobDetails.get(measureId); + Map<String, List<Map<String, Serializable>>> measureWithJobs = result.getOrDefault(orgName, new HashMap<>()); + measureWithJobs.put(measureName, jobList); + result.put(orgName, measureWithJobs); + } + return result; + } }
