1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package examples.nntp;
18
19 import java.io.BufferedReader;
20 import java.io.IOException;
21 import java.io.Reader;
22 import java.util.StringTokenizer;
23
24 import org.apache.commons.net.io.DotTerminatedMessageReader;
25 import org.apache.commons.net.nntp.Article;
26 import org.apache.commons.net.nntp.NNTPClient;
27
28
29
30
31
32
33
34 public class NNTPUtils {
35
36
37
38
39
40
41
42
43
44
45 public static Article[] getArticleInfo(NNTPClient client, int lowArticleNumber, int highArticleNumber)
46 throws IOException {
47 Reader reader = null;
48 Article[] articles = null;
49 reader =
50 (DotTerminatedMessageReader) client.retrieveArticleInfo(
51 lowArticleNumber,
52 highArticleNumber);
53
54 if (reader != null) {
55 String theInfo = readerToString(reader);
56 StringTokenizer st = new StringTokenizer(theInfo, "\n");
57
58
59
60
61
62 int count = st.countTokens();
63 articles = new Article[count];
64 int index = 0;
65
66 while (st.hasMoreTokens()) {
67 StringTokenizer stt = new StringTokenizer(st.nextToken(), "\t");
68 Article article = new Article();
69 article.setArticleNumber(Integer.parseInt(stt.nextToken()));
70 article.setSubject(stt.nextToken());
71 article.setFrom(stt.nextToken());
72 article.setDate(stt.nextToken());
73 article.setArticleId(stt.nextToken());
74 article.addHeaderField("References", stt.nextToken());
75 articles[index++] = article;
76 }
77 } else {
78 return null;
79 }
80
81 return articles;
82 }
83
84
85
86
87
88
89
90 public static String readerToString(Reader reader) {
91 String temp = null;
92 StringBuffer sb = null;
93 BufferedReader bufReader = new BufferedReader(reader);
94
95 sb = new StringBuffer();
96 try {
97 temp = bufReader.readLine();
98 while (temp != null) {
99 sb.append(temp);
100 sb.append("\n");
101 temp = bufReader.readLine();
102 }
103 } catch (IOException e) {
104 e.printStackTrace();
105 }
106
107 return sb.toString();
108 }
109 }