    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 * <p>
    030 * <p>
    031 * @see NNTPClient
    032 ***/
    033
    034public 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}