blob: ee03b322fae486f43cfc7994cc153219412bd7a9 [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.bulletinboard;
import java.util.Date;
import java.util.List;
import org.eclipse.ecf.core.identity.ID;
/**
* Models a thread in a forum.
*
* @author Erkki
*/
public interface IThread extends IBBObject {
/**
* You are subscribed to this thread.
*/
public static final int SUBSCRIBED = 1;
/**
* You are not subscribed to this thread.
*/
public static final int UNSUBSCRIBED = 0;
/**
* This thread is "sticky".
*/
public static final int STICKY = 1;
/**
* Returns the type of this thread, STICKY or 0.
*
* @return the type of this thread
*/
public int getType();
/**
* Returns the author of the thread.
*
* @return the author of the thread.
*/
public IMember getAuthor();
public Date getTimePosted();
public Date getTimeUpdated();
public int getNumberOfMessages();
/**
* Returns the poll associated with this thread, or null if none.
*
* @return poll associated with this thread
*/
public IPoll getPoll();
/**
* Returns the forum that this thread belongs to or null if unknown.
*
* @return the forum
*/
public IForum getForum();
/**
* Returns all the messages in this thread.
*
* Note: this method may not return all messages in the thread.
*
* @return messages in this thread
* @throws BBException
* if fetching the messages failed
*/
public List getMessages() throws BBException;
/**
* Returns all new messages in this thread. The exact meaning of when a
* message is new may differ across implementations.
*
* Equivalent to calling getNewMessages(null).
*
* @return new messages in this thread
* @throws BBException
* if fetching the messages failed
*/
public List getNewMessages() throws BBException;
/**
* Returns all new messages since the last read message ID given in the
* parameter. If the parameter is null, then getNewMessages() is called and
* the Bulletin Board itself may decide which messages are new and which are
* not.
*
* @param lastPostId
* the message with this id and any older messages must not be
* returned.
* @return new messages since the last read one
* @throws BBException
* if fetching the messages failed
*/
public List getNewMessages(ID lastPostId) throws BBException;
/**
* Returns your subscription status of this thread. SUBSCRIBED or -1 if the
* status is unknown.
*
* @return subscription status
*/
public int getSubscriptionStatus();
/**
* Updates your subscription status of this thread.
*
* @param newSubscriptionStatus
* the new subscription status
* @return true if the subscription update was successful
* @throws BBException
* if the status update failed
*/
public boolean updateSubscription(int newSubscriptionStatus)
throws BBException;
/**
* Creates a message that can be filled with contents and posted in this
* thread using the postReply(IThreadMessage) method.
*
* @return a newly created message that should be filled and then posted in
* this thread
* @throws IllegalWriteException
* if the thread is read-only
*/
public IThreadMessage createReplyMessage() throws IllegalWriteException;
/**
* Similar to createReplyMessage(), but creates the message in such way that
* it contains a reference to an existing message in this thread.
*
* @param replyTo
* the message that the new one is a reply to.
* @return a newly created message that should be filled and then posted in
* this thread
* @throws IllegalWriteException
* if the thread is read-only
*/
public IThreadMessage createReplyMessage(IThreadMessage replyTo)
throws IllegalWriteException;
/**
* Returns the message object that will be used to post this thread.
*
* @return the message to be filled for posting
* @throws IllegalWriteException
* if this thread has already been created
*/
public IThreadMessage getPrePostMessage() throws IllegalWriteException;
/**
* Posts the given message as a reply in this thread.
*
* @param message
* the message to post
* @return the ID of the message that was posted, or null if it was not
* possible to obtain the ID
* @throws IllegalWriteException
* if the thread is read-only
* @throws BBException
* if posting failed
*/
public ID postReply(IThreadMessage message) throws IllegalWriteException,
BBException;
}