📄 dbforummessage.java
字号:
/** * $RCSfile: DbForumMessage.java,v $ * $Revision: 1.7 $ * $Date: 2000/12/21 03:20:03 $ * * Copyright (C) 2000 CoolServlets.com. All rights reserved. * * =================================================================== * The Apache Software License, Version 1.1 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by * CoolServlets.com (http://www.coolservlets.com)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Jive" and "CoolServlets.com" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please * contact webmaster@coolservlets.com. * * 5. Products derived from this software may not be called "Jive", * nor may "Jive" appear in their name, without prior written * permission of CoolServlets.com. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of CoolServlets.com. For more information * on CoolServlets.com, please see <http://www.coolservlets.com>. */package com.coolservlets.forum.database;import java.sql.*;import java.util.*;import java.text.SimpleDateFormat;import com.coolservlets.forum.*;import com.coolservlets.util.Cacheable;import com.coolservlets.util.CacheSizes;import com.coolservlets.util.StringUtils;/** * Database implementation of the ForumMessage interface. It stores messages * in the JiveMessage database table, and message properties in JiveMessageProp * table. */public final class DbForumMessage implements ForumMessage, Cacheable { /** DATABASE QUERIES **/ private static final String LOAD_PROPERTIES = "SELECT name, propValue FROM jiveMessageProp WHERE messageID=?"; private static final String DELETE_PROPERTIES = "DELETE FROM jiveMessageProp WHERE messageID=?"; private static final String INSERT_PROPERTY = "INSERT INTO jiveMessageProp(messageID,name,propValue) VALUES(?,?,?)"; private static final String LOAD_MESSAGE = "SELECT userID, creationDate, modifiedDate, subject, body, threadID FROM " + "jiveMessage WHERE messageID=?"; private static final String INSERT_MESSAGE = "INSERT INTO jiveMessage(messageID, threadID,creationDate,modifiedDate,userID," + "subject,body,approved) VALUES(?,?,?,?,?,?,?,1)"; private static final String SAVE_MESSAGE = "UPDATE jiveMessage SET userID=?, subject=?, body=?, creationDate=?, modifiedDate=? " + "WHERE messageID=?"; private static final String GET_FORUM_BY_THREAD = "SELECT forumID FROM jiveThread where threadID=?"; private int id = -1; private java.util.Date creationDate; private java.util.Date modifiedDate; private String subject = ""; private String body = ""; private int userID; private int threadID; private Map properties; private Object propertyLock = new Object(); private ForumFactory factory; private ForumThread thread = null; /** * Indicates if the object is ready to be saved or not. An object is not * ready to be saved if it has just been created and has not yet been added * to its container. For example, a message added to a thread, etc. */ private boolean isReadyToSave = false; /** * Creates a new DbForumMessage object. */ protected DbForumMessage(User user, ForumFactory factory) { this.id = DbSequenceManager.nextID("ForumMessage"); long now = System.currentTimeMillis(); creationDate = new java.util.Date(now); modifiedDate = new java.util.Date(now); this.userID = user.getID(); this.factory = factory; properties = Collections.synchronizedMap(new HashMap()); } /** * Loads the specified DbForumMessage by its message id. */ protected DbForumMessage(int id, DbForumFactory factory) throws ForumMessageNotFoundException { this.id = id; this.factory = factory; loadFromDb(); loadProperties(); } //FROM THE FORUMMESSAGE INTERFACE// public int getID() { return id; } public java.util.Date getCreationDate() { return creationDate; } public void setCreationDate(java.util.Date creationDate) throws UnauthorizedException { this.creationDate = creationDate; //Only save to the db if the object is read if (!isReadyToSave) { return; } saveToDb(); } public java.util.Date getModifiedDate() { return modifiedDate; } public void setModifiedDate(java.util.Date modifiedDate) throws UnauthorizedException { this.modifiedDate = modifiedDate; //Only save to the db if the object is read if (!isReadyToSave) { return; } saveToDb(); } public String getSubject() { return subject; } public String getUnfilteredSubject() { return subject; } public void setSubject(String subject) throws UnauthorizedException { this.subject = subject; //Only save to the db if the object is read if (!isReadyToSave) { return; } //Update modifiedDate to the current time. modifiedDate.setTime(System.currentTimeMillis()); saveToDb(); } public String getBody() { return body; } public String getUnfilteredBody() { return body; } public void setBody(String body) throws UnauthorizedException { this.body = body; //Only save to the db if the object is read if (!isReadyToSave) { return; } //Update modifiedDate to the current time. modifiedDate.setTime(System.currentTimeMillis()); saveToDb(); } public User getUser() { User user = null; try { if (userID == -1) { user = factory.getProfileManager().getAnonymousUser(); } else { user = factory.getProfileManager().getUser(userID); } } catch (UserNotFoundException unfe) { unfe.printStackTrace(); } return user; } public String getProperty(String name) { //For security reasons, pass through the HTML filter. return StringUtils.escapeHTMLTags((String)properties.get(name)); } public String getUnfilteredProperty(String name) { return (String)properties.get(name); } public void setProperty(String name, String value) { properties.put(name, value); //Only save to the db if the object is read if (!isReadyToSave) { return; } saveProperties(); } public Iterator propertyNames() { return Collections.unmodifiableSet(properties.keySet()).iterator(); } public boolean isAnonymous() { return (userID == -1); } public ForumThread getForumThread() { if (thread != null) { return thread; } //Load the thread since this is the first time the method has been //called. else { //First, we need a handle on the parent Forum object based //on the threadID. int forumID = -1; Connection con = null; PreparedStatement pstmt = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(GET_FORUM_BY_THREAD); pstmt.setInt(1, threadID); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { forumID = rs.getInt("forumID"); } } catch( SQLException sqle ) { sqle.printStackTrace(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -