package org.genedb.crawl.view;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.apache.log4j.Logger;
import org.genedb.crawl.CrawlErrorType;
import org.genedb.crawl.CrawlException;
import org.genedb.crawl.model.CrawlError;
public class CrawlMappingExceptionResolver extends SimpleMappingExceptionResolver {
private Logger logger = Logger.getLogger(CrawlMappingExceptionResolver.class);
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) {
ModelAndView mav = new ModelAndView("service:");
CrawlError error = new CrawlError();
int status = 500; /* default */
if (ex instanceof CrawlException) {
error.setException((CrawlException)ex);
} else {
error.setException(new CrawlException(ex.getMessage(), CrawlErrorType.MISC_ERROR));
}
logger.error(ex.getStackTrace());
switch(error.type) {
case DATA_NOT_FOUND:
status = 404;
break;
case INVALID_DATE:
case BAD_PARAMETER:
case MISSING_PARAMETER:
status = 400;
break;
default:
break;
}
ex.printStackTrace();
mav.addObject("error" , error);
response.setStatus(status);
return mav;
}
}