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
018package 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 *
030 * @see NNTPClient
031 ***/
032
033public final class NewsgroupInfo
034{
035    /***
036     * A constant indicating that the posting permission of a newsgroup is
037     * unknown.  For example, the NNTP GROUP command does not return posting
038     * information, so NewsgroupInfo instances obtained from that command
039     * willhave an UNKNOWN_POSTING_PERMISSION.
040     ***/
041    public static final int UNKNOWN_POSTING_PERMISSION = 0;
042
043    /*** A constant indicating that a newsgroup is moderated. ***/
044    public static final int MODERATED_POSTING_PERMISSION = 1;
045
046    /*** A constant indicating that a newsgroup is public and unmoderated. ***/
047    public static final int PERMITTED_POSTING_PERMISSION = 2;
048
049    /***
050     * A constant indicating that a newsgroup is closed for general posting.
051     ***/
052    public static final int PROHIBITED_POSTING_PERMISSION = 3;
053
054    private String __newsgroup;
055    private long __estimatedArticleCount;
056    private long __firstArticle;
057    private long __lastArticle;
058    private int __postingPermission;
059
060    void _setNewsgroup(String newsgroup)
061    {
062        __newsgroup = newsgroup;
063    }
064
065    void _setArticleCount(long count)
066    {
067        __estimatedArticleCount = count;
068    }
069
070    void _setFirstArticle(long first)
071    {
072        __firstArticle = first;
073    }
074
075    void _setLastArticle(long last)
076    {
077        __lastArticle = last;
078    }
079
080    void _setPostingPermission(int permission)
081    {
082        __postingPermission = permission;
083    }
084
085    /***
086     * Get the newsgroup name.
087     * <p>
088     * @return The name of the newsgroup.
089     ***/
090    public String getNewsgroup()
091    {
092        return __newsgroup;
093    }
094
095    /***
096     * Get the estimated number of articles in the newsgroup.  The
097     * accuracy of this value will depend on the server implementation.
098     * <p>
099     * @return The estimated number of articles in the newsgroup.
100     ***/
101    public long getArticleCountLong()
102    {
103        return __estimatedArticleCount;
104    }
105
106    /***
107     * Get the number of the first article in the newsgroup.
108     * <p>
109     * @return The number of the first article in the newsgroup.
110     ***/
111    public long getFirstArticleLong()
112    {
113        return __firstArticle;
114    }
115
116    /***
117     * Get the number of the last article in the newsgroup.
118     * <p>
119     * @return The number of the last article in the newsgroup.
120     ***/
121    public long getLastArticleLong()
122    {
123        return __lastArticle;
124    }
125
126    /***
127     * Get the posting permission of the newsgroup.  This will be one of
128     * the <code> POSTING_PERMISSION </code> constants.
129     * <p>
130     * @return The posting permission status of the newsgroup.
131     ***/
132    public int getPostingPermission()
133    {
134        return __postingPermission;
135    }
136
137    /*
138    public String toString() {
139      StringBuilder buffer = new StringBuilder();
140      buffer.append(__newsgroup);
141      buffer.append(' ');
142      buffer.append(__lastArticle);
143      buffer.append(' ');
144      buffer.append(__firstArticle);
145      buffer.append(' ');
146      switch(__postingPermission) {
147        case 1: buffer.append('m'); break;
148        case 2: buffer.append('y'); break;
149        case 3: buffer.append('n'); break;
150      }
151      return buffer.toString();
152}
153    */
154
155    // DEPRECATED METHODS - for API compatibility only - DO NOT USE
156
157    @Deprecated
158    public int getArticleCount() {
159        return (int) __estimatedArticleCount;
160    }
161
162    @Deprecated
163    public int getFirstArticle() {
164        return (int) __firstArticle;
165    }
166
167    @Deprecated
168    public int getLastArticle() {
169        return (int) __lastArticle;
170    }
171}