forummessage.java
来自「Jive是基于JSP/JAVA技术构架的一个大型BBS论坛系统,这是Jive论坛」· Java 代码 · 共 373 行
JAVA
373 行
/** * $RCSfile: ForumMessage.java,v $ * $Revision: 1.2 $ * $Date: 2002/05/09 22:42:33 $ * * 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.*;import java.io.*;/** * A ForumMessage encapsulates message data. Each message belongs to a thread, * and relates to other messages in a thread in a tree relationship. This system * allows messages to represent threaded conversations. For example: * * <pre> * [thread] * |- [message] * |- [message] * |- [message] * |- [message] * |- [message] * |- [message] * </pre><p> * * Each message has a subject and body. Messages are authored by a user * in the system or can be anonymous. An ID is given to each message so that * it can be tracked uniquely. Because is possible that one might want to store * more information with each message besides a subject and body, * each message can have an arbitrary number of properties. For example, a * property "IPAddress" could be stored with each message that records the IP * address of the person posting the message for security reasons.<p> * * The creation date, and the date the message was last modified are maintained * for each message. These values are normally maintained automatically by * Jive and do not need to be set explicitly except in special circumstances.<p> * * Message editing has a number of rules:<ul> * <li>System or forum administrators can edit any message at any time. * <li>The message author can edit a message at any time. * <li>Anonymous messages can be edited by anonyone before being added to * a thread. After being added to a thread, only system or forum admins * can edit them.</ul> * Of course, these message editing rules can be made more strict by a skin. * For example, you may choose to never allow anyone to edit messages, or only * messages to be edited for the first fifteen minutes after they are posted.<p> * * For added functionality, any number of filters can be applied to a message. * Filters dynamically format the subject and body of a message. Methods are * also provided to bypass filters. * * @see ForumMessageFilter */public interface ForumMessage { /** * Returns the id of the message. * * @return the unique id of the message. */ public long getID(); /** * Returns the date the message was created. * * @return the date the message was created. */ public Date getCreationDate(); /** * Sets the creation date of the message. In most cases, the creation date * will default to when the message was entered into the system. However, * the creation date needs to be set manually when importing messages. * In other words, skin authors should ignore this method since it only * intended for system maintenance. * * @param creationDate the date the message was created. * * @throws UnauthorizedException if does not have ADMIN permissions. */ public void setCreationDate(Date creationDate) throws UnauthorizedException; /** * Returns the date the message was last modified. When a message is first * created, the date returned by this method is identical to the creation * date. The modified date is updated every time a message property is * updated, such as the message body. * * @return the date the message was last modified. */ public Date getModifiedDate(); /** * Sets the date the message was last modified. In most cases, last modifed * will default to when the message data was last changed. However, * the last modified date needs to be set manually when importing messages. * In other words, skin authors should ignore this method since it only * intended for system maintenance. * * @param modifiedDate the date the message was modified. * @throws UnauthorizedException if does not have ADMIN permissions. */ public void setModifiedDate(Date modifiedDate) throws UnauthorizedException; /** * Returns the message subject. If message filters are active, the * subject returned will be a filtered one. Because filters often provide * security functionality, this method is the preferred way to get the * subject of a message. * * @return the subject of the message. */ public String getSubject(); /** * Returns the message subject, bypassing any active filters. Because * filters often provide security, this method should be used with caution. * In particular, you should avoid showing unfiltered data in an environment * where embedded HTML might be interpreted.<p> * * Unfiltered content is necessary for a few reasons. One is when saving * Jive content to another persistence mechanism such as an XML format. * Another is when you need to skip filter formatting, such as when a user * is responding to another user's message. * * @return the subject of the message. */ public String getUnfilteredSubject(); /** * Sets the subject of the message. * * @param subject the subject of the message. * @throws UnauthorizedException if not allowed to edit the message. */ public void setSubject(String subject) throws UnauthorizedException; /** * Returns the message body. If message filters are active, the body * returned will be a filtered one. Because filters often provide security * functionality such as stripping out HTML and Javascript, this method is * the preferred way to get the body of a message. * * @return the body of the message. */ public String getBody(); /** * Returns the message body, bypassing any active filters. Because filters * often provide security, this method should be used with caution. In * particular, you should avoid showing unfiltered data in an environment * where embedded HTML might be interpreted.<p> * * Unfiltered content is necessary for a few reasons. One is when saving * Jive content to another persistence mechanism such as an XML format. * Another is when you need to skip filter formatting, such as when a user * is responding to another user's message. * * @return the body of the message. */ public String getUnfilteredBody(); /** * Sets the body of the message. * * @param body the body of the message. * @throws UnauthorizedException if does not have ADMIN permissions. */ public void setBody(String body) throws UnauthorizedException; /** * Returns the User that authored the message. If the message was created * anonymously, this method will return <tt>null</tt>. * * @return the author of the message. */ public User getUser(); /** * Creates a new attachment for the message. Each attachment has a name, * content type and binary data. Rules about who can create attachments and * what kind attachments are allowed are controlled via an AttachmentManager. * Important note: at this time, attachments can only be created <b>after</b> * a message has been added to a thread.<p> * * @param name the name of the new attachment, usually the file name. * @param contentType the content type of the attachment. * @param data an InputStream that contains the binary data of the * attachment. The stream will <tt>never be closed</tt> so you must * close it manually after calling this method. * @return an Attachment object representing the new attachment created. * @throws IllegalStateException if the message has not been added to a * thread yet. * @throws AttachmentException if an error occured while creating the * attachment. * @throws UnauthorizedException if not allowed to create attachments. * @see Attachment * @see AttachmentManager */ public Attachment createAttachment(String name, String contentType, InputStream data) throws IllegalStateException, AttachmentException, UnauthorizedException; /** * Returns the number of attachments the message has. * * @return the number of attachments the message has. */ public int getAttachmentCount(); /** * Deletes an attachment that belongs to the message. Only administrators * or the creator of the message are allowed to call this method. * * @param attachment the attachment to delete. * @throws IllegalArgumentException if the attachment doesn't belong to * the message. * @throws UnauthorizedException if not authorized to delete the attachment. * @throws AttachmentException if there was an error deleting the attachment. */ public void deleteAttachment(Attachment attachment) throws AttachmentException, UnauthorizedException; /** * Returns an Iterator for all the attachments of the message. * * @return an Iterator for the message's attachments. * @see Attachment */ public Iterator attachments(); /** * Returns the number of moderation points the message has. The default * moderation value is inherited from the forum.<p> * * If the moderation value is less than the forum's minimum, then the * message will not be displayed by default. * * @return the number of moderation points the message 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 a number of things will * happen:<ul> * <li>The message will not be visible in the thread by default. * <li>The thread and forum of the message will not have their modified * date's updated. * <li>The message will not be exported to installed gateways. * <li>Watch updates will not be triggered.</ul><p> * * When calling this method results in a message to go from below the * forum's minimum moderation threshold to above, then the actions listed * above will all be executed. Any change of the moderation value also * results in the modified date of the message being updated.<p> * * Only administrators and moderators can call this method. The two types * of moderators are thread moderators and message moderators. Either type * of moderator can call this method since a thread moderator is also * automatically a message moderator.<p> * * The authorization token of the user must be passed into this method as * a paramater for moderation auditing purposes. * * @param value the number of moderation points for the message. * @param auth the Authorization token of the user that is making the * moderation decision. * @throws UnauthorizedException if does not have ADMIN, MODERATE_MESSAGES * or MODERATE_THREADS permissions. * * @see com.jivesoftware.forum.gateway.Gateway * @see WatchManager */ public void setModerationValue(int value, Authorization auth) throws UnauthorizedException; /** * Returns an extended property of the message. Each message can have an * arbitrary number of extended properties. This lets particular skins * or filters provide enhanced functionality that is not part of the base * interface.<p> * * For security reasons, you should enable an HTML filter in case properties * contain malicious HTML code. * * @param name the name of the property to get. * @return the value of the property. */ public String getProperty(String name); /** * Returns an extended property of the message, bypassing any filters. * Each message can have an arbitrary number of extended properties. This * lets particular skins or filters provide enhanced functionality that is * not part of the base interface.<p> * * Because properties are not filtered before being returned, this method * should be used with caution. In particular, you should avoid showing * unfiltered data in an environment where embedded HTML might be * interpreted. * * @param name the name of the property to get. * @return the value of the property. */ public String getUnfilteredProperty(String name); /** * Sets an extended property of the message. Each message can have an * arbitrary number of extended properties. This lets particular skins * or filters provide enhanced functionality that is not part of the base * interface. * * @param name the name of the property to set. * @param value the new value for the property. * @throws UnauthorizedException if not allowed to edit the message. */ 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. * * @param name the name of the property to delete. * @throws UnauthorizedException if not allowed to edit the message. */ public void deleteProperty(String name) throws UnauthorizedException; /** * Returns an Iterator for all the names of the message properties. * * @return an Iterator for the names of all message properties. */ public Iterator propertyNames(); /** * Returns true if the message was posted anonymously. This is a convenience * method for: <tt>message.getUser() != null</tt>. * * @return true if the message was posted anonymously. */ public boolean isAnonymous(); /** * Returns the thread the message belongs to. * * @return the thread the message belongs to. */ public ForumThread getForumThread(); /** * 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 + -
显示快捷键?