2 * Copyright 2006 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.wamblee.crawler.kiss.servlet;
19 import java.io.IOException;
20 import java.io.OutputStream;
22 import javax.servlet.ServletException;
23 import javax.servlet.http.HttpServlet;
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
27 import org.wamblee.crawler.kiss.main.Report;
28 import org.wamblee.crawler.kiss.notification.Notifier;
29 import org.wamblee.crawler.kiss.scheduling.CrawlerScheduler;
30 import org.wamblee.crawler.kiss.scheduling.CrawlerStatus;
31 import org.wamblee.general.BeanKernel;
36 * @author Erik Brakkee
38 public class CrawlerServlet extends HttpServlet {
43 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
44 * javax.servlet.http.HttpServletResponse)
47 protected void doPost(HttpServletRequest aRequest,
48 HttpServletResponse aResponse) throws ServletException, IOException {
50 CrawlerScheduler scheduler = BeanKernel.getBeanFactory().find(
51 CrawlerScheduler.class);
52 CrawlerStatus status = BeanKernel.getBeanFactory().find(
56 if (aRequest.getParameter("details") != null) {
57 Report report = status.getLastReport();
59 Notifier notifier = BeanKernel.getBeanFactory().find(Notifier.class);
60 aResponse.setContentType("text/html");
61 OutputStream os = aResponse.getOutputStream();
62 os.write(notifier.asHtml(report.asXml()).getBytes());
66 if (aRequest.getParameter("runnow") != null) {
67 status.setMustExecute(true);
68 scheduler.scheduleNow();
69 aResponse.sendRedirect("");
72 aRequest.setAttribute("running", scheduler.isCrawlerRunning());
73 aRequest.setAttribute("lastExecuted", status.getLastExecuted());
74 aRequest.setAttribute("lastResult", status.getLastResult());
75 aRequest.setAttribute("lastException", status.getLastException());
76 aRequest.setAttribute("lastReport", status.getLastReport());
78 Throwable e = status.getLastException();
80 msg = msg + e.getClass().getName() + ": " + e.getMessage()
84 aRequest.setAttribute("lastMessage", msg);
85 } catch (Exception e) {
86 throw new ServletException("Error getting status", e);
88 aRequest.getRequestDispatcher("WEB-INF/overview.jsp").forward(aRequest,
95 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
96 * javax.servlet.http.HttpServletResponse)
99 protected void doGet(HttpServletRequest aRequest,
100 HttpServletResponse aResponse) throws ServletException, IOException {
101 doPost(aRequest, aResponse);