adminboardset.java

来自「一个jsp写的bbs」· Java 代码 · 共 306 行

JAVA
306
字号
package com.laoer.bbscs.web.action;

import java.util.*;
import javax.servlet.http.*;

import org.apache.commons.lang.*;
import org.apache.struts.action.*;
import org.apache.struts.util.*;
import com.laoer.bbscs.bean.*;
import com.laoer.bbscs.comm.*;
import com.laoer.bbscs.exception.*;
import com.laoer.bbscs.service.*;
import com.laoer.bbscs.web.form.*;

public class AdminBoardSet
    extends Action {

  private BoardService boardService;

  private ForumService forumService;

  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                               HttpServletResponse response) {
    AdminBoardSetForm adminBoardSetForm = (AdminBoardSetForm) form;

    ActionMessages messages = new ActionMessages();

    if (adminBoardSetForm.getAction().equalsIgnoreCase("new")) {
      //Vector bv = BBSCSUtil.getBoardsValues(this.getLocale(request));
      //request.setAttribute("parentValues", getBoardsValues(bv));
      this.setBoardsValuesRequest(request);
      adminBoardSetForm.setAction("add");
      adminBoardSetForm.setUseStat(1);
      adminBoardSetForm.setAddUserPostNum(1);

      int nextOrders = this.getBoardService().getNextOrder(adminBoardSetForm.getParentID());
      adminBoardSetForm.setOrders(nextOrders);

      return mapping.findForward("boardSet");
    }

    if (adminBoardSetForm.getAction().equalsIgnoreCase("add")) {
      if (StringUtils.isBlank(adminBoardSetForm.getBoardName())) {
        messages.add("error.admin.board.boardNameNull",
                     new ActionMessage("error.admin.board.boardNameNull"));
        this.saveErrors(request, messages);
        //Vector bv = BBSCSUtil.getBoardsValues(this.getLocale(request));
        //request.setAttribute("parentValues", getBoardsValues(bv));
        this.setBoardsValuesRequest(request);
        return mapping.getInputForward();
      }
      if (adminBoardSetForm.getBoardType() == 0 && adminBoardSetForm.getParentID() != 0) {
        messages.add("error.admin.board.type", new ActionMessage("error.admin.board.type"));
        this.saveErrors(request, messages);
        this.setBoardsValuesRequest(request);
        return mapping.getInputForward();
      }
      //Add at 2006.10.26 版区为两级需做判断
      if (adminBoardSetForm.getBoardType() == 1 && adminBoardSetForm.getParentID() != 0) { //分区只能做为一级版区使用
        messages.add("error.admin.board.type1", new ActionMessage("error.admin.board.type1"));
        this.saveErrors(request, messages);
        this.setBoardsValuesRequest(request);
        return mapping.getInputForward();
      }
      if (adminBoardSetForm.getParentID() != 0) { //父级版区已存在
        Board pb = this.getBoardService().getBoardByID(adminBoardSetForm.getParentID());
        if (pb.getBoardType() == 1) { //父级版区类型为作为分区使用
          if (adminBoardSetForm.getBoardType() == 1) { //如果要添加的版区也为分区,报错
            messages.add("error.admin.board.type2", new ActionMessage("error.admin.board.type2"));
            this.saveErrors(request, messages);
            this.setBoardsValuesRequest(request);
            return mapping.getInputForward();
          }
        }
        else if (pb.getBoardType() == 3) { //父级版区已经是作为论坛使用的版区,则不能再添加子版,报错
          //messages.add("error.admin.board.type3", new ActionMessage("error.admin.board.type3"));
          //this.saveErrors(request, messages);
          //this.setBoardsValuesRequest(request);
          //return mapping.getInputForward();
          if (pb.getParentID() != 0) { //父版区不是一级版区
            messages.add("error.admin.board.type3", new ActionMessage("error.admin.board.type3"));
            this.saveErrors(request, messages);
            this.setBoardsValuesRequest(request);
            return mapping.getInputForward();
          }
        }
      }
      //Add at 2006.10.26 End
      Board b = new Board();
      b.setAddUserPostNum(adminBoardSetForm.getAddUserPostNum());
      b.setAllowHTML(adminBoardSetForm.getAllowHTML());
      b.setAllowUBB(adminBoardSetForm.getAllowUBB());
      b.setAuditAttach(adminBoardSetForm.getAuditAttach());
      b.setAuditPost(adminBoardSetForm.getAuditPost());
      b.setBoardName(adminBoardSetForm.getBoardName());
      b.setBoardType(adminBoardSetForm.getBoardType());
      b.setBulletin(adminBoardSetForm.getBulletin());
      b.setExplains(adminBoardSetForm.getExplains());
      b.setIsAuth(adminBoardSetForm.getIsAuth());
      b.setIsHidden(adminBoardSetForm.getIsHidden());
      b.setNeedPasswd(adminBoardSetForm.getNeedPasswd());
      b.setOrders(adminBoardSetForm.getOrders());
      b.setParentID(adminBoardSetForm.getParentID());
      b.setPasswd(adminBoardSetForm.getPasswd());
      b.setUseStat(adminBoardSetForm.getUseStat());

      try {
        b = this.getBoardService().createBoard(b);
        messages.add("resultMsg", new ActionMessage("admin.board.create.ok"));
        this.saveMessages(request, messages);
      }
      catch (BbscsException ex1) {
        messages.add("error.admin.board.create", new ActionMessage("error.admin.board.create"));
        this.saveErrors(request, messages);
      }
      this.setBoardsValuesRequest(request);
      return mapping.findForward("boardSet");

    }

    if (adminBoardSetForm.getAction().equalsIgnoreCase("edit")) {
      //Vector bv = BBSCSUtil.getBoardsValues(this.getLocale(request));
      //request.setAttribute("parentValues", getBoardsValues(bv));
      this.setBoardsValuesRequest(request);
      Board b = this.getBoardService().getBoardByID(adminBoardSetForm.getId());
      if (b == null) {
        messages.add("error.board.notexist", new ActionMessage("error.board.notexist"));
        this.saveErrors(request, messages);

        return mapping.findForward("boardSet");
      }
      adminBoardSetForm.setAction("save");
      adminBoardSetForm.setAddUserPostNum(b.getAddUserPostNum());
      adminBoardSetForm.setAllowHTML(b.getAllowHTML());
      adminBoardSetForm.setAllowUBB(b.getAllowUBB());
      adminBoardSetForm.setAuditAttach(b.getAuditAttach());
      adminBoardSetForm.setAuditPost(b.getAuditPost());
      adminBoardSetForm.setBoardName(b.getBoardName());
      adminBoardSetForm.setBoardType(b.getBoardType());
      adminBoardSetForm.setBulletin(b.getBulletin());
      adminBoardSetForm.setExplains(b.getExplains());
      adminBoardSetForm.setId(b.getId().longValue());
      adminBoardSetForm.setIsAuth(b.getIsAuth());
      adminBoardSetForm.setIsHidden(b.getIsHidden());
      adminBoardSetForm.setNeedPasswd(b.getNeedPasswd());
      adminBoardSetForm.setOrders(b.getOrders());
      adminBoardSetForm.setParentID(b.getParentID());
      adminBoardSetForm.setPasswd(b.getPasswd());
      adminBoardSetForm.setUseStat(b.getUseStat());
      return mapping.findForward("boardSet");
    }

    if (adminBoardSetForm.getAction().equalsIgnoreCase("save")) {
      Board b = this.getBoardService().getBoardByID(adminBoardSetForm.getId());
      if (b == null) {
        messages.add("error.board.notexist", new ActionMessage("error.board.notexist"));
        this.saveErrors(request, messages);
        //Vector bv = BBSCSUtil.getBoardsValues(this.getLocale(request));
        //request.setAttribute("parentValues", getBoardsValues(bv));
        this.setBoardsValuesRequest(request);
        return mapping.findForward("boardSet");
      }

      //Add at 2006.10.26
      if (b.getBoardType() != adminBoardSetForm.getBoardType()) { //版区类型改变
        if (adminBoardSetForm.getBoardType() == 1) { //修改为分区
          if (b.getBoardType() == 3) { //如果原版区为论坛使用,则不能修改,提示错误
            messages.add("error.admin.board.type4", new ActionMessage("error.admin.board.type4"));
            this.saveErrors(request, messages);
            this.setBoardsValuesRequest(request);
            return mapping.findForward("boardSet");
          }
        }
      }
      //Add at 2006.10.26 End

      long oldParendID = -1;
      if (b.getParentID() != adminBoardSetForm.getParentID()) { //父级版区变化
        oldParendID = b.getParentID();

        //Add at 2006.10.26 版区为两级需做判断
        Board newpb = this.getBoardService().getBoardByID(adminBoardSetForm.getParentID()); //取得新父级版区
        if (newpb != null) { //新父级版区存在
          if (newpb.getBoardType() == 3) { //如果新的父级版区已经作为论坛使用,报错
            messages.add("error.admin.board.type3", new ActionMessage("error.admin.board.type3"));
            this.saveErrors(request, messages);
            this.setBoardsValuesRequest(request);
            return mapping.findForward("boardSet");
          }
          else if (newpb.getBoardType() == 1) { //如果新的父级版区为分区
            if (b.getBoardType() == 1) { //自身版区也为分区,报错
              messages.add("error.admin.board.type2", new ActionMessage("error.admin.board.type2"));
              this.saveErrors(request, messages);
              this.setBoardsValuesRequest(request);
              return mapping.findForward("boardSet");
            }
          }
        }
        //Add at 2006.10.26 End

      }
      b.setAddUserPostNum(adminBoardSetForm.getAddUserPostNum());
      b.setAllowHTML(adminBoardSetForm.getAllowHTML());
      b.setAllowUBB(adminBoardSetForm.getAllowUBB());
      b.setAuditAttach(adminBoardSetForm.getAuditAttach());
      b.setAuditPost(adminBoardSetForm.getAuditPost());
      b.setBoardName(adminBoardSetForm.getBoardName());
      b.setBoardType(adminBoardSetForm.getBoardType());
      b.setBulletin(adminBoardSetForm.getBulletin());
      b.setExplains(adminBoardSetForm.getExplains());
      b.setIsAuth(adminBoardSetForm.getIsAuth());
      b.setIsHidden(adminBoardSetForm.getIsHidden());
      b.setNeedPasswd(adminBoardSetForm.getNeedPasswd());
      b.setOrders(adminBoardSetForm.getOrders());
      b.setParentID(adminBoardSetForm.getParentID());
      b.setPasswd(adminBoardSetForm.getPasswd());
      b.setUseStat(adminBoardSetForm.getUseStat());

      try {

        b = this.getBoardService().updateBoard(b, oldParendID);
        messages.add("resultMsg", new ActionMessage("bbscs.dataupdate.succeed"));
        this.saveMessages(request, messages);
      }
      catch (BbscsException ex) {
        messages.add("error.dataupdate.failed", new ActionMessage("error.dataupdate.failed"));
        this.saveErrors(request, messages);
      }
      //Vector bv = BBSCSUtil.getBoardsValues(this.getLocale(request));
      //request.setAttribute("parentValues", getBoardsValues(bv));
      this.setBoardsValuesRequest(request);
      return mapping.findForward("boardSet");
    }

    if (adminBoardSetForm.getAction().equalsIgnoreCase("del")) {
      Board b = this.getBoardService().getBoardByID(adminBoardSetForm.getId());
      if (b == null) {
        messages.add("error.board.notexist", new ActionMessage("error.board.notexist"));
        this.saveErrors(request, messages);

        return mapping.findForward("error");
      }
      List cboards = this.getBoardService().findBoardsByParentID(adminBoardSetForm.getId());
      if (cboards.size() > 0) {
        messages.add("error.del.board.havechild", new ActionMessage("error.del.board.havechild"));
        this.saveErrors(request, messages);

        return mapping.findForward("error");
      }

      int postNum = this.getForumService().getForumNum(adminBoardSetForm.getId(), -1, -1, -1);
      if (postNum > 0) {
        messages.add("error.del.board.havepost", new ActionMessage("error.del.board.havepost"));
        this.saveErrors(request, messages);

        return mapping.findForward("error");
      }

      try {
        this.getBoardService().removeBoard(b);
        return new ActionForward(BBSCSUtil.getActionMappingURL("/adminBoardList"), true);
      }
      catch (BbscsException ex2) {
        messages.add("error.del.board", new ActionMessage("error.del.board"));
        this.saveErrors(request, messages);

        return mapping.findForward("error");
      }

    }

    return mapping.getInputForward();
  }

  private Vector getBoardsValues(Vector bv) {
    List bl = this.getBoardService().findBoardsAllTree(0, new ArrayList());
    for (int i = 0; i < bl.size(); i++) {
      Board b = (Board) bl.get(i);
      bv.add(new LabelValueBean(BBSCSUtil.getBoardPrefixLine(b.getLevel(), "-") + b.getBoardName(),
                                String.valueOf(b.getId().longValue())));
    }
    return bv;
  }

  private void setBoardsValuesRequest(HttpServletRequest request) {
    Vector bv = BBSCSUtil.getBoardsValues(this.getLocale(request));
    request.setAttribute("parentValues", getBoardsValues(bv));
  }

  public BoardService getBoardService() {
    return boardService;
  }

  public ForumService getForumService() {
    return forumService;
  }

  public void setBoardService(BoardService boardService) {
    this.boardService = boardService;
  }

  public void setForumService(ForumService forumService) {
    this.forumService = forumService;
  }
}

⌨️ 快捷键说明

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