View Javadoc

1   /************************************************************************
2    * Copyright (c) 2000-2006 The Apache Software Foundation.             *
3    * All rights reserved.                                                *
4    * ------------------------------------------------------------------- *
5    * Licensed under the Apache License, Version 2.0 (the "License"); you *
6    * may not use this file except in compliance with the License. You    *
7    * may obtain a copy of the License at:                                *
8    *                                                                     *
9    *     http://www.apache.org/licenses/LICENSE-2.0                      *
10   *                                                                     *
11   * Unless required by applicable law or agreed to in writing, software *
12   * distributed under the License is distributed on an "AS IS" BASIS,   *
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or     *
14   * implied.  See the License for the specific language governing       *
15   * permissions and limitations under the License.                      *
16   ***********************************************************************/
17  
18  package org.apache.james.nntpserver.repository;
19  
20  import java.io.InputStream;
21  import java.io.IOException;
22  import java.util.Date;
23  import java.util.Iterator;
24  
25  /*** 
26   * Contract exposed by a NewsGroup
27   *
28   */
29  public interface NNTPGroup {
30  
31      /***
32       * Gets the name of the newsgroup
33       *
34       * @return the newsgroup name
35       */
36      String getName();
37  
38      /***
39       * Gets the description of the newsgroup
40       *
41       * @return the newsgroup description
42       */
43      String getDescription();
44  
45      /***
46       * Returns whether posting is allowed to this newsgroup
47       *
48       * @return whether posting is allowed to this newsgroup
49       */
50      boolean isPostAllowed();
51  
52      /***
53       * Gets the number of articles in the group.
54       *
55       * @return the number of articles in the group.
56       */
57      int getNumberOfArticles();
58  
59      /***
60       * Gets the first article number in the group.
61       *
62       * @return the first article number in the group.
63       */
64      int getFirstArticleNumber();
65  
66      /***
67       * Gets the last article number in the group.
68       *
69       * @return the last article number in the group.
70       */
71      int getLastArticleNumber();
72  
73      /***
74       * Gets the article with the specified article number.
75       *
76       * @param number the article number
77       *
78       * @return the article
79       */
80      NNTPArticle getArticle(int number);
81  
82      /***
83       * Retrieves an iterator of articles in this newsgroup that were
84       * posted on or after the specified date.
85       *
86       * @param dt the Date that acts as a lower bound for the list of
87       *           articles
88       *
89       * @return the article iterator
90       */
91      Iterator getArticlesSince(Date dt);
92  
93      /***
94       * Retrieves an iterator of all articles in this newsgroup
95       *
96       * @return the article iterator
97       */
98      Iterator getArticles();
99  
100     /***
101      * Retrieves the group information in a format consistent with
102      * a LIST or LIST ACTIVE return line
103      *
104      * @return the properly formatted string
105      */
106     String getListFormat();
107 
108     /***
109      * Retrieves the group information in a format consistent with
110      * a LIST NEWSGROUPS return line
111      *
112      * @return the properly formatted string
113      */
114     String getListNewsgroupsFormat();
115 
116     /***
117      * Adds an article to the group based on the data in the
118      * stream.
119      *
120      * @param newsStream the InputStream containing the article data
121      *
122      * @return the newly created article
123      */
124     NNTPArticle addArticle(InputStream newsStream) throws IOException;
125 }