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

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

Introduction

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

Prototype

public void setFrom(String string) 

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  www. j a  v  a 2 s .c  om
 * @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 v  a 2  s .  c  o m*/
 * @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();/*  w w  w  .  j  a  v  a  2 s. 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();//w w w. j  a v  a2s .c  om

    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;/*from   www  .  j  a v a 2s.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;
}