| /******************************************************************************* |
| * Copyright (c) 2005, 2006 Erkki Lindpere and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Erkki Lindpere - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ecf.internal.provider.phpbb; |
| |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.apache.commons.httpclient.NameValuePair; |
| import org.eclipse.ecf.bulletinboard.BBException; |
| import org.eclipse.ecf.bulletinboard.IThreadMessage; |
| import org.eclipse.ecf.internal.bulletinboard.commons.AbstractBulletinBoard; |
| import org.eclipse.ecf.internal.bulletinboard.commons.webapp.PostRequest; |
| import org.eclipse.ecf.internal.bulletinboard.commons.webapp.WebRequest; |
| import org.eclipse.ecf.internal.provider.phpbb.identity.ThreadID; |
| |
| public class ThreadBrowser2 { |
| Thread thread; |
| |
| private AbstractBulletinBoard bb; |
| |
| public ThreadBrowser2(AbstractBulletinBoard bb, Thread thread) { |
| this.bb = bb; |
| this.thread = thread; |
| } |
| |
| private static final int STARTPAGE = 1; |
| |
| private static final int NONE = -1; |
| |
| public List<IThreadMessage> fetchNewMessages() throws BBException { |
| List<IThreadMessage> messages = new ArrayList<IThreadMessage>(); |
| try { |
| int nextPage = STARTPAGE; |
| while (nextPage > NONE) { |
| WebRequest req = createRequest(nextPage); |
| req.execute(); |
| String resp = req.getResponseBodyAsString(); |
| req.releaseConnection(); |
| // Add messages from page |
| messages.addAll(0, ((PHPBBParser) bb.getParser()) |
| .parseMessages2(resp, thread.lastReadMessageId, true)); |
| nextPage = ((PHPBBParser) bb.getParser()).parseNextPage(resp); |
| } |
| } catch (IOException e) { |
| e.printStackTrace(); |
| } |
| return messages; |
| } |
| |
| public WebRequest createRequest(int page) { |
| /* |
| * String ppStr = |
| * bb.getActiveConfiguration().getProperties().getProperty( |
| * IBBConfiguration.P_POSTS_PER_PAGE); |
| */ |
| int pp = 15; |
| int start = (page - 1) * pp; |
| |
| WebRequest req = new PostRequest(bb.getHttpClient(), bb.getURL(), |
| "viewtopic.php?t=" + ((ThreadID) thread.getID()).getLongValue() |
| + "&start=" + start); |
| req.addParameter(new NameValuePair("postorder", "desc")); |
| req.addParameter(new NameValuePair("postdays", "0")); |
| req.addParameter(new NameValuePair("submit", "Go")); |
| return req; |
| } |
| } |