package org.fastcatsearch.http.action.management.indexing; import java.io.Writer; import java.util.List; import java.util.Map.Entry; import org.fastcatsearch.http.ActionAuthority; 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.IndexingTaskKey; import org.fastcatsearch.job.state.IndexingTaskState; 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(value = "/indexing/all-state", authority=ActionAuthority.Collections) public class GetAllIndexingTaskStateAction extends AuthAction { @Override public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception { TaskStateService taskStateService = ServiceManager.getInstance().getService(TaskStateService.class); List<Entry<TaskKey, TaskState>> taskEntryList = taskStateService.getTaskEntryList(IndexingTaskKey.class); String state = request.getParameter("state", TaskState.STATE_RUNNING); Writer writer = response.getWriter(); ResponseWriter resultWriter = getDefaultResponseWriter(writer); resultWriter.object().key("indexingState").array(); if(taskEntryList != null){ for(Entry<TaskKey, TaskState> taskEntry : taskEntryList){ IndexingTaskKey indexingTaskKey = (IndexingTaskKey) taskEntry.getKey(); IndexingTaskState indexingTaskState = (IndexingTaskState) taskEntry.getValue(); if(state.equalsIgnoreCase("ALL")) { //모두 허용. } else if(!state.equalsIgnoreCase(indexingTaskState.getState())) { continue; } resultWriter.object() .key("collectionId").value(indexingTaskKey.collectionId()) .key("indexingType").value(indexingTaskState.getIndexingType().name()) .key("isScheduled").value(indexingTaskState.isScheduled()) .key("state").value(indexingTaskState.getState()) //색인, 전파등... .key("step").value(indexingTaskState.getStep()) .key("count").value(indexingTaskState.getDocumentCount()) .key("startTime").value(indexingTaskState.getStartTime()) .key("endTime").value(indexingTaskState.getStartTime()) .key("elapsed").value(indexingTaskState.getElapsedTime()) .endObject(); } } resultWriter.endArray().endObject(); resultWriter.done(); } }