1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.commons.net.examples.nntp;
20
21 import java.io.IOException;
22 import java.io.PrintWriter;
23 import java.net.SocketException;
24
25 import org.apache.commons.net.PrintCommandListener;
26 import org.apache.commons.net.nntp.Article;
27 import org.apache.commons.net.nntp.NNTPClient;
28 import org.apache.commons.net.nntp.NewsgroupInfo;
29 import org.apache.commons.net.nntp.Threader;
30
31
32
33
34 public class MessageThreading {
35 public MessageThreading() {
36 }
37
38 public static void main(final String[] args) throws SocketException, IOException {
39
40 if (args.length != 2 && args.length != 4) {
41 System.out.println("Usage: MessageThreading <hostname> <groupname> [<user> <password>]");
42 return;
43 }
44
45 final String hostname = args[0];
46 final String newsgroup = args[1];
47
48 final NNTPClientp/NNTPClient.html#NNTPClient">NNTPClient client = new NNTPClient();
49 client.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));
50 client.connect(hostname);
51
52 if (args.length == 4) {
53 final String user = args[2];
54 final String password = args[3];
55 if(!client.authenticate(user, password)) {
56 System.out.println("Authentication failed for user " + user + "!");
57 System.exit(1);
58 }
59 }
60
61 final String fmt[] = client.listOverviewFmt();
62 if (fmt != null) {
63 System.out.println("LIST OVERVIEW.FMT:");
64 for(final String s : fmt) {
65 System.out.println(s);
66 }
67 } else {
68 System.out.println("Failed to get OVERVIEW.FMT");
69 }
70 final NewsgroupInfoNewsgroupInfo.html#NewsgroupInfo">NewsgroupInfo group = new NewsgroupInfo();
71 client.selectNewsgroup(newsgroup, group);
72
73 final long lowArticleNumber = group.getFirstArticleLong();
74 final long highArticleNumber = lowArticleNumber + 5000;
75
76 System.out.println("Retrieving articles between [" + lowArticleNumber + "] and [" + highArticleNumber + "]");
77 final Iterable<Article> articles = client.iterateArticleInfo(lowArticleNumber, highArticleNumber);
78
79 System.out.println("Building message thread tree...");
80 final Threaderp/Threader.html#Threader">Threader threader = new Threader();
81 final Article"../../../../../../org/apache/commons/net/nntp/Article.html#Article">Article root = (Article)threader.thread(articles);
82
83 Article.printThread(root, 0);
84 }
85
86 }