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

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

Introduction

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

Prototype

public void addReference(String msgId) 

Source Link

Document

Adds a message-id to the list of messages that this message references (i.e.

Usage

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

/**
 * Parse a response line from {@link #retrieveArticleInfo(long, long)}.
 *
 * @param line a response line/*  www.j av a2 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  va2  s.  co  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  www .  j av  a  2s . c  o m*/

    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;
}