From: erik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0> Date: Tue, 25 Apr 2006 19:22:22 +0000 (+0000) Subject: (no commit message) X-Git-Tag: wamblee-utils-0.2@603~437 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=1aa8a4b42297af33fe68811cacba7a3721b9ea2d;p=utils --- diff --git a/trunk/crawler/kissweb/WebRoot/WEB-INF/overview.jsp b/trunk/crawler/kissweb/WebRoot/WEB-INF/overview.jsp new file mode 100644 index 00000000..bca8cd3c --- /dev/null +++ b/trunk/crawler/kissweb/WebRoot/WEB-INF/overview.jsp @@ -0,0 +1,64 @@ + +<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> + <title>KiSS Crawler overview page</title> + + <meta http-equiv="pragma" content="no-cache"> + <meta http-equiv="cache-control" content="no-cache"> + <meta http-equiv="expires" content="0"> + <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> + <meta http-equiv="description" content="This is my page"> + + <!-- + <link rel="stylesheet" type="text/css" href="styles.css"> + --> + </head> + + <body> + <h1>KiSS Crawler Overview</h1> + + <TABLE border="1"> + <tr> + <td> + Currently running: + </td> + <td> + <c:out value="${running}"/> + </td> + </tr> + <tr> + <td> + Last executed at: + </td> + <td> + <c:out value="${lastExecuted}"/> + </td> + </tr> + <tr> + <td> + Last result: + </td> + <td> + <c:out value="${lastResult}"/> + </td> + </tr> + <tr> + <td> + Last message: + </td> + <td> + <c:out value="${lastMessage}" escapeXml="false"/> + </td> + </tr> + </TABLE> + <c:if test="${!running}"> + <FORM action="runnow"> + <INPUT type="submit" name="runnow" value="Run Crawler as soon as possible"> + </FORM> + </c:if> + </body> +</html> diff --git a/trunk/crawler/kissweb/src/org/wamblee/crawler/kiss/scheduling/CrawlerScheduler.java b/trunk/crawler/kissweb/src/org/wamblee/crawler/kiss/scheduling/CrawlerScheduler.java new file mode 100644 index 00000000..e529da07 --- /dev/null +++ b/trunk/crawler/kissweb/src/org/wamblee/crawler/kiss/scheduling/CrawlerScheduler.java @@ -0,0 +1,32 @@ +/* + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.wamblee.crawler.kiss.scheduling; + +/** + * + */ +public interface CrawlerScheduler { + + void initialize() throws Exception; + + boolean isCrawlerRunning() throws Exception; + + void scheduleNow() throws Exception; + + void shutdown() throws Exception; + +} diff --git a/trunk/crawler/kissweb/src/org/wamblee/crawler/kiss/servlet/CrawlerServlet.java b/trunk/crawler/kissweb/src/org/wamblee/crawler/kiss/servlet/CrawlerServlet.java new file mode 100644 index 00000000..479c60b7 --- /dev/null +++ b/trunk/crawler/kissweb/src/org/wamblee/crawler/kiss/servlet/CrawlerServlet.java @@ -0,0 +1,87 @@ +/* + * Copyright 2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.wamblee.crawler.kiss.servlet; + +import java.io.IOException; +import java.util.Date; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.wamblee.crawler.kiss.scheduling.CrawlerSchedule; +import org.wamblee.crawler.kiss.scheduling.CrawlerScheduler; +import org.wamblee.general.BeanKernel; + +/** + * + */ +public class CrawlerServlet extends HttpServlet { + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, + * javax.servlet.http.HttpServletResponse) + */ + @Override + protected void doPost(HttpServletRequest aRequest, + HttpServletResponse aResponse) throws ServletException, IOException { + + CrawlerScheduler scheduler = BeanKernel.getBeanFactory().find( + CrawlerScheduler.class); + CrawlerSchedule status = BeanKernel.getBeanFactory().find( + CrawlerSchedule.class); + + try { + if ( aRequest.getParameter("runnow") != null ) { + status.setLastExecuted(new Date(System.currentTimeMillis() - 24*3600*1000)); + scheduler.scheduleNow(); + aResponse.sendRedirect(""); + return; + } + aRequest.setAttribute("running", scheduler.isCrawlerRunning()); + aRequest.setAttribute("lastExecuted", status.getLastExecuted()); + aRequest.setAttribute("lastResult", status.getLastResult()); + aRequest.setAttribute("lastException", status.getLastException()); + String msg = ""; + Throwable e = status.getLastException(); + while ( e != null ) { + msg = msg + e.getMessage() + "<br/>"; + e = e.getCause(); + } + aRequest.setAttribute("lastMessage", msg); + } catch (Exception e) { + throw new ServletException("Error getting status", e); + } + aRequest.getRequestDispatcher("WEB-INF/overview.jsp").forward(aRequest, + aResponse); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, + * javax.servlet.http.HttpServletResponse) + */ + @Override + protected void doGet(HttpServletRequest aRequest, + HttpServletResponse aResponse) throws ServletException, IOException { + doPost(aRequest, aResponse); + } +}