Author: ab
Date: Thu Aug 19 11:31:38 2010
New Revision: 987132

URL: http://svn.apache.org/viewvc?rev=987132&view=rev
Log:
Improve ProtocolStatusUtils and move it to a more appropriate place.

Add the display of protocolStatus in readdb -dump.

Hook up WebTableReader to bin/nutch readdb.

Added:
    nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolStatusUtils.java   
(with props)
Removed:
    nutch/trunk/src/java/org/apache/nutch/storage/ProtocolStatusUtils.java
Modified:
    nutch/trunk/src/bin/nutch
    nutch/trunk/src/java/org/apache/nutch/crawl/WebTableReader.java
    nutch/trunk/src/java/org/apache/nutch/fetcher/FetcherReducer.java
    nutch/trunk/src/java/org/apache/nutch/parse/ParserJob.java
    nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolOutput.java
    
nutch/trunk/src/plugin/lib-http/src/java/org/apache/nutch/protocol/http/api/HttpBase.java
    
nutch/trunk/src/plugin/protocol-file/src/java/org/apache/nutch/protocol/file/File.java
    
nutch/trunk/src/plugin/protocol-ftp/src/java/org/apache/nutch/protocol/ftp/Ftp.java

Modified: nutch/trunk/src/bin/nutch
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/bin/nutch?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- nutch/trunk/src/bin/nutch (original)
+++ nutch/trunk/src/bin/nutch Thu Aug 19 11:31:38 2010
@@ -38,6 +38,7 @@ if [ $# = 0 ]; then
   echo " fetch fetch URLs marked during generate"
   echo " parse parse URLs marked during fetch"
   echo " updatedb update web table after parsing"
+  echo " readdb read/dump records from page database"
   echo " solrindex run the solr indexer on parsed segments and linkdb"
   echo " solrdedup remove duplicates from solr"
   echo " plugin load a plugin and run one of its classes main()"
@@ -180,6 +181,8 @@ elif [ "$COMMAND" = "parse" ] ; then
 CLASS=org.apache.nutch.parse.ParserJob
 elif [ "$COMMAND" = "updatedb" ] ; then
 CLASS=org.apache.nutch.crawl.DbUpdaterJob
+elif [ "$COMMAND" = "readdb" ] ; then
+CLASS=org.apache.nutch.crawl.WebTableReader
 elif [ "$COMMAND" = "solrindex" ] ; then
 CLASS=org.apache.nutch.indexer.solr.SolrIndexerJob
 elif [ "$COMMAND" = "solrdedup" ] ; then

Modified: nutch/trunk/src/java/org/apache/nutch/crawl/WebTableReader.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/crawl/WebTableReader.java?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- nutch/trunk/src/java/org/apache/nutch/crawl/WebTableReader.java (original)
+++ nutch/trunk/src/java/org/apache/nutch/crawl/WebTableReader.java Thu Aug 19 
11:31:38 2010
@@ -28,6 +28,9 @@ import org.apache.hadoop.util.StringUtil
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.util.ToolRunner;
 import org.apache.nutch.parse.ParseStatusUtils;
+import org.apache.nutch.protocol.ProtocolStatusUtils;
+import org.apache.nutch.storage.ParseStatus;
+import org.apache.nutch.storage.ProtocolStatus;
 import org.apache.nutch.storage.StorageUtils;
 import org.apache.nutch.storage.WebPage;
 import org.apache.nutch.util.Bytes;
@@ -422,7 +425,9 @@ public class WebTableReader extends Conf
     sb.append("prevFetchTime:\t" + page.getPrevFetchTime()).append("\n");
     sb.append("retries:\t" + page.getRetriesSinceFetch()).append("\n");
     sb.append("modifiedTime:\t" + page.getModifiedTime()).append("\n");
-    sb.append("parse_status:\t" + 
+    sb.append("protocolStatus:\t" + 
+        ProtocolStatusUtils.toString(page.getProtocolStatus())).append("\n");
+    sb.append("parseStatus:\t" + 
         ParseStatusUtils.toString(page.getParseStatus())).append("\n");
     sb.append("title:\t" + page.getTitle()).append("\n");
     sb.append("score:\t" + page.getScore()).append("\n");

Modified: nutch/trunk/src/java/org/apache/nutch/fetcher/FetcherReducer.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/fetcher/FetcherReducer.java?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- nutch/trunk/src/java/org/apache/nutch/fetcher/FetcherReducer.java (original)
+++ nutch/trunk/src/java/org/apache/nutch/fetcher/FetcherReducer.java Thu Aug 
19 11:31:38 2010
@@ -32,10 +32,10 @@ import org.apache.nutch.protocol.Protoco
 import org.apache.nutch.protocol.ProtocolFactory;
 import org.apache.nutch.protocol.ProtocolOutput;
 import org.apache.nutch.protocol.ProtocolStatusCodes;
+import org.apache.nutch.protocol.ProtocolStatusUtils;
 import org.apache.nutch.protocol.RobotRules;
 import org.apache.nutch.storage.Mark;
 import org.apache.nutch.storage.ProtocolStatus;
-import org.apache.nutch.storage.ProtocolStatusUtils;
 import org.apache.nutch.storage.WebPage;
 import org.apache.nutch.util.LogUtil;
 import org.apache.nutch.util.TableUtil;

Modified: nutch/trunk/src/java/org/apache/nutch/parse/ParserJob.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/parse/ParserJob.java?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- nutch/trunk/src/java/org/apache/nutch/parse/ParserJob.java (original)
+++ nutch/trunk/src/java/org/apache/nutch/parse/ParserJob.java Thu Aug 19 
11:31:38 2010
@@ -43,6 +43,7 @@ public class ParserJob extends GoraMappe
     FIELDS.add(WebPage.Field.CONTENT_TYPE);
     FIELDS.add(WebPage.Field.SIGNATURE);
     FIELDS.add(WebPage.Field.MARKERS);
+    FIELDS.add(WebPage.Field.PARSE_STATUS);
     FIELDS.add(WebPage.Field.OUTLINKS);
     FIELDS.add(WebPage.Field.METADATA);
   }

Modified: nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolOutput.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolOutput.java?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolOutput.java 
(original)
+++ nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolOutput.java Thu Aug 
19 11:31:38 2010
@@ -17,7 +17,6 @@
 
 package org.apache.nutch.protocol;
 
-import org.apache.nutch.storage.ProtocolStatusUtils;
 
 /**
  * Simple aggregate to pass from protocol plugins both content and

Added: nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolStatusUtils.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolStatusUtils.java?rev=987132&view=auto
==============================================================================
--- nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolStatusUtils.java 
(added)
+++ nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolStatusUtils.java Thu 
Aug 19 11:31:38 2010
@@ -0,0 +1,107 @@
+package org.apache.nutch.protocol;
+
+import java.net.URL;
+import java.util.Iterator;
+
+import org.apache.avro.generic.GenericArray;
+import org.apache.avro.util.Utf8;
+import org.apache.nutch.storage.ProtocolStatus;
+import org.apache.nutch.util.TableUtil;
+
+public class ProtocolStatusUtils implements ProtocolStatusCodes {
+  // Useful static instances for status codes that don't usually require any
+  // additional arguments.
+  public static final ProtocolStatus STATUS_SUCCESS = makeStatus(SUCCESS);
+  public static final ProtocolStatus STATUS_FAILED = makeStatus(FAILED);
+  public static final ProtocolStatus STATUS_GONE = makeStatus(GONE);
+  public static final ProtocolStatus STATUS_NOTFOUND = makeStatus(NOTFOUND);
+  public static final ProtocolStatus STATUS_RETRY = makeStatus(RETRY);
+  public static final ProtocolStatus STATUS_ROBOTS_DENIED = 
makeStatus(ROBOTS_DENIED);
+  public static final ProtocolStatus STATUS_REDIR_EXCEEDED = 
makeStatus(REDIR_EXCEEDED);
+  public static final ProtocolStatus STATUS_NOTFETCHING = 
makeStatus(NOTFETCHING);
+  public static final ProtocolStatus STATUS_NOTMODIFIED = 
makeStatus(NOTMODIFIED);
+  public static final ProtocolStatus STATUS_WOULDBLOCK = 
makeStatus(WOULDBLOCK);
+  public static final ProtocolStatus STATUS_BLOCKED = makeStatus(BLOCKED);
+
+  public static String getName(int code) {
+    if (code == SUCCESS)
+      return "SUCCESS";
+    else if (code == FAILED)
+      return "FAILED";
+    else if (code == PROTO_NOT_FOUND)
+      return "PROTO_NOT_FOUND";
+    else if (code == GONE)
+      return "GONE";
+    else if (code == MOVED)
+      return "MOVED";
+    else if (code == TEMP_MOVED)
+      return "TEMP_MOVED";
+    else if (code == NOTFOUND)
+      return "NOTFOUND";
+    else if (code == RETRY)
+      return "RETRY";
+    else if (code == EXCEPTION)
+      return "EXCEPTION";
+    else if (code == ACCESS_DENIED)
+      return "ACCESS_DENIED";
+    else if (code == ROBOTS_DENIED)
+      return "ROBOTS_DENIED";
+    else if (code == REDIR_EXCEEDED)
+      return "REDIR_EXCEEDED";
+    else if (code == NOTFETCHING)
+      return "NOTFETCHING";
+    else if (code == NOTMODIFIED)
+      return "NOTMODIFIED";
+    else if (code == WOULDBLOCK)
+      return "WOULDBLOCK";
+    else if (code == BLOCKED)
+      return "BLOCKED";
+    return "UNKNOWN_CODE_" + code;
+  }
+
+  public static ProtocolStatus makeStatus(int code) {
+    ProtocolStatus pstatus = new ProtocolStatus();
+    pstatus.setCode(code);
+    pstatus.setLastModified(0);
+    return pstatus;
+  }
+
+  public static ProtocolStatus makeStatus(int code, String message) {
+    ProtocolStatus pstatus = makeStatus(code);
+    pstatus.addToArgs(new Utf8(message));
+    return pstatus;
+  }
+
+  public static ProtocolStatus makeStatus(int code, URL url) {
+    return makeStatus(code, url.toString());
+  }
+
+  public static String getMessage(ProtocolStatus pstatus) {
+    GenericArray<Utf8> args = pstatus.getArgs();
+    if (args == null || args.size() == 0) {
+      return null;
+    }
+    return TableUtil.toString(args.iterator().next());
+  }
+  
+  public static String toString(ProtocolStatus status) {
+    if (status == null) {
+      return "(null)";
+    }
+    StringBuilder sb = new StringBuilder();
+    sb.append(getName(status.getCode()));
+    sb.append(", args=[");
+    GenericArray<Utf8> args = status.getArgs();
+    if (args != null) {
+      int i = 0;
+      Iterator<Utf8> it = args.iterator();
+      while (it.hasNext()) {
+        if (i > 0) sb.append(',');
+        sb.append(it.next());
+        i++;
+      }
+    }
+    sb.append("]");
+    return sb.toString();
+  }
+}

Propchange: 
nutch/trunk/src/java/org/apache/nutch/protocol/ProtocolStatusUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
nutch/trunk/src/plugin/lib-http/src/java/org/apache/nutch/protocol/http/api/HttpBase.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/plugin/lib-http/src/java/org/apache/nutch/protocol/http/api/HttpBase.java?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- 
nutch/trunk/src/plugin/lib-http/src/java/org/apache/nutch/protocol/http/api/HttpBase.java
 (original)
+++ 
nutch/trunk/src/plugin/lib-http/src/java/org/apache/nutch/protocol/http/api/HttpBase.java
 Thu Aug 19 11:31:38 2010
@@ -31,8 +31,8 @@ import org.apache.nutch.protocol.Protoco
 import org.apache.nutch.protocol.ProtocolException;
 import org.apache.nutch.protocol.ProtocolOutput;
 import org.apache.nutch.protocol.ProtocolStatusCodes;
+import org.apache.nutch.protocol.ProtocolStatusUtils;
 import org.apache.nutch.protocol.RobotRules;
-import org.apache.nutch.storage.ProtocolStatusUtils;
 import org.apache.nutch.storage.WebPage;
 import org.apache.nutch.util.GZIPUtils;
 import org.apache.nutch.util.DeflateUtils;

Modified: 
nutch/trunk/src/plugin/protocol-file/src/java/org/apache/nutch/protocol/file/File.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/plugin/protocol-file/src/java/org/apache/nutch/protocol/file/File.java?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- 
nutch/trunk/src/plugin/protocol-file/src/java/org/apache/nutch/protocol/file/File.java
 (original)
+++ 
nutch/trunk/src/plugin/protocol-file/src/java/org/apache/nutch/protocol/file/File.java
 Thu Aug 19 11:31:38 2010
@@ -30,9 +30,9 @@ import org.apache.nutch.protocol.EmptyRo
 import org.apache.nutch.protocol.Protocol;
 import org.apache.nutch.protocol.ProtocolOutput;
 import org.apache.nutch.protocol.ProtocolStatusCodes;
+import org.apache.nutch.protocol.ProtocolStatusUtils;
 import org.apache.nutch.protocol.RobotRules;
 import org.apache.nutch.storage.ProtocolStatus;
-import org.apache.nutch.storage.ProtocolStatusUtils;
 import org.apache.nutch.storage.WebPage;
 import org.apache.nutch.storage.WebPage.Field;
 import org.apache.nutch.util.NutchConfiguration;

Modified: 
nutch/trunk/src/plugin/protocol-ftp/src/java/org/apache/nutch/protocol/ftp/Ftp.java
URL: 
http://svn.apache.org/viewvc/nutch/trunk/src/plugin/protocol-ftp/src/java/org/apache/nutch/protocol/ftp/Ftp.java?rev=987132&r1=987131&r2=987132&view=diff
==============================================================================
--- 
nutch/trunk/src/plugin/protocol-ftp/src/java/org/apache/nutch/protocol/ftp/Ftp.java
 (original)
+++ 
nutch/trunk/src/plugin/protocol-ftp/src/java/org/apache/nutch/protocol/ftp/Ftp.java
 Thu Aug 19 11:31:38 2010
@@ -32,9 +32,9 @@ import org.apache.nutch.protocol.EmptyRo
 import org.apache.nutch.protocol.Protocol;
 import org.apache.nutch.protocol.ProtocolOutput;
 import org.apache.nutch.protocol.ProtocolStatusCodes;
+import org.apache.nutch.protocol.ProtocolStatusUtils;
 import org.apache.nutch.protocol.RobotRules;
 import org.apache.nutch.storage.ProtocolStatus;
-import org.apache.nutch.storage.ProtocolStatusUtils;
 import org.apache.nutch.storage.WebPage;
 
 /************************************


Reply via email to