forumthread.java

来自「Jive是基于JSP/JAVA技术构架的一个大型BBS论坛系统,这是Jive论坛」· Java 代码 · 共 285 行

JAVA
285
字号
/** * $RCSfile: ForumThread.java,v $ * $Revision: 1.1 $ * $Date: 2002/02/27 18:51:21 $ * * Copyright (C) 1999-2001 CoolServlets, Inc. All rights reserved. * * This software is the proprietary information of CoolServlets, Inc. * Use is subject to license terms. */package com.jivesoftware.forum;import java.util.Date;import java.util.Iterator;/** * A ForumThread is a container for a hierarchy of ForumMessages.<p> * * Intimately tied to the concept of a ForumThread is a root message. A * root message must be supplied when creating a thread. Subsequently, all * further messages posted to the thread are children of the root message.<p> * * To get a handle on a ForumThread object, the <code>getThread(long)</code> method * should be called from a Forum object. To create a thread, use the * <create>ForumFactory.createThread(ForumMessage)</code> method. After creating * a thread, you must attach it to a Forum by calling <code>Forum.addThread()</code>. * To delete a ForumThread, call the <code>Forum.deleteThread(long)</code> method.<p> * * There are two options for navigating through the messages in a thread. * <ul> *   <li>A TreeWalker -- this provides a hierarchical view of the messages in *      in the thread. For most skins, this will be the most appropriate *      navigation method. *   <li>An Iterator -- this provides a flat view of the messages in the thread. *      This view of thread is useful for skins that want to provide *      functionality such as listing all the messages in the order *      they were created, etc. * </ul> * * Because a root message must be passed in when creating a thread, you must * first create that message before creating the thread. The following code * snippet demonstrates: * <pre> * //Assume that a forum object and user object are already defined. * ForumMessage rootMessage = myForum.createMessage(myUser); * rootMessage.setSubject("A subject"); * rootMessage.setBody("A body"); * ForumThread myThread = myForum.createThread(rootMessage); * </pre> */public interface ForumThread {    /**     * Returns the unique id of the thread.     */    public long getID();    /**     * Returns the subject of the root message of the thread. This is a     * convenience method equivalent to <code>getRootMessage().getSubject()</code>.     *     * @return the name of the thread, which is the subject of the root message.     */    public String getName();    /**     * Returns the Date that the thread was created.     *     * @return the Date the thread was created.     */    public Date getCreationDate();    /**     * Sets the creation date of the thread. In most cases, the creation date     * will default to when the thread was entered into the system. However,     * the creation date needs to be set manually when importing data.     * In other words, skin authors should ignore this method since it only     * intended for system maintenance.     *     * @param creationDate the date the thread was created.     * @throws UnauthorizedException if does not have ADMIN permissions.     */    public void setCreationDate(Date creationDate) throws UnauthorizedException;    /**     * Returns the Date that the thread was last modified. In other words, the     * date of the most recent message in the thread.     */    public Date getModifiedDate();    /**     * Sets the date the thread was last modified. In most cases, last modifed     * will default to when the thread data was last changed. However,     * the last modified date needs to be set manually when importing data.     * In other words, skin authors should ignore this method since it only     * intended for system maintenance.     *     * @param modifiedDate the date the thread was modified.     * @throws UnauthorizedException if does not have ADMIN permissions.     */    public void setModifiedDate(Date modifiedDate) throws UnauthorizedException;    /**     * Returns the number of moderation points the thread has. The default     * moderation value is inherited from the forum. If the moderation     * value is less than the forum's minimum, then the thread will not be     * displayed by default. Because a thread and its root message must     * always go together, their moderation values are linked and are always     * the same. This means that setting the moderation value on the thread or     * setting the moderation value of a root message will always affect both     * objects.<p>     *     * If the moderation value is less than the forum's minimum, then the     * thread will not be displayed by default.     *     * @return the number of moderation points the thread has.     */    public int getModerationValue();    /**     * Sets the number of moderation points the message has. If the moderation     * value is less than the forum's minimum, then the thread will not be     * displayed by default. Because a thread and its root message must     * always go together, their moderation values are linked and are always     * the same. This means that setting the moderation value on the thread or     * setting the moderation value of a root message will always affect both     * objects.<p>     *     * The authorization token of the user must be passed into this method as     * a paramater for auditing purposes.     *     * @param value the number of moderation points for the thread.     * @param auth the Authorization token of the user that is making the     *      moderation decision.     * @throws UnauthorizedException if does not have ADMIN or MODERATE_THREADS     *      permissions.     */    public void setModerationValue(int value, Authorization auth)            throws UnauthorizedException;    /**     * Returns an extended property of the thread. Each thread can have an     * arbitrary number of extended properties. This allows for enhanced     * functionality that is not part of the base interface.     *     * @param name the name of the property to get.     * @param the value of the property specified by name.     */    public String getProperty(String name);    /**     * Sets an extended property of the thread. Each thread can have an     * arbitrary number of extended properties. This allows for enhanced     * functionality that is not part of the base interface.<p>     *     * The user that created the thread (author of rootMessage), or system or     * forum admins can always call this method. Additionally, anyone (including     * anonymous users) can call this method before the thread has been     * added to a Forum.     *     * @param name the name of the property to set.     * @param value the new value for the property.     * @throws UnauthorizedException if not allowed to set extended properties.     */    public void setProperty(String name, String value) throws UnauthorizedException;    /**     * Deletes an extended property. If the property specified by     * <code>name</code> does not exist, this method will do nothing.<p>     *     * The user that created the thread (author of rootMessage), or system or     * forum admins can always call this method. Additionally, anyone (including     * anonymous users) can call this method before the thread has been     * added to a Forum.     *     * @param name the name of the property to delete.     * @throws UnauthorizedException if not allowed to delete extended properties.     */    public void deleteProperty(String name) throws UnauthorizedException;    /**     * Returns an Iterator for the names of the thread properties.     *     * @return an Iterator for the names of the thread properties.     */    public Iterator propertyNames();    /**     * Returns the parent Forum of the thread.     */    public Forum getForum();    /**     * Returns a message from the thread based on its id.     *     * @param messageID the ID of the message to get from the thread.     */    public ForumMessage getMessage(long messageID)            throws ForumMessageNotFoundException;    /**     * Returns the root message of a thread. The root message is a special     * first message that is intimately tied to the thread for most forumViews.     * All other messages in the thread are children of the root message.     */    public ForumMessage getRootMessage();    /**     * Returns the number of messages in the thread. This includes the root     * message. So, to find the number of replies to the root message,     * subtract one from the answer of this method.     */    public int getMessageCount();    /**     * Returns the number of messages in the thread based on the specified     * result filter. This includes the root message. So, to find the number of     * replies to the root message, subtract one from the answer of this method.     *     * @param resultFilter a filter to limit the message count query, such as     *      date or moderation value range.     */    public int getMessageCount(ResultFilter resultFilter);    /**     * Adds a new message to the thread.     *     * @param parentMessage some message in the thread that will be parent     * @param newMessage message to add to the thread under the parent     * @throws UnauthorizedException if does not have CREATE_MESSAGE permissions.     */    public void addMessage(ForumMessage parentMessage, ForumMessage newMessage)            throws UnauthorizedException;    /**     * Deletes a message in the thread. Deleting a message also deletes all     * of its children messages. The search index and other resources that     * referenced the message and its children will also be updated     * appropriately.     *     * @throws IllegalArgumentException if the message does not belong to the     *   thread.     * @throws UnauthorizedException if does not have ADMIN permissions.     */    public void deleteMessage(ForumMessage message)            throws UnauthorizedException;    /**     * Returns a TreeWalker for the thread. A TreeWalker is used     * to navigate through the tree of messages in a hierarchical manner.     */    public TreeWalker treeWalker();    /**     * Return an Iterator for all the messages in a thread.     */    public Iterator messages();    /**     * Returns a Iterator for all the messages in the thread that match the     * criteria specified by the ResultFilter.     *     * @param resultFilter a ResultFilter object to perform filtering and     *      sorting with.     * @return an Iterator for the messages in the thread that match the     *      ResultFilter.     */    public Iterator messages(ResultFilter resultFilter);    /**     * Returns true if the handle on the object has the permission specified.     * For example, if a forum administrator has a handle on this object, then     * calling hasPermission(ForumPermissions.FORUM_ADMIN) would return true.<p>     *     * A list of possible permissions can be found in the ForumPermissions     * class. Certain methods of this class are restricted to certain     * permissions as specified in the method comments.     *     * @param type a permission type from the ForumPermissions class.     * @return true if the handle on the object has the specified permission.     * @see ForumPermissions     */    public boolean hasPermission(int type);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?