List of usage examples for org.apache.commons.net.nntp Article setSubject
public void setSubject(String string)
From source file:net.longfalcon.newsj.util.NntpUtil.java
/** * Parse a response line from {@link #retrieveArticleInfo(long, long)}. * * @param line a response line//from w w w.j av a 2s. 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: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 va 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:com.almarsoft.GroundhogReader.lib.ServerManager.java
public Vector<Object> getArticleInfoAndHeaderFromHEAD(long serverNumber, String charset, SQLiteDatabase catchedDB, String group) throws IOException, UsenetReaderException, ServerAuthException { clientConnectIfNot();/* w ww. java 2s. c om*/ 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();/* www. j a va 2 s . 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; }
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 w w w.ja va 2 s.c om 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; }