package org.fastcatsearch.http.action.management.indexing;
import java.io.Writer;
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.TaskStateService;
import org.fastcatsearch.service.ServiceManager;
import org.fastcatsearch.util.ResponseWriter;
@ActionMapping(value = "/indexing/task-state", authority = ActionAuthority.Collections)
public class GetIndexingTaskStateAction extends AuthAction {
@Override
public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception {
String collectionId = request.getParameter("collectionId");
TaskStateService taskStateService = ServiceManager.getInstance().getService(TaskStateService.class);
IndexingTaskKey indexingTaskKey = new IndexingTaskKey(collectionId);
IndexingTaskState indexingTaskState = (IndexingTaskState) taskStateService.getTaskState(indexingTaskKey);
// logger.debug("indexingTaskState1 > {}",indexingTaskState);
// logger.debug("indexingTaskState2 > {}",indexingTaskState);
Writer writer = response.getWriter();
ResponseWriter resultWriter = getDefaultResponseWriter(writer);
resultWriter.object().key("indexingState")
.object();
if(indexingTaskState != null){
resultWriter
.key("collectionId").value(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.getEndTime())
.key("elapsed").value(indexingTaskState.getElapsedTime());
}
resultWriter.endObject().endObject();
resultWriter.done();
}
}