package org.fastcatsearch.http.action.management.common;
import java.io.Writer;
import java.util.List;
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/all-task-state")
public class GetAllTaskStateAction extends AuthAction {
@Override
public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception {
String state = request.getParameter("state", TaskState.STATE_RUNNING);
//해당노드이면 그대로 수행한다.
TaskStateService taskStateService = ServiceManager.getInstance().getService(TaskStateService.class);
List<Entry<TaskKey, TaskState>> taskEntryList = taskStateService.getTaskEntryList(null);
Writer writer = response.getWriter();
ResponseWriter resultWriter = getDefaultResponseWriter(writer);
resultWriter.object().key("taskState").array();
if(taskEntryList != null){
for(Entry<TaskKey, TaskState> entry : taskEntryList){
TaskKey taskKey = entry.getKey();
TaskState taskState = entry.getValue();
if(state.equalsIgnoreCase("ALL")) {
//모두 허용.
} else if(!state.equalsIgnoreCase(taskState.getState())) {
continue;
}
resultWriter.object()
.key("summary").value(taskKey.getSummary() + " " + taskState.getSummary())
.key("isScheduled").value(taskState.isScheduled())
.key("progress").value(taskState.getProgressRate())
.key("state").value(taskState.getState())
.key("step").value(taskState.getStep())
.key("startTime").value(taskState.getStartTime())
.key("endTime").value(taskState.getStartTime())
.key("elapsed").value(taskState.getElapsedTime())
.endObject();
}
}
resultWriter.endArray().endObject();
resultWriter.done();
}
}