Example usage for org.apache.commons.net.nntp Article setArticleNumber

List of usage examples for org.apache.commons.net.nntp Article setArticleNumber

Introduction

In this page you can find the example usage for org.apache.commons.net.nntp Article setArticleNumber.

Prototype

@Deprecated
    public void setArticleNumber(int a) 

Source Link

Usage

From source file:Main.java

/**
 * Given an {@link NNTPClient} instance, and an integer range of messages, return 
 * an array of {@link Article} instances.
 * @param client //from ww  w.j a v  a  2s. co m
 * @param lowArticleNumber
 * @param highArticleNumber
 * @return Article[] An array of Article
 * @throws IOException
 */
public static Article[] getArticleInfo(NNTPClient client, int lowArticleNumber, int highArticleNumber)
        throws IOException {
    Reader reader = null;
    Article[] articles = null;
    reader = (DotTerminatedMessageReader) client.retrieveArticleInfo(lowArticleNumber, highArticleNumber);

    if (reader != null) {
        String theInfo = readerToString(reader);
        StringTokenizer st = new StringTokenizer(theInfo, "\n");

        // Extract the article information
        // Mandatory format (from NNTP RFC 2980) is :
        // Subject\tAuthor\tDate\tID\tReference(s)\tByte Count\tLine Count

        int count = st.countTokens();
        articles = new Article[count];
        int index = 0;

        while (st.hasMoreTokens()) {
            StringTokenizer stt = new StringTokenizer(st.nextToken(), "\t");
            Article article = new Article();
            article.setArticleNumber(Integer.parseInt(stt.nextToken()));
            article.setSubject(stt.nextToken());
            article.setFrom(stt.nextToken());
            article.setDate(stt.nextToken());
            article.setArticleId(stt.nextToken());
            article.addHeaderField("References", stt.nextToken());
            articles[index++] = article;
        }
    } else {
        return null;
    }

    return articles;
}

From source file:net.longfalcon.newsj.util.NntpUtil.java

/**
 * Parse a response line from {@link #retrieveArticleInfo(long, long)}.
 *
 * @param line a response line//  w ww. j a  va  2 s .  c om
 * @return the parsed {@link Article}, if unparseable then isDummy()
 * will be true, and the subject will contain the raw info.
 * @since 3.0
 */
public static Article parseArticleEntry(String line) {
    // Extract the article information
    // Mandatory format (from NNTP RFC 2980) is :
    // articleNumber\tSubject\tAuthor\tDate\tID\tReference(s)\tByte Count\tLine Count

    Article article = new Article();
    article.setSubject(line); // in case parsing fails
    String parts[] = line.split("\t");
    if (parts.length > 6) {
        int i = 0;
        try {
            article.setArticleNumber(Long.parseLong(parts[i++]));
            article.setSubject(parts[i++]);
            article.setFrom(parts[i++]);
            article.setDate(parts[i++]);
            article.setArticleId(parts[i++]);
            article.addReference(parts[i++]);
        } catch (NumberFormatException e) {
            // ignored, already handled
        }
    }
    return article;
}

From source file:com.almarsoft.GroundhogReader.lib.ServerManager.java

public Vector<Object> getArticleInfoAndHeaderFromHEAD(long serverNumber, String charset,
        SQLiteDatabase catchedDB, String group) throws IOException, UsenetReaderException, ServerAuthException {
    clientConnectIfNot();/*from w  w w. ja  v  a2s .  c  o  m*/

    long ddbbId = -1;
    Vector<Object> ret = null;
    Reader reader = null;

    try {
        reader = (DotTerminatedMessageReader) mClient.retrieveArticleHeader(serverNumber);
    } catch (IOException e) {
        connect();
        reader = (DotTerminatedMessageReader) mClient.retrieveArticleHeader(serverNumber);
    }

    if (reader != null) {
        Header header = new Header(new ReaderInputStream(reader));
        Article article = new Article();
        article.setArticleNumber(serverNumber);
        article.setSubject(header.getField("Subject").getBody().trim());
        article.setFrom(header.getField("From").getBody().trim());
        article.setDate(header.getField("Date").getBody().trim());
        article.setArticleId(header.getField("Message-ID").getBody().trim());

        // Take the references
        Field refsField = header.getField("References");
        String refsStr = null;

        if (refsField != null)
            refsStr = header.getField("References").getBody().trim();

        if (refsStr != null) {
            String[] refs = refsStr.split(" ");

            for (String r : refs) {
                if (r.trim().length() == 0)
                    continue;
                article.addReference(r.trim());
            }
        }

        if (article != null) {
            String from = article.getFrom();
            if ((!mBannedThreadsSet.contains(article.simplifiedSubject()))
                    && (!mBannedTrollsSet.contains(from))) {

                ddbbId = insertArticleInDB(article, serverNumber, from, charset, catchedDB);
            }
        }

        // Meter la cabecera en la BBDD
        String outputPath = UsenetConstants.EXTERNALSTORAGE + "/" + UsenetConstants.APPNAME
                + "/offlinecache/groups/" + group + "/header/";
        FSUtils.writeStringToDiskFile(header.toString(), outputPath, Long.toString(ddbbId));
        DBUtils.setMessageCatched(ddbbId, true, mContext);

        ret = new Vector<Object>(2);
        ret.add(ddbbId);
        ret.add(article.getArticleId());
    }

    return ret;
}

From source file:com.almarsoft.GroundhogReader.lib.ServerManager.java

private Article buildArticleInfoFromXOVER(long articleNumber) throws IOException, ServerAuthException {
    clientConnectIfNot();/*from w ww . j a  va2  s.com*/

    Article article = null;
    Reader reader = null;

    try {
        reader = (DotTerminatedMessageReader) mClient.retrieveArticleInfo(articleNumber);
    } catch (IOException e) {
        connect();
        reader = (DotTerminatedMessageReader) mClient.retrieveArticleInfo(articleNumber);
    }

    if (reader != null) {
        String theInfo = MessageTextProcessor.readerToString(reader);

        if (theInfo.trim().length() == 0) {
            return null;
        }

        StringTokenizer st = new StringTokenizer(theInfo, "\n");
        String refsStr = null;

        try {
            // Extract the article information
            // Mandatory format (from NNTP RFC 2980) is :
            // Subject\tAuthor\tDate\tID\tReference(s)\tByte Count\tLine Count

            StringTokenizer stt = new StringTokenizer(st.nextToken(), "\t");
            article = new Article();
            article.setArticleNumber(Long.parseLong(stt.nextToken()));
            article.setSubject(stt.nextToken());
            article.setFrom(stt.nextToken());
            article.setDate(stt.nextToken());
            article.setArticleId(stt.nextToken());

            refsStr = stt.nextToken();
        } catch (NoSuchElementException e) {
            Log.w(UsenetConstants.APPNAME,
                    "NoSuchElementException parsing the article info, malformed or interrupted message?: "
                            + theInfo);
            return null;
        }

        catch (NumberFormatException e) {
            Log.e(UsenetConstants.APPNAME,
                    "NumberFormatException in getArticleInfo: " + theInfo + " " + e.toString());
        }

        // Crappy heuristics... but nextToken skips the empty reference if it's no reference and give up the 
        // next token as reference
        if (refsStr != null && refsStr.contains("@")) {
            String[] refs = refsStr.split(" ");

            for (String r : refs)
                article.addReference(r);
        }
    }

    return article;
}

From source file:org.ossmeter.platform.communicationchannel.nntp.local.NntpUtil.java

public static Article[] getArticleInfo(NNTPClient nntpClient, int startArticleNumber, int endArticleNumber)
        throws IOException {
    Reader reader = null;/*w w w.  ja  va  2  s .  c o m*/
    Article[] articles = null;
    reader = (DotTerminatedMessageReader) nntpClient.retrieveArticleInfo(startArticleNumber, endArticleNumber);

    if (reader != null) {
        String theInfo = readerToString(reader);
        StringTokenizer st = new StringTokenizer(theInfo, "\n");

        // Extract the article information
        // Mandatory format (from NNTP RFC 2980) is :
        // Subject\tAuthor\tDate\tID\tReference(s)\tByte Count\tLine Count

        int count = st.countTokens();
        articles = new Article[count];
        int index = 0;

        while (st.hasMoreTokens()) {
            StringTokenizer stt = new StringTokenizer(st.nextToken(), "\t");
            Article article = new Article();
            article.setArticleNumber(Integer.parseInt(stt.nextToken()));
            article.setSubject(decodeSubject(stt.nextToken()));
            article.setFrom(stt.nextToken());
            article.setDate(stt.nextToken());
            article.setArticleId(stt.nextToken());
            article.addHeaderField("References", stt.nextToken());
            articles[index++] = article;
        }
    } else {
        return null;
    }

    return articles;
}