Coverage report

  %line %branch
org.apache.commons.net.nntp.NewGroupsOrNewsQuery
0% 
0% 

 1  
 /*
 2  
  * Copyright 2001-2005 The Apache Software Foundation
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package org.apache.commons.net.nntp;
 17  
 
 18  
 import java.util.Calendar;
 19  
 
 20  
 /***
 21  
  * The NewGroupsOrNewsQuery class.  This is used to issue NNTP NEWGROUPS and
 22  
  * NEWNEWS queries, implemented by
 23  
  * {@link org.apache.commons.net.nntp.NNTPClient#listNewNewsgroups listNewNewsGroups }
 24  
  *  and
 25  
  * {@link org.apache.commons.net.nntp.NNTPClient#listNewNews listNewNews }
 26  
  *  respectively.  It prevents you from having to format
 27  
  * date, time, distribution, and newgroup arguments.
 28  
  * <p>
 29  
  * You might use the class as follows:
 30  
  * <pre>
 31  
  * query = new NewsGroupsOrNewsQuery(new GregorianCalendar(97, 11, 15), false);
 32  
  * query.addDistribution("comp");
 33  
  * NewsgroupInfo[] newsgroups = client.listNewgroups(query);
 34  
  * </pre>
 35  
  * This will retrieve the list of newsgroups starting with the comp.
 36  
  * distribution prefix created since midnight 11/15/97.
 37  
  * <p>
 38  
  * <p>
 39  
  * @author Daniel F. Savarese
 40  
  * @see NNTPClient
 41  
  ***/
 42  
 
 43  
 public final class NewGroupsOrNewsQuery
 44  
 {
 45  
     private String __date, __time;
 46  
     private StringBuffer __distributions;
 47  
     private StringBuffer __newsgroups;
 48  
     private boolean __isGMT;
 49  
 
 50  
 
 51  
     /***
 52  
      * Creates a new query using the given time as a reference point.
 53  
      * <p>
 54  
      * @param date  The date since which new groups or news have arrived.
 55  
      * @param gmt   True if the date should be considered as GMT, false if not.
 56  
      ***/
 57  
     public NewGroupsOrNewsQuery(Calendar date, boolean gmt)
 58  0
     {
 59  
         int num;
 60  
         String str;
 61  
         StringBuffer buffer;
 62  
 
 63  0
         __distributions = null;
 64  0
         __newsgroups = null;
 65  0
         __isGMT = gmt;
 66  
 
 67  0
         buffer = new StringBuffer();
 68  
 
 69  
         // Get year
 70  0
         num = date.get(Calendar.YEAR);
 71  0
         str = Integer.toString(num);
 72  0
         num = str.length();
 73  
 
 74  0
         if (num >= 2)
 75  0
             buffer.append(str.substring(num - 2));
 76  
         else
 77  0
             buffer.append("00");
 78  
 
 79  
         // Get month
 80  0
         num = date.get(Calendar.MONTH) + 1;
 81  0
         str = Integer.toString(num);
 82  0
         num = str.length();
 83  
 
 84  0
         if (num == 1)
 85  
         {
 86  0
             buffer.append('0');
 87  0
             buffer.append(str);
 88  
         }
 89  0
         else if (num == 2)
 90  0
             buffer.append(str);
 91  
         else
 92  0
             buffer.append("01");
 93  
 
 94  
         // Get day
 95  0
         num = date.get(Calendar.DAY_OF_MONTH);
 96  0
         str = Integer.toString(num);
 97  0
         num = str.length();
 98  
 
 99  0
         if (num == 1)
 100  
         {
 101  0
             buffer.append('0');
 102  0
             buffer.append(str);
 103  
         }
 104  0
         else if (num == 2)
 105  0
             buffer.append(str);
 106  
         else
 107  0
             buffer.append("01");
 108  
 
 109  0
         __date = buffer.toString();
 110  
 
 111  0
         buffer.setLength(0);
 112  
 
 113  
         // Get hour
 114  0
         num = date.get(Calendar.HOUR_OF_DAY);
 115  0
         str = Integer.toString(num);
 116  0
         num = str.length();
 117  
 
 118  0
         if (num == 1)
 119  
         {
 120  0
             buffer.append('0');
 121  0
             buffer.append(str);
 122  
         }
 123  0
         else if (num == 2)
 124  0
             buffer.append(str);
 125  
         else
 126  0
             buffer.append("00");
 127  
 
 128  
         // Get minutes
 129  0
         num = date.get(Calendar.MINUTE);
 130  0
         str = Integer.toString(num);
 131  0
         num = str.length();
 132  
 
 133  0
         if (num == 1)
 134  
         {
 135  0
             buffer.append('0');
 136  0
             buffer.append(str);
 137  
         }
 138  0
         else if (num == 2)
 139  0
             buffer.append(str);
 140  
         else
 141  0
             buffer.append("00");
 142  
 
 143  
 
 144  
         // Get seconds
 145  0
         num = date.get(Calendar.SECOND);
 146  0
         str = Integer.toString(num);
 147  0
         num = str.length();
 148  
 
 149  0
         if (num == 1)
 150  
         {
 151  0
             buffer.append('0');
 152  0
             buffer.append(str);
 153  
         }
 154  0
         else if (num == 2)
 155  0
             buffer.append(str);
 156  
         else
 157  0
             buffer.append("00");
 158  
 
 159  0
         __time = buffer.toString();
 160  0
     }
 161  
 
 162  
 
 163  
     /***
 164  
      * Add a newsgroup to the list of newsgroups being queried.  Newsgroups
 165  
      * added this way are only meaningful to the NEWNEWS command.  Newsgroup
 166  
      * names may include the <code> * </code> wildcard, as in
 167  
      * <code>comp.lang.* </code> or <code> comp.lang.java.* </code>.  Adding
 168  
      * at least one newsgroup is mandatory for the NEWNEWS command.
 169  
      * <p>
 170  
      * @param newsgroup  The newsgroup to add to the list of groups to be
 171  
      *                   checked for new news.
 172  
      ***/
 173  
     public void addNewsgroup(String newsgroup)
 174  
     {
 175  0
         if (__newsgroups != null)
 176  0
             __newsgroups.append(',');
 177  
         else
 178  0
             __newsgroups = new StringBuffer();
 179  0
         __newsgroups.append(newsgroup);
 180  0
     }
 181  
 
 182  
 
 183  
     /***
 184  
      * Add a newsgroup to the list of newsgroups being queried, but indicate
 185  
      * that group should not be checked for new news.  Newsgroups
 186  
      * added this way are only meaningful to the NEWNEWS command.
 187  
      * Newsgroup names may include the <code> * </code> wildcard, as in
 188  
      * <code>comp.lang.* </code> or <code> comp.lang.java.* </code>.
 189  
      * <p>
 190  
      * The following would create a query that searched for new news in
 191  
      * all comp.lang.java newsgroups except for comp.lang.java.advocacy.
 192  
      * <pre>
 193  
      * query.addNewsgroup("comp.lang.java.*");
 194  
      * query.omitNewsgroup("comp.lang.java.advocacy");
 195  
      * </pre>
 196  
      * <p>
 197  
      * @param newsgroup  The newsgroup to add to the list of groups to be
 198  
      *                   checked for new news, but which should be omitted from
 199  
      *                   the search for new news..
 200  
      ***/
 201  
     public void omitNewsgroup(String newsgroup)
 202  
     {
 203  0
         addNewsgroup("!" + newsgroup);
 204  0
     }
 205  
 
 206  
 
 207  
     /***
 208  
      * Add a distribution group to the query.  The distribution part of a
 209  
      * newsgroup is the segment of the name preceding the first dot (e.g.,
 210  
      * comp, alt, rec).  Only those newsgroups matching one of the
 211  
      * distributions or, in the case of NEWNEWS, an article in a newsgroup
 212  
      * matching one of the distributions, will be reported as a query result.
 213  
      * Adding distributions is purely optional.
 214  
      * <p>
 215  
      * @param distribution A distribution to add to the query.
 216  
      ***/
 217  
     public void addDistribution(String distribution)
 218  
     {
 219  0
         if (__distributions != null)
 220  0
             __distributions.append(',');
 221  
         else
 222  0
             __distributions = new StringBuffer();
 223  0
         __distributions.append(distribution);
 224  0
     }
 225  
 
 226  
     /***
 227  
      * Return the NNTP query formatted date (year, month, day in the form
 228  
      * YYMMDD.
 229  
      * <p>
 230  
      * @return The NNTP query formatted date.
 231  
      ***/
 232  
     public String getDate()
 233  
     {
 234  0
         return __date;
 235  
     }
 236  
 
 237  
     /***
 238  
      * Return the NNTP query formatted time (hour, minutes, seconds in the form
 239  
      * HHMMSS.
 240  
      * <p>
 241  
      * @return The NNTP query formatted time.
 242  
      ***/
 243  
     public String getTime()
 244  
     {
 245  0
         return __time;
 246  
     }
 247  
 
 248  
     /***
 249  
      * Return whether or not the query date should be treated as GMT.
 250  
      * <p>
 251  
      * @return True if the query date is to be treated as GMT, false if not.
 252  
      ***/
 253  
     public boolean isGMT()
 254  
     {
 255  0
         return __isGMT;
 256  
     }
 257  
 
 258  
     /***
 259  
      * Return the comma separated list of distributions.  This may be null
 260  
      * if there are no distributions.
 261  
      * <p>
 262  
      * @return The list of distributions, which may be null if no distributions
 263  
      *         have been specified.
 264  
      ***/
 265  
     public String getDistributions()
 266  
     {
 267  0
         return (__distributions == null ? class="keyword">null : __distributions.toString());
 268  
     }
 269  
 
 270  
     /***
 271  
      * Return the comma separated list of newsgroups.  This may be null
 272  
      * if there are no newsgroups
 273  
      * <p>
 274  
      * @return The list of newsgroups, which may be null if no newsgroups
 275  
      *         have been specified.
 276  
      ***/
 277  
     public String getNewsgroups()
 278  
     {
 279  0
         return (__newsgroups == null ? class="keyword">null : __newsgroups.toString());
 280  
     }
 281  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.