package org.fastcatsearch.http.action.management.common;
import java.io.Writer;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.fastcatsearch.http.ActionMapping;
import org.fastcatsearch.http.action.ActionRequest;
import org.fastcatsearch.http.action.ActionResponse;
import org.fastcatsearch.http.action.AuthAction;
import org.fastcatsearch.job.state.TaskKey;
import org.fastcatsearch.job.state.TaskState;
import org.fastcatsearch.job.state.TaskStateService;
import org.fastcatsearch.service.ServiceManager;
import org.fastcatsearch.util.ResponseWriter;
@ActionMapping("/management/common/node-task-state")
public class GetNodeTaskStateAction extends AuthAction {
@Override
public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception {
String nodeId = request.getParameter("nodeId");
TaskStateService taskStateService = ServiceManager.getInstance().getService(TaskStateService.class);
Map<TaskKey, TaskState> taskMap = taskStateService.getNodeTaskMap(nodeId);
Writer writer = response.getWriter();
ResponseWriter resultWriter = getDefaultResponseWriter(writer);
resultWriter.object().key("taskState")
.array();
if(taskMap != null) {
Iterator<Map.Entry<TaskKey,TaskState>> iterator = taskMap.entrySet().iterator();
while(iterator.hasNext()) {
Entry<TaskKey,TaskState> entry = iterator.next();
TaskKey taskKey = entry.getKey();
TaskState taskState = entry.getValue();
resultWriter.object()
.key("summary").value(taskKey.getSummary())
.key("isScheduled").value(taskState.isScheduled())
.key("state").value(taskState.getState())
.key("step").value(taskState.getStep())
.key("startTime").value(taskState.getStartTime())
.key("endTime").value(taskState.getEndTime())
.key("elapsed").value(taskState.getElapsedTime());
resultWriter.endObject();
}
}
resultWriter.endArray().endObject();
resultWriter.done();
}
}