📄 messagedb.java
字号:
package com.redmoon.forum.message;
/**
* <p>Title: 社区</p>
* <p>Description: 社区</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 红月亮工作室</p>
* @author bluewind
* @version 1.0
*/
import cn.js.fan.db.Conn;
import javax.servlet.http.*;
import cn.js.fan.util.*;
import java.sql.ResultSet;
import cn.js.fan.base.ObjectDb;
import cn.js.fan.db.PrimaryKey;
import java.sql.PreparedStatement;
import cn.js.fan.web.Global;
import com.redmoon.forum.Config;
import com.redmoon.forum.person.UserDb;
import java.util.Iterator;
import com.redmoon.forum.SequenceMgr;
import cn.js.fan.web.SkinUtil;
public class MessageDb extends ObjectDb {
int id;
public String title, content, receiver, sender, ip;
java.util.Date rq;
boolean readed = false;
public static String USER_SYSTEM = Global.AppName;
static {
Config cfg = new Config();
USER_SYSTEM = cfg.getProperty("forum.message_sender");
}
public static final int TYPE_SYSTEM = 10;
public static final int TYPE_USER = 0;
public int type = TYPE_USER;
public MessageDb() {
init();
}
public MessageDb(int id) {
this.id = id;
init();
load();
}
public int getNewMsgCount(String receiver) {
MessageCache mc = new MessageCache(this);
return mc.getNewMsgCount(receiver);
}
protected void finalize() throws Throwable {
super.finalize();
}
public void clear() { // throws Throwable
try {
finalize();
} catch (java.lang.Throwable e) {
logger.error("clear: " + e.getMessage());
}
}
public boolean AddMsg(HttpServletRequest request,
String sender) throws
ErrMsgException {
MessageForm mf = new MessageForm(request, this);
mf.checkCreate();
this.sender = sender;
// 群发
boolean isToAll = ParamUtil.getBoolean(request, "isToAll", false);
if (isToAll) {
UserDb ud = new UserDb();
Iterator ir = ud.list().iterator();
while (ir.hasNext()) {
ud = (UserDb)ir.next();
receiver = ud.getName();
create();
}
return true;
}
String[] r = StrUtil.split(receiver, ",");
int len = r.length;
for (int i=0; i<len; i++) {
UserDb user = new UserDb();
user = user.getUser(r[i]);
if (!user.isLoaded()) {
String s = SkinUtil.LoadString(request, "res.forum.message.MessageDb", "err_receiver_none");
s = s.replaceFirst("\\$u", r[i]);
throw new ErrMsgException(s);
}
else {
receiver = r[i];
create();
}
}
return true;
}
public boolean delMsg(String[] ids) throws ResKeyException {
int len = ids.length;
String str = "";
for (int i = 0; i < len; i++)
if (str.equals(""))
str += ids[i];
else
str += "," + ids[i];
str = "(" + str + ")";
String sql = "select id from message where id in " + str;
Conn conn = null;
try {
conn = new Conn(connname);
ResultSet rs = conn.executeQuery(sql);
if (rs!=null) {
while (rs.next()) {
getMessageDb(rs.getInt(1)).del();
}
}
} catch (Exception e) {
logger.error("delMsg:" + e.getMessage());
throw new ResKeyException(SkinUtil.ERR_DB);
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
return true;
}
public boolean isReaded() {
return readed;
}
public MessageDb getMessageDb(int id) throws ErrMsgException {
return (MessageDb)getObjectDb(new Integer(id));
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public java.util.Date getRq() {
return rq;
}
public String getSender() {
return sender;
}
public String getReceiver() {
return receiver;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public int getType() {
return type;
}
public int getId() {
return id;
}
public boolean create() throws ErrMsgException {
Conn conn = null;
try {
conn = new Conn(connname);
PreparedStatement ps = conn.prepareStatement(QUERY_CREATE);
id = (int)SequenceMgr.nextID(SequenceMgr.SQ_SHORT_MESSAGE);
ps.setString(1, title);
ps.setString(2, content);
ps.setString(3, sender);
ps.setString(4, receiver);
ps.setInt(5, type);
ps.setString(6, ip);
ps.setString(7, "" + System.currentTimeMillis());
ps.setInt(8, id);
if (!(conn.executePreUpdate() == 1 ? true : false))
return false;
MessageCache mc = new MessageCache(this);
mc.refreshNewCountOfReceiver(receiver);
mc.refreshCreate();
} catch (Exception e) {
logger.error("create: " + e.getMessage());
return false;
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
return true;
}
public ObjectDb getObjectDb(Object primaryKeyValue) {
MessageCache uc = new MessageCache(this);
primaryKey.setValue(primaryKeyValue);
return (MessageDb) uc.getObjectDb(primaryKey);
}
public synchronized boolean del() {
boolean re = false;
Conn conn = new Conn(connname);
try {
PreparedStatement ps = conn.prepareStatement(QUERY_DEL);
ps.setInt(1, id);
re = conn.executePreUpdate() == 1 ? true : false;
if (re) {
MessageCache mc = new MessageCache(this);
mc.refreshDel(primaryKey);
}
} catch (Exception e) {
logger.error("del:" + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
if (re) {
MessageCache uc = new MessageCache(this);
primaryKey.setValue(new Integer(id));
uc.refreshDel(primaryKey);
}
return re;
}
public int getObjectCount(String sql) {
MessageCache uc = new MessageCache(this);
return uc.getObjectCount(sql);
}
public int getMessageCount(String sql) {
return getObjectCount(sql);
}
public Object[] getObjectBlock(String query, int startIndex) {
MessageCache dcm = new MessageCache(this);
return dcm.getObjectBlock(query, startIndex);
}
public ObjectDb getObjectRaw(PrimaryKey pk) {
return new MessageDb(pk.getIntValue());
}
public void setQueryCreate() {
this.QUERY_CREATE =
"insert into message (title,content,sender,receiver,type,ip,rq,id) values (?,?,?,?,?,?,?,?)";
}
public void setQuerySave() {
this.QUERY_SAVE =
"update message set isreaded=? where id=?";
}
public void setQueryDel() {
this.QUERY_DEL = "delete from message where id=?";
}
public void setQueryLoad() {
QUERY_LOAD = "select title,content,sender,receiver,rq,ip,type,isreaded from message where id=?";
}
public void setQueryList() {
QUERY_LIST = "select id from message order by isreaded asc,rq desc";
}
public synchronized boolean save() {
boolean re = false;
Conn conn = new Conn(connname);
try {
PreparedStatement ps = conn.prepareStatement(QUERY_SAVE);
ps.setInt(1, readed?1:0);
ps.setInt(2, id);
re = conn.executePreUpdate() == 1 ? true : false;
} catch (Exception e) {
logger.error("save:" + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
if (re) {
MessageCache uc = new MessageCache(this);
primaryKey.setValue(new Integer(id));
uc.refreshSave(primaryKey);
uc.refreshNewCountOfReceiver(receiver);
}
return re;
}
public void setPrimaryKey() {
primaryKey = new PrimaryKey("id", PrimaryKey.TYPE_INT);
}
public void clearMessageExpired(int expireDay) {
long d = expireDay * 24 * 60 * 60 * 1000;
long dt = System.currentTimeMillis() - d;
String sql = "select id from message where rq < ?";
Conn conn = new Conn(connname);
ResultSet rs = null;
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "" + dt);
rs = conn.executePreQuery();
if (rs != null) {
while (rs.next()) {
MessageDb md = getMessageDb(rs.getInt(1));
md.del();
}
}
} catch (Exception e) {
logger.error("load: " + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
}
public synchronized void load() {
Conn conn = new Conn(connname);
ResultSet rs = null;
try {
PreparedStatement pstmt = conn.prepareStatement(QUERY_LOAD);
pstmt.setInt(1, id);
rs = conn.executePreQuery();
if (rs != null && rs.next()) {
title = rs.getString(1);
content = rs.getString(2);
sender = rs.getString(3);
receiver = rs.getString(4);
rq = DateUtil.parse(rs.getString(5));
ip = rs.getString(6);
type = rs.getInt(7);
readed = rs.getInt(8) == 1 ? true : false;
loaded = true;
primaryKey.setValue(new Integer(id));
}
} catch (Exception e) {
logger.error("load: " + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
}
public void setReaded(boolean readed) {
this.readed = readed;
}
public void setTitle(String title) {
this.title = title;
}
public void setContent(String content) {
this.content = content;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public void setSender(String sender) {
this.sender = sender;
}
public void setType(int type) {
this.type = type;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -