⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagedb.java

📁 源码/软件简介: 云网论坛1.1RC国际版是采用JSP开发的集论坛、CMS(网站内容管理系统)、博客、聊天室、商城、交友、语音灌水等于一体的门户式社区。拥有CWBBS ( Cloud Web BBS
💻 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 + -