001package org.kuali.ole.web; 002 003import org.apache.commons.lang.StringUtils; 004import org.kuali.ole.docstore.common.document.content.enums.DocCategory; 005import org.kuali.ole.docstore.common.document.content.enums.DocFormat; 006import org.kuali.ole.docstore.common.document.content.enums.DocType; 007import org.kuali.ole.docstore.engine.service.index.solr.BibConstants; 008import org.kuali.ole.docstore.metrics.reindex.ReIndexingStatus; 009import org.kuali.ole.docstore.process.RebuildIndexesHandler; 010import org.kuali.ole.logger.DocStoreLogger; 011 012import javax.servlet.ServletException; 013import javax.servlet.http.HttpServlet; 014import javax.servlet.http.HttpServletRequest; 015import javax.servlet.http.HttpServletResponse; 016import java.io.IOException; 017import java.io.PrintWriter; 018 019/** 020 * Created by IntelliJ IDEA. 021 * User: pvsubrah 022 * Date: 11/12/11 023 * Time: 3:41 PM 024 * To change this template use File | Settings | File Templates. 025 */ 026public class RebuildIndexServlet extends HttpServlet { 027 028 private static final long serialVersionUID = 1L; 029 DocStoreLogger docStoreLogger = new DocStoreLogger(getClass().getName()); 030 031 @Override 032 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 033 doPost(req, resp); 034 } 035 036 @Override 037 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 038 try { 039 040 String docCategory = DocCategory.WORK.getCode(); 041 String docType = DocType.BIB.getCode(); 042 String docFormat = DocFormat.MARC.getCode(); 043 String action = req.getParameter("action"); 044 String batchSizeReq = req.getParameter("batchSize"); 045 String startIndexReq = req.getParameter("startIndex"); 046 String endIndexReq = req.getParameter("endIndex"); 047 int batchSize = 0; 048 int startIndex = 0; 049 int endIndex = 0; 050 if(StringUtils.isNotEmpty(batchSizeReq)) { 051 batchSize = Integer.parseInt(batchSizeReq); 052 } 053 if(StringUtils.isNotEmpty(startIndexReq)) { 054 startIndex = Integer.parseInt(startIndexReq); 055 } 056 if(StringUtils.isNotEmpty(endIndexReq)) { 057 endIndex = Integer.parseInt(endIndexReq); 058 } 059 if(startIndex > endIndex) { 060 String result = "Please provide valid input " + startIndex + " > " + endIndex; 061 outputMessage(resp, result); 062 } 063 RebuildIndexesHandler rebuildIndexesHandler = RebuildIndexesHandler.getInstance(); 064 065 if (action.equalsIgnoreCase("start")) { 066 String result = rebuildIndexesHandler.startProcess(docCategory, docType, docFormat, batchSize, startIndex, endIndex); 067 outputMessage(resp, result); 068 } else if (action.equalsIgnoreCase("stop")) { 069 String result = rebuildIndexesHandler.stopProcess(); 070 outputMessage(resp, result); 071 } else if (action.equalsIgnoreCase("status")) { 072// ReIndexingStatus reIndexingStatus = ReIndexingStatus.getInstance(); 073// String result = reIndexingStatus.getJsonString(); 074 String result = rebuildIndexesHandler.showStatus(); 075 outputMessage(resp, result); 076 } else if (action.equalsIgnoreCase("bibStatus")) { 077 String result = rebuildIndexesHandler.showBibStatus(); 078 outputMessage(resp, result); 079 } else if (action.equalsIgnoreCase("Clear Status")) { 080 ReIndexingStatus reIndexingStatus = ReIndexingStatus.getInstance(); 081 reIndexingStatus.reset(); 082 } else if (action.equalsIgnoreCase("store")) { 083 String result = rebuildIndexesHandler.storeBibInfo(batchSize); 084 outputMessage(resp, result); 085 } else { 086 String result = "Invalid action :" + action; 087 outputMessage(resp, result); 088 } 089 } catch (Exception e) { 090 docStoreLogger.log("Error during rebuilding of the indexes from documentstore", e); 091 } 092 } 093 094 private void outputMessage(HttpServletResponse resp, String s) throws IOException { 095 PrintWriter out = resp.getWriter(); 096 out.println(s); 097 out.flush(); 098 out.close(); 099 } 100}