Adding feedback from search IndexController instead of a blank screen, so user knows when indexing is finished. NIHVIVO-783

This commit is contained in:
bdc34 2010-07-12 18:49:32 +00:00
parent a85683d99b
commit e05cc6e041

View file

@ -3,21 +3,22 @@
package edu.cornell.mannlib.vitro.webapp.search.controller;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vedit.beans.LoginFormBean;
import edu.cornell.mannlib.vitro.webapp.auth.policy.JenaNetidPolicy.ContextSetup;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreeMarkerHttpServlet;
import edu.cornell.mannlib.vitro.webapp.search.IndexingException;
import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder;
import freemarker.template.Configuration;
/**
* Accepts requests to rebuild or update the search index. It uses
@ -32,17 +33,53 @@ import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder;
* @author bdc34
*
*/
public class IndexController extends HttpServlet {
public class IndexController extends FreeMarkerHttpServlet {
private static final Log log = LogFactory.getLog(IndexController.class.getName());
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
doGet(request, response);
// public void doPost(HttpServletRequest request, HttpServletResponse response)
// throws ServletException,IOException {
// doGet(request, response);
// }
//
// public void doGet( HttpServletRequest request, HttpServletResponse response )
// throws IOException, ServletException {
//
// Object obj = request.getSession().getAttribute("loginHandler");
// LoginFormBean loginHandler = null;
// if( obj != null && obj instanceof LoginFormBean )
// loginHandler = ((LoginFormBean)obj);
// if( loginHandler == null ||
// ! "authenticated".equalsIgnoreCase(loginHandler.getLoginStatus()) ||
// Integer.parseInt(loginHandler.getLoginRole()) <= 5 ){
//
// String redirectURL=request.getContextPath() + Controllers.SITE_ADMIN + "?login=block";
// response.sendRedirect(redirectURL);
// return;
// }
//
// long start = System.currentTimeMillis();
// try {
// IndexBuilder builder = (IndexBuilder)getServletContext().getAttribute(IndexBuilder.class.getName());
// if( request.getParameter("update") != null ){
// builder.doUpdateIndex();
// }else{
// builder.doIndexRebuild();
// }
//
// } catch (IndexingException e) {
// log.error("IndexController -- Error building index: " + e);
// }
// long delta = System.currentTimeMillis() - start;
// String msg = "Search index complete. Elapsed time " + delta + " msec.";
// }
protected String getTitle(String siteName) {
return "Full Search Index Rebuild";
}
public void doGet( HttpServletRequest request, HttpServletResponse response )
throws IOException, ServletException {
protected String getBody(VitroRequest request, Map<String, Object> body, Configuration config) {
Object obj = request.getSession().getAttribute("loginHandler");
LoginFormBean loginHandler = null;
@ -52,11 +89,11 @@ public class IndexController extends HttpServlet {
! "authenticated".equalsIgnoreCase(loginHandler.getLoginStatus()) ||
Integer.parseInt(loginHandler.getLoginRole()) <= 5 ){
String redirectURL=request.getContextPath() + Controllers.SITE_ADMIN + "?login=block";
response.sendRedirect(redirectURL);
return;
body.put("message","You must login to rebuild the search index.");
return mergeBodyToTemplate("message.ftl", body, config);
}
long start = System.currentTimeMillis();
try {
IndexBuilder builder = (IndexBuilder)getServletContext().getAttribute(IndexBuilder.class.getName());
if( request.getParameter("update") != null ){
@ -66,7 +103,12 @@ public class IndexController extends HttpServlet {
}
} catch (IndexingException e) {
log.error("IndexController -- Error building index: " + e);
log.error("Error rebuilding search index",e);
body.put("errorMessage", "There was an error while rebuilding the search index. " + e.getMessage());
return mergeBodyToTemplate("errorMessage.ftl", body, config);
}
body.put("message","Search index complete. Elapsed time " + (System.currentTimeMillis() - start) + " msec.");
return mergeBodyToTemplate("message.ftl", body, config);
}
}