package org.fastcatsearch.http.action.management.collections; import java.io.Writer; import java.util.List; import org.fastcatsearch.db.DBService; import org.fastcatsearch.db.InternalDBModule.MapperSession; import org.fastcatsearch.db.mapper.IndexingHistoryMapper; import org.fastcatsearch.db.mapper.IndexingResultMapper; import org.fastcatsearch.db.vo.IndexingStatusVO; import org.fastcatsearch.http.ActionAuthority; import org.fastcatsearch.http.ActionAuthorityLevel; 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.ir.util.Formatter; import org.fastcatsearch.service.ServiceManager; import org.fastcatsearch.util.ResponseWriter; @ActionMapping(value = "/management/collections/indexing-history", authority = ActionAuthority.Collections, authorityLevel = ActionAuthorityLevel.READABLE) public class GetIndexingHistoryAction extends AuthAction { @Override public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception { String collectionId = request.getParameter("collectionId"); int start = request.getIntParameter("start"); int end = request.getIntParameter("end"); DBService dbService = ServiceManager.getInstance().getService(DBService.class); MapperSession<IndexingHistoryMapper> mapperSession = dbService .getMapperSession(IndexingHistoryMapper.class); IndexingHistoryMapper indexingHistoryMapper = mapperSession.getMapper(); try { int totalSize = indexingHistoryMapper.getCount(collectionId); List<IndexingStatusVO> indexHistoryList = indexingHistoryMapper.getEntryList(collectionId, start, end); Writer writer = response.getWriter(); ResponseWriter resultWriter = getDefaultResponseWriter(writer); resultWriter.object() .key("totalSize").value(totalSize) .key("indexingHistory").array(); if (indexHistoryList != null) { for (IndexingStatusVO vo : indexHistoryList) { resultWriter.object() .key("id").value(vo.id) .key("collectionId").value(vo.collectionId) .key("type").value(vo.type.name()) .key("step").value(vo.step) .key("status").value(vo.status.name()) .key("docSize").value(vo.docSize) .key("insertSize").value(vo.insertSize) .key("updateSize").value(vo.updateSize) .key("deleteSize").value(vo.deleteSize) .key("isScheduled").value(vo.isScheduled ? "Scheduled" : "Manual") .key("startTime").value(vo.startTime) .key("endTime").value(vo.endTime) .key("duration").value(Formatter.getFormatTime(vo.duration)) .endObject(); } } resultWriter.endArray().endObject(); resultWriter.done(); } finally { mapperSession.closeSession(); } } }