package com.github.ltsopensource.admin.web.view; import com.github.ltsopensource.admin.cluster.BackendAppContext; import com.github.ltsopensource.admin.web.vo.NodeInfo; import com.github.ltsopensource.core.cluster.NodeType; import com.github.ltsopensource.core.commons.utils.CollectionUtils; import com.github.ltsopensource.core.commons.utils.DateUtils; import com.github.ltsopensource.core.json.JSON; import com.github.ltsopensource.queue.domain.NodeGroupPo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import java.util.*; /** * @author Robert HG (254963746@qq.com) on 8/22/15. */ @Controller public class MonitorView { @Autowired private BackendAppContext appContext; @RequestMapping("monitor/jobtracker-monitor") public String jobTrackerMonitor(Model model) { initTimeRange(model); List<String> taskTrackers = appContext.getBackendJobTrackerMAccess().getJobTrackers(); model.addAttribute("jobTrackers", taskTrackers); return "monitor/jobtrackerMonitor"; } @RequestMapping("monitor/tasktracker-monitor") public String taskTrackerMonitor(Model model) { initTimeRange(model); List<NodeGroupPo> nodeGroups = appContext.getNodeGroupStore().getNodeGroup(NodeType.TASK_TRACKER); List<NodeInfo> nodeInfos = appContext.getBackendTaskTrackerMAccess().getTaskTrackers(); setGroupIdMap(model, nodeGroups, nodeInfos); return "monitor/tasktrackerMonitor"; } @RequestMapping("monitor/jobClient-monitor") public String jobClientMonitor(Model model) { initTimeRange(model); List<NodeGroupPo> nodeGroups = appContext.getNodeGroupStore().getNodeGroup(NodeType.JOB_CLIENT); List<NodeInfo> nodeInfos = appContext.getBackendJobClientMAccess().getJobClients(); setGroupIdMap(model, nodeGroups, nodeInfos); return "monitor/jobClientMonitor"; } private void initTimeRange(Model model) { Date endDate = new Date(); model.addAttribute("startTime", DateUtils.formatYMD_HMS(DateUtils.addHour(endDate, -3))); model.addAttribute("endTime", DateUtils.formatYMD_HMS(endDate)); } private void setGroupIdMap(Model model, List<NodeGroupPo> nodeGroups, List<NodeInfo> nodeInfos) { Map<String, Set<String>> groupIdMap = new HashMap<String, Set<String>>(); if (CollectionUtils.isNotEmpty(nodeGroups)) { for (NodeGroupPo nodeGroup : nodeGroups) { groupIdMap.put(nodeGroup.getName(), new HashSet<String>()); } if (CollectionUtils.isNotEmpty(nodeInfos)) { for (NodeInfo nodeInfo : nodeInfos) { Set<String> identities = groupIdMap.get(nodeInfo.getNodeGroup()); if (identities == null) { identities = new HashSet<String>(); groupIdMap.put(nodeInfo.getNodeGroup(), identities); } identities.add(nodeInfo.getIdentity()); } } } model.addAttribute("groupIdMap", JSON.toJSONString(groupIdMap)); } }