blob: 5d9f7953d527fe763e4aab2b222baf12e0b39daf [file] [log] [blame]
/*******************************************************************************
* 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;
}
}