001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    package org.apache.commons.net.nntp;
019    
020    /***
021     * NewsgroupInfo stores information pertaining to a newsgroup returned by
022     * the NNTP GROUP, LIST, and NEWGROUPS commands, implemented by
023     * {@link org.apache.commons.net.nntp.NNTPClient#selectNewsgroup selectNewsgroup }
024     * ,
025     * {@link org.apache.commons.net.nntp.NNTPClient#listNewsgroups listNewsgroups }
026     * , and
027     * {@link org.apache.commons.net.nntp.NNTPClient#listNewNewsgroups listNewNewsgroups }
028     *  respectively.
029     * <p>
030     * <p>
031     * @see NNTPClient
032     ***/
033    
034    public final class NewsgroupInfo
035    {
036        /***
037         * A constant indicating that the posting permission of a newsgroup is
038         * unknown.  For example, the NNTP GROUP command does not return posting
039         * information, so NewsgroupInfo instances obtained from that command
040         * willhave an UNKNOWN_POSTING_PERMISSION.
041         ***/
042        public static final int UNKNOWN_POSTING_PERMISSION = 0;
043    
044        /*** A constant indicating that a newsgroup is moderated. ***/
045        public static final int MODERATED_POSTING_PERMISSION = 1;
046    
047        /*** A constant indicating that a newsgroup is public and unmoderated. ***/
048        public static final int PERMITTED_POSTING_PERMISSION = 2;
049    
050        /***
051         * A constant indicating that a newsgroup is closed for general posting.
052         ***/
053        public static final int PROHIBITED_POSTING_PERMISSION = 3;
054    
055        private String __newsgroup;
056        private long __estimatedArticleCount;
057        private long __firstArticle;
058        private long __lastArticle;
059        private int __postingPermission;
060    
061        void _setNewsgroup(String newsgroup)
062        {
063            __newsgroup = newsgroup;
064        }
065    
066        void _setArticleCount(long count)
067        {
068            __estimatedArticleCount = count;
069        }
070    
071        void _setFirstArticle(long first)
072        {
073            __firstArticle = first;
074        }
075    
076        void _setLastArticle(long last)
077        {
078            __lastArticle = last;
079        }
080    
081        void _setPostingPermission(int permission)
082        {
083            __postingPermission = permission;
084        }
085    
086        /***
087         * Get the newsgroup name.
088         * <p>
089         * @return The name of the newsgroup.
090         ***/
091        public String getNewsgroup()
092        {
093            return __newsgroup;
094        }
095    
096        /***
097         * Get the estimated number of articles in the newsgroup.  The
098         * accuracy of this value will depend on the server implementation.
099         * <p>
100         * @return The estimated number of articles in the newsgroup.
101         ***/
102        public long getArticleCountLong()
103        {
104            return __estimatedArticleCount;
105        }
106    
107        /***
108         * Get the number of the first article in the newsgroup.
109         * <p>
110         * @return The number of the first article in the newsgroup.
111         ***/
112        public long getFirstArticleLong()
113        {
114            return __firstArticle;
115        }
116    
117        /***
118         * Get the number of the last article in the newsgroup.
119         * <p>
120         * @return The number of the last article in the newsgroup.
121         ***/
122        public long getLastArticleLong()
123        {
124            return __lastArticle;
125        }
126    
127        /***
128         * Get the posting permission of the newsgroup.  This will be one of
129         * the <code> POSTING_PERMISSION </code> constants.
130         * <p>
131         * @return The posting permission status of the newsgroup.
132         ***/
133        public int getPostingPermission()
134        {
135            return __postingPermission;
136        }
137    
138        /*
139        public String toString() {
140          StringBuilder buffer = new StringBuilder();
141          buffer.append(__newsgroup);
142          buffer.append(' ');
143          buffer.append(__lastArticle);
144          buffer.append(' ');
145          buffer.append(__firstArticle);
146          buffer.append(' ');
147          switch(__postingPermission) {
148            case 1: buffer.append('m'); break;
149            case 2: buffer.append('y'); break;
150            case 3: buffer.append('n'); break;
151          }
152          return buffer.toString();
153    }
154        */
155    
156        // DEPRECATED METHODS - for API compatibility only - DO NOT USE
157    
158        @Deprecated
159        public int getArticleCount() {
160            return (int) __estimatedArticleCount;
161        }
162    
163        @Deprecated
164        public int getFirstArticle() {
165            return (int) __firstArticle;
166        }
167    
168        @Deprecated
169        public int getLastArticle() {
170            return (int) __lastArticle;
171        }
172    }