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

📄 debatemsgaction.java

📁 云网论坛CWBBS 源码,内容丰富,学习,参考,教学的好资料,具体见内说明,
💻 JAVA
字号:
package com.redmoon.forum.plugin.debate;

import javax.servlet.http.HttpServletRequest;
import cn.js.fan.util.ErrMsgException;
import javax.servlet.ServletContext;
import com.redmoon.forum.plugin.base.IPluginMsgAction;
import org.apache.log4j.Logger;
import com.redmoon.forum.MsgDb;
import cn.js.fan.util.ParamUtil;
import cn.js.fan.util.StrUtil;
import cn.js.fan.util.ResKeyException;
import com.redmoon.kit.util.FileUpload;
import com.redmoon.forum.MsgMgr;
import cn.js.fan.util.DateUtil;

public class DebateMsgAction implements IPluginMsgAction {
    Logger logger = Logger.getLogger(this.getClass().getName());

    public DebateMsgAction() {
    }

    /**
     *
     * @param application ServletContext
     * @param request HttpServletRequest
     * @param md MsgDb 所存储的是ReceiveData后得来的信息
     * @return boolean
     * @throws ErrMsgException
     */
    public synchronized boolean editTopic(ServletContext application,
                                          HttpServletRequest request,
                                          MsgDb md, FileUpload fu) throws
            ErrMsgException {
        if (md.isRootMsg()) {
            String strBeginDate = fu.getFieldValue("debateBeginDate");
            java.util.Date beginDate = DateUtil.parse(strBeginDate,
                    "yyyy-MM-dd");
            String strEndDate = fu.getFieldValue("debateEndDate");
            java.util.Date endDate = DateUtil.parse(strEndDate, "yyyy-MM-dd");
            String viewpoint1 = fu.getFieldValue("viewpoint1");
            String viewpoint2 = fu.getFieldValue("viewpoint2");

            DebateDb atd = new DebateDb();
            atd = atd.getDebateDb(md.getId());
            atd.setBeginDate(beginDate);
            atd.setEndDate(endDate);
            atd.setViewpoint1(viewpoint1);
            atd.setViewpoint2(viewpoint2);
            boolean re = false;
            try {
                re = atd.save();
            } catch (ResKeyException e) {
                throw new ErrMsgException(e.getMessage(request));
            }
            return re;
        }
        else {
            String strType = StrUtil.getNullString(fu.getFieldValue(
                    "viewpoint_type"));
            int type = DebateViewpointDb.TYPE_SUPPORT;
            if (StrUtil.isNumeric(strType)) {
                type = Integer.parseInt(strType);
            }
            DebateViewpointDb dvd = new DebateViewpointDb();
            dvd = dvd.getDebateViewpointDb(md.getId());
            int oldType = dvd.getType();
            // 已在plugin/debate/edittopic.jsp中将类别置为不可改,以避免在此需要刷新列表的缓存,下面的代码中未作刷新
            if (oldType!=type) {
                dvd.setType(type);
                boolean re = false;
                try {
                    re = dvd.save();
                    if (re) {
                        DebateDb dd = new DebateDb();
                        dd = dd.getDebateDb(md.getRootid());
                        if (type == DebateViewpointDb.TYPE_SUPPORT) {
                            if (oldType==DebateViewpointDb.TYPE_OPPOSE) {
                                dd.setUserCount2(dd.getUserCount2() - 1);
                            }
                            else
                                dd.setUserCount3(dd.getUserCount3() - 1);
                            dd.setUserCount1(dd.getUserCount1() + 1);
                        } else if (type == DebateViewpointDb.TYPE_OPPOSE) {
                            if (oldType==DebateViewpointDb.TYPE_SUPPORT) {
                                dd.setUserCount1(dd.getUserCount1() - 1);
                            }
                            else
                                dd.setUserCount3(dd.getUserCount3() - 1);
                            dd.setUserCount2(dd.getUserCount2() + 1);
                        } else {
                            if (oldType==DebateViewpointDb.TYPE_SUPPORT) {
                                dd.setUserCount1(dd.getUserCount1() - 1);
                            }
                            else
                                dd.setUserCount2(dd.getUserCount2() + 1);
                            dd.setUserCount3(dd.getUserCount3() + 1);
                        }
                        dd.save();
                    }
                } catch (ResKeyException e) {
                    throw new ErrMsgException(e.getMessage(request));
                }
                return re;
            }
        }
        return true;
    }

    public boolean AddNew(ServletContext application,
                          HttpServletRequest request, MsgDb md, FileUpload fu) throws
            ErrMsgException {
        String strBeginDate = fu.getFieldValue("debateBeginDate");
        java.util.Date beginDate = DateUtil.parse(strBeginDate, "yyyy-MM-dd");
        String strEndDate = fu.getFieldValue("debateEndDate");
        java.util.Date endDate = DateUtil.parse(strEndDate, "yyyy-MM-dd");
        String viewpoint1 = fu.getFieldValue("viewpoint1");
        String viewpoint2 = fu.getFieldValue("viewpoint2");
        DebateDb atd = new DebateDb();
        atd.setMsgId(md.getId());
        atd.setBeginDate(beginDate);
        atd.setEndDate(endDate);
        atd.setViewpoint1(viewpoint1);
        atd.setViewpoint2(viewpoint2);
        boolean re = false;
        try {
            re = atd.create();
        }
        catch (ResKeyException e) {
            throw new ErrMsgException(e.getMessage(request));
        }
        return re;
    }

    public boolean AddQuickReply(ServletContext application,
                                 HttpServletRequest request, long replyMsgId) throws
            ErrMsgException {
        String strType = ParamUtil.get(request, "viewpoint_type");
        // System.out.println(getClass() + " type=" + strType);

        int type = DebateViewpointDb.TYPE_SUPPORT;
        if (StrUtil.isNumeric(strType)) {
            type = Integer.parseInt(strType);
        }
        MsgDb md = new MsgDb();
        md = md.getMsgDb(replyMsgId);
        // System.out.println(getClass() + " type=" + type + " title=" + md.getTitle());
        DebateViewpointDb dvd = new DebateViewpointDb();
        dvd.setType(type);
        dvd.setMsgId(md.getId());
        boolean re = false;
        try {
            re = dvd.create();
            if (re) {
                DebateDb dd = new DebateDb();
                dd = dd.getDebateDb(md.getRootid());
                if (type==DebateViewpointDb.TYPE_SUPPORT) {
                    dd.setUserCount1(dd.getUserCount1() + 1);
                }
                else if (type==DebateViewpointDb.TYPE_OPPOSE) {
                    dd.setUserCount2(dd.getUserCount2() + 1);
                }
                else
                    dd.setUserCount3(dd.getUserCount3() + 1);
                dd.save();
            }
        }
        catch (ResKeyException e) {
            throw new ErrMsgException(e.getMessage(request));
        }
        return re;
    }

    /**
     * 本方法置于MsgMgr中delTopic真正删除贴子之前,使在删除插件相应内容后,再删除贴子本身
     * @param application ServletContext
     * @param request HttpServletRequest
     * @param md MsgDb
     * @return boolean
     * @throws ErrMsgException
     */
    public boolean delTopic(ServletContext application,
                            HttpServletRequest request, MsgDb md) throws
            ErrMsgException {
        boolean re = false;
        if (md.isRootMsg()) {
            DebateDb rd = new DebateDb();
            rd = rd.getDebateDb(md.getId());
            re = rd.del();
        }
        else {
            DebateViewpointDb dvd = new DebateViewpointDb();
            dvd = dvd.getDebateViewpointDb(md.getId());
            re = dvd.del();
        }
        return re;
    }

    /**
     * 此函数置于MsgDb delSingleMsg中真正删除贴子之前,以便于递归删除贴子
     * @param delId int
     * @return boolean
     * @throws ErrMsgException
     */
    public boolean delSingleMsg(long delId) throws
            ResKeyException {
        MsgDb md = new MsgDb();
        md = md.getMsgDb(delId);
        if (md.isRootMsg()) {
            DebateDb rd = new DebateDb();
            rd = rd.getDebateDb(delId);
            if (rd.isLoaded())
                return rd.del();
            else
                return false;
        }
        else {
            DebateViewpointDb dvd = new DebateViewpointDb();
            dvd = dvd.getDebateViewpointDb(delId);
            return dvd.del();
        }
    }

    public boolean AddReply(ServletContext application,
                            HttpServletRequest request, MsgDb md, FileUpload fu) throws
            ErrMsgException {
        String strType = StrUtil.getNullString(fu.getFieldValue("viewpoint_type"));
        int type = DebateViewpointDb.TYPE_SUPPORT;
        if (StrUtil.isNumeric(strType)) {
            type = Integer.parseInt(strType);
        }
        DebateViewpointDb dvd = new DebateViewpointDb();
        dvd.setType(type);
        dvd.setMsgId(md.getId());
        boolean re = false;
        try {
            re = dvd.create();
            if (re) {
                DebateDb dd = new DebateDb();
                dd = dd.getDebateDb(md.getRootid());
                if (type==DebateViewpointDb.TYPE_SUPPORT) {
                    dd.setUserCount1(dd.getUserCount1() + 1);
                }
                else if (type==DebateViewpointDb.TYPE_OPPOSE) {
                    dd.setUserCount2(dd.getUserCount2() + 1);
                }
                else
                    dd.setUserCount3(dd.getUserCount3() + 1);
                dd.save();
            }
        }
        catch (ResKeyException e) {
            throw new ErrMsgException(e.getMessage(request));
        }
        return re;
    }

}

⌨️ 快捷键说明

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