1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.archive.crawler.settings.refinements;
26
27 import org.archive.net.UURI;
28
29
30 /***
31 * A refinement criterion that checks if a URI matches a specific port number.
32 * <p/>
33 * If the port number is not known it will try to use the default port number
34 * for the URI's scheme.
35 *
36 * @author John Erik Halse
37 */
38 public class PortnumberCriteria implements Criteria {
39 private int portNumber = 0;
40
41 /***
42 * Create a new instance of PortnumberCriteria.
43 */
44 public PortnumberCriteria() {
45 super();
46 }
47
48 /***
49 * Create a new instance of PortnumberCriteria.
50 *
51 * @param portNumber the port number for this criteria.
52 */
53 public PortnumberCriteria(String portNumber) {
54 setPortNumber(portNumber);
55 }
56
57
58
59
60 public boolean isWithinRefinementBounds(UURI uri) {
61 int port = uri.getPort();
62 if (port < 0) {
63 if (uri.getScheme().equals("http")) {
64 port = 80;
65 } else if (uri.getScheme().equals("https")) {
66 port = 443;
67 }
68 }
69
70 return (port == portNumber)? true: false;
71 }
72
73 /***
74 * Get the port number that is to be checked against a URI.
75 *
76 * @return Returns the portNumber.
77 */
78 public String getPortNumber() {
79 return String.valueOf(portNumber);
80 }
81 /***
82 * Set the port number that is to be checked against a URI.
83 *
84 * @param portNumber The portNumber to set.
85 */
86 public void setPortNumber(String portNumber) {
87 this.portNumber = Integer.parseInt(portNumber);
88 }
89
90
91
92
93 public String getName() {
94 return "Port number criteria";
95 }
96
97
98
99
100 public String getDescription() {
101 return "Accept URIs on port " + getPortNumber();
102 }
103 }