📄 topicaction.java
字号:
/*
* Created on 2007-3-17
* Last modified on 2007-8-22
* Powered by YeQiangWei.com
*/
package com.yeqiangwei.club.controller.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.service.topic.TopicService;
import com.yeqiangwei.club.service.model.ContentModel;
import com.yeqiangwei.club.service.model.TopicModel;
import com.yeqiangwei.club.service.model.UserModel;
import com.yeqiangwei.club.service.user.UserLogin;
import com.yeqiangwei.club.service.user.UserSettingsService;
import com.yeqiangwei.club.util.BeanUtils;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.controller.form.TopicBetterForm;
import com.yeqiangwei.club.controller.form.TopicMoveForm;
import com.yeqiangwei.club.controller.form.TopicPostForm;
import com.yeqiangwei.club.controller.form.TopicTrashForm;
import com.yeqiangwei.club.controller.form.build.TopicBetterBuild;
import com.yeqiangwei.club.controller.form.build.TopicMoveBuild;
import com.yeqiangwei.club.controller.form.build.TopicPostBuild;
import com.yeqiangwei.club.controller.form.build.TopicTrashBuild;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.view.util.UrlUtils;
import com.yeqiangwei.util.HttpServletUtils;
import com.yeqiangwei.util.ParamUtils;
import com.yeqiangwei.util.Validator;
public class TopicAction {
private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(TopicAction.class);
public void createOrUpdate(HttpServletRequest request,HttpServletResponse response){
TopicPostForm topicPostForm = new TopicPostBuild(request).building();
if(Validator.isEmpty(topicPostForm.getTitle())||Validator.isEmpty(topicPostForm.getContent()))
{
request.setAttribute("message",MessageUtils.getMessage("error_empty"));
this.errorForward(request,response,topicPostForm);
return;
}
else if(topicPostForm.getTitle().length()>100||topicPostForm.getContentLength()>50000){
request.setAttribute("message",MessageUtils.getMessage("error_toolong"));
this.errorForward(request,response,topicPostForm);
return;
}
TopicModel topicModel = null;
ContentModel contentModel = null;
if(topicPostForm.getTopicId()>0){ //如果是更新文章
topicModel = this.getTopicService().findTopicAndContentById(topicPostForm.getTopicId());
contentModel = topicModel.getContentModel();
/*
* 如果是编辑帖,则取出原作者信息设置回去!
*/
topicPostForm.setUserId(topicModel.getUserId());
topicPostForm.setUserName(topicModel.getUserName());
topicPostForm.setUserIp(topicModel.getUserIp());
topicPostForm.setCreateDateTime(topicModel.getCreateDateTime());
}else{ //如果是新建文章
topicModel = new TopicModel();
contentModel = new ContentModel();
}
topicModel.setSessionUserModel(UserLogin.getUserModel(request));
BeanUtils.copyProperties(topicModel,topicPostForm);
BeanUtils.copyProperties(contentModel,topicPostForm);
topicModel.setContentModel(contentModel);
topicModel.setReplyId(topicPostForm.getLastReplyId());
/* 在线用户信息 from session */
UserModel userModel = UserLogin.getUserModel(request);
topicModel.setUserModel(userModel);
try {
this.getTopicService().createOrUpdate(topicModel);
StringBuffer sb = new StringBuffer();
userModel = topicModel.getUserModel();
if(!Validator.isEmpty(userModel)){
UserLogin.setCookies(request,response,userModel,0);
}
topicPostForm.setTopicId(topicModel.getTopicId());
topicPostForm.setReplyId(topicModel.getReplyId());
request.setAttribute("returnUrl",UrlUtils.getUrl(UrlUtils.TOPIC,topicPostForm.getTopicId(),topicModel.getForumId(),request));
byte postForward = this.getUserSettingscService().getUserSettingsModel(userModel).getPostForward();
switch(postForward){
case 1://返回版面
sb.append(UrlUtils.getUrl(UrlUtils.FORUM,topicModel.getForumId(),0,request));
logger.debug("发表文章成功后跳转至:"+sb.toString());
HttpServletUtils.redirect(response,sb.toString());
break;
case 2://返回发表的主题
sb.append(UrlUtils.getUrl(UrlUtils.TOPIC,topicModel.getTopicId(),topicModel.getForumId(),request));
logger.debug("发表文章成功后跳转至:"+sb.toString());
HttpServletUtils.redirect(response,sb.toString());
break;
default: //返回界面让用户选择
sb.append("/club/posted.jsp?forumId=");
sb.append(topicModel.getForumId());
sb.append("&topicId=");
sb.append(topicModel.getTopicId());
sb.append("&act=");
sb.append(ParamUtils.getStringParameter(request,"act"));
request.setAttribute("msg","success");
HttpServletUtils.forward(request,response,sb.toString());
}
} catch (ClubException e) {
request.setAttribute("message",e.getMessage());
this.errorForward(request,response,topicPostForm);
}
}
private void errorForward(HttpServletRequest request,HttpServletResponse response, TopicPostForm topicPostForm){
request.setAttribute("TopicPostForm",topicPostForm);
HttpServletUtils.forward(request,response,"/club/post.jsp");
}
private String forwardUrl(String act, int topicId, int forumId){
StringBuffer sb = new StringBuffer("/club/topicAdmin.jsp?forumId=");
sb.append(forumId);
sb.append("&topicId=");
sb.append(topicId);
sb.append("&act=");
sb.append(act);
return sb.toString();
}
public void move(HttpServletRequest request,HttpServletResponse response){
TopicMoveForm topicMoveForm = new TopicMoveBuild(request).building();
request.setAttribute("TopicMoveForm",topicMoveForm);
try {
this.getTopicService().move(topicMoveForm);
request.setAttribute("message",MessageUtils.getMessage("success"));
} catch (ClubException e) {
request.setAttribute("message",e.getMessage());
}
HttpServletUtils.forward(request,response,forwardUrl("movetopic",topicMoveForm.getTopicId(),topicMoveForm.getForumId()));
}
public void better(HttpServletRequest request,HttpServletResponse response){
TopicBetterForm topicBetterForm = new TopicBetterBuild(request).building();
try {
this.getTopicService().updateBetter(topicBetterForm);
request.setAttribute("message",MessageUtils.getMessage("success"));
} catch (ClubException e) {
request.setAttribute("message",e.getMessage());
}
HttpServletUtils.forward(request,response,forwardUrl("better",topicBetterForm.getTopicId(),topicBetterForm.getForumId()));
}
public void trash(HttpServletRequest request,HttpServletResponse response){
TopicTrashForm topicTrashForm = new TopicTrashBuild(request).building();
try {
this.getTopicService().trash(topicTrashForm);
request.setAttribute("message",MessageUtils.getMessage("success"));
} catch (ClubException e) {
request.setAttribute("message",e.getMessage());
}
HttpServletUtils.forward(request,response,forwardUrl("trashtopic",topicTrashForm.getTopicId(),topicTrashForm.getForumId()));
}
public void findNextOrPrevious(HttpServletRequest request,HttpServletResponse response){
int topicId = ParamUtils.getIntParameter(request,"topicId",0);
int forumId = ParamUtils.getIntParameter(request,"forumId",0);
String go = ParamUtils.getStringParameter(request,"go","next");
boolean isnext = true;
if(!go.equalsIgnoreCase("next")){
isnext = false;
}
if(topicId==0){
request.setAttribute("message",MessageUtils.getMessage("error_notfind"));
HttpServletUtils.forward(request,response,"/club/msg.jsp");
}else{
TopicModel topicModel = this.getTopicService().findNextOrPrevious(topicId,forumId,isnext);
if(Validator.isEmpty(topicModel)){
if(isnext){
request.setAttribute("message","已到达本版最新一篇主题!");
}else{
request.setAttribute("message","前面没有内容了!");
}
String url = UrlUtils.getUrl(UrlUtils.TOPIC,topicId,forumId,request);
logger.debug("referer: "+request.getHeader("referer"));
logger.debug("url: "+url);
HttpServletUtils.forward(request,response,"thread.jsp?forumId="+forumId+"&topicId="+topicId);
}else{
topicId = topicModel.getTopicId();
forumId = topicModel.getForumId();
String url = UrlUtils.getUrl(UrlUtils.TOPIC,topicId,forumId,request);
logger.debug("findNextOrPrevious: "+url);
HttpServletUtils.redirect(response,url);
}
}
}
public TopicService getTopicService() {
return ServiceWrapper.<TopicService>getSingletonInstance(ServiceLocator.TOPIC);
}
public UserSettingsService getUserSettingscService() {
return ServiceWrapper.<UserSettingsService>getSingletonInstance(ServiceLocator.USERSETTINGS);
}
public static void main(String args[]){
TopicAction a = new TopicAction();
a.getTopicService();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -