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;
+    }
 }

Reply via email to