1   /* SeedRecord
2    * 
3    * $Id: SeedRecord.java 4671 2006-09-26 23:47:15Z paul_jack $
4    *
5    * Created on June 12, 2005
6    * 
7    * Copyright (C) 2005 Internet Archive.
8    *
9    * This file is part of the Heritrix web crawler (crawler.archive.org).
10   *
11   * Heritrix is free software; you can redistribute it and/or modify
12   * it under the terms of the GNU Lesser Public License as published by
13   * the Free Software Foundation; either version 2.1 of the License, or
14   * any later version.
15   *
16   * Heritrix is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU Lesser Public License for more details.
20   *
21   * You should have received a copy of the GNU Lesser Public License
22   * along with Heritrix; if not, write to the Free Software
23   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
24   *
25   */
26  package org.archive.crawler.admin;
27  
28  import java.io.Serializable;
29  
30  import org.archive.crawler.datamodel.CandidateURI;
31  import org.archive.crawler.datamodel.CoreAttributeConstants;
32  import org.archive.crawler.datamodel.CrawlURI;
33  
34  /***
35   * Record of all interesting info about the most-recent
36   * processing of a specific seed.
37   * 
38   * @author gojomo
39   */
40  public class SeedRecord implements CoreAttributeConstants, Serializable {
41      private static final long serialVersionUID = -8455358640509744478L;
42      private final String uri;
43      private int statusCode;
44      private final String disposition;
45      private String redirectUri;
46      
47      /***
48       * Create a record from the given CrawlURI and disposition string
49       * 
50       * @param curi CrawlURI, already processed as reported to StatisticsTracker
51       * @param disposition descriptive disposition string
52       * 
53       */
54      public SeedRecord(CrawlURI curi, String disposition) {
55          super();
56          this.uri = curi.toString();
57          this.statusCode = curi.getFetchStatus();
58          this.disposition = disposition;
59          if (statusCode==301 || statusCode == 302) {
60              for (CandidateURI cauri: curi.getOutCandidates()) {
61                  if("location:".equalsIgnoreCase(cauri.getViaContext().
62                  		toString())) {
63                      redirectUri = cauri.toString();
64                  }
65              }
66          }
67      }
68      
69      /***
70       * Constructor for when a CrawlURI is unavailable; such
71       * as when considering seeds not yet passed through as
72       * CrawlURIs. 
73       * 
74       * @param uri
75       * @param disposition
76       */
77      public SeedRecord(String uri, String disposition) {
78      	this(uri, disposition, -1, null);
79      }
80  
81      /***
82       * Create a record from the given URI, disposition, HTTP status code,
83       * and redirect URI.
84       * @param uri
85       * @param disposition
86       * @param statusCode
87       * @param redirectUri
88       */
89      public SeedRecord(String uri, String disposition, int statusCode,
90      		String redirectUri) {
91          super();
92          this.uri = uri;
93          this.statusCode = statusCode;
94          this.disposition = disposition;
95          this.redirectUri = redirectUri;        
96      }
97  
98      /***
99       * @return Returns the disposition.
100      */
101     public String getDisposition() {
102         return disposition;
103     }
104     /***
105      * @return Returns the redirectUri.
106      */
107     public String getRedirectUri() {
108         return redirectUri;
109     }
110     /***
111      * @return Returns the statusCode.
112      */
113     public int getStatusCode() {
114         return statusCode;
115     }
116     /***
117      * @return Returns the uri.
118      */
119     public String getUri() {
120         return uri;
121     }
122 }