(no commit message)
[utils] / crawler / kiss / src / org / wamblee / crawler / kiss / main / KissCrawler.java
index 735593109c20992c77c09106ec6f9ac38be02ed6..969c5b23749e8e500f052308af0ed48a44f09308 100644 (file)
@@ -61,6 +61,11 @@ public class KissCrawler {
      * Start URL of the electronic programme guide.
      */
     private static final String START_URL = "http://epg.kml.kiss-technology.com/login_core.php";
+    
+    /**
+     * Default socket timeout to use. 
+     */
+    private static final int SOCKET_TIMEOUT = 10000; 
 
     /**
      * Regular expression for matching time interval strings in the retrieved
@@ -84,9 +89,29 @@ public class KissCrawler {
     public static void main(String[] aArgs) throws Exception {
         String crawlerConfig = new File(aArgs[0]).getCanonicalPath(); 
         String programConfig = new File(aArgs[1]).getCanonicalPath(); 
-        new KissCrawler(START_URL, crawlerConfig, programConfig);
+        new KissCrawler(START_URL, SOCKET_TIMEOUT, crawlerConfig, programConfig);
+    }
+    
+    /**
+     * Constructs the crawler. This retrieves the TV guide by crawling the KiSS
+     * EPG guide, filters the guide for interesting programs, tries to record
+     * them, and sends a summary mail to the user.
+     * 
+     * @param aCrawlerConfig
+     *            Configuration file for the crawler.
+     * @param aProgramConfig
+     *            Configuration file describing interesting shows.
+     * @throws IOException
+     *             In case of problems reading files.
+     * @throws MessagingException
+     *             In case of problems sending a mail notification.
+     */
+    public KissCrawler(String aCrawlerConfig,
+            String aProgramConfig) throws IOException, NotificationException, PageException {
+        this(START_URL, SOCKET_TIMEOUT, aCrawlerConfig, aProgramConfig);
     }
 
+
     /**
      * Constructs the crawler. This retrieves the TV guide by crawling the KiSS
      * EPG guide, filters the guide for interesting programs, tries to record
@@ -94,6 +119,7 @@ public class KissCrawler {
      * 
      * @param aStartUrl
      *            Start URL of the electronic programme guide.
+     * @param aSocketTimeout Socket timeout to use. 
      * @param aCrawlerConfig
      *            Configuration file for the crawler.
      * @param aProgramConfig
@@ -103,14 +129,15 @@ public class KissCrawler {
      * @throws MessagingException
      *             In case of problems sending a mail notification.
      */
-    public KissCrawler(String aStartUrl, String aCrawlerConfig,
-            String aProgramConfig) throws IOException, NotificationException {
+    public KissCrawler(String aStartUrl, int aSocketTimeout, String aCrawlerConfig,
+            String aProgramConfig) throws IOException, NotificationException, PageException {
 
         _pattern = Pattern.compile(TIME_REGEX);
 
         try {
             HttpClient client = new HttpClient();
             // client.getHostConfiguration().setProxy("127.0.0.1", 3128);
+            client.getParams().setParameter("http.socket.timeout", SOCKET_TIMEOUT);
 
             XslTransformer transformer = new XslTransformer(
                     new ClasspathUriResolver());
@@ -135,6 +162,7 @@ public class KissCrawler {
             } catch (PageException e) {
                 report.addMessage("Problem getting TV guide", e);
                 LOG.info("Problem getting TV guide", e);
+                throw e; 
             }
             parser.getNotifier().send(report.asXml());
         } finally {
@@ -212,7 +240,7 @@ public class KissCrawler {
             }
             return favorites.execute();
         } catch (PageException e) {
-            String msg = "Could not login to electronic programme guide.";
+            String msg = "Could not complete login to electronic programme guide.";
             throw new PageException(msg, e);
         }
     }