/**
* $Id: SurveyAreaEditAction.java 4026 2011-03-22 14:58:42Z orangeforjava $
*/
package org.openuap.cms.survey.action.admin.area;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.openuap.base.util.ControllerHelper;
import org.openuap.cms.core.action.CMSBaseFormAction;
import org.openuap.cms.node.manager.NodeManager;
import org.openuap.cms.node.model.Node;
import org.openuap.cms.survey.manager.SurveyAreaManager;
import org.openuap.cms.survey.model.SurveyArea;
import org.openuap.cms.util.ui.PublishMode;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;
/**
* @author Joseph
*
*/
public class SurveyAreaEditAction extends CMSBaseFormAction {
private String defaultScreensPath;
private String defaultViewName;
//
private String operationViewName;
private SurveyAreaManager surveyAreaManager;
private NodeManager nodeManager;
public SurveyAreaEditAction() {
initDefaultViewName();
}
public void setSurveyAreaManager(SurveyAreaManager surveyAreaManager) {
this.surveyAreaManager = surveyAreaManager;
}
public void setNodeManager(NodeManager nodeManager) {
this.nodeManager = nodeManager;
}
protected void initDefaultViewName() {
defaultScreensPath = "/plugin/cms/survey/screens/area/";
defaultViewName = defaultScreensPath + "area_list.html";
operationViewName = defaultScreensPath + "area_operation_result.html";
//
this.setFormView(defaultScreensPath + "area_edit.html");
this.setSuccessView(this.getFormView());
this.setSessionForm(true);
this.setBindOnNewForm(false);
this.setCommandClass(SurveyArea.class);
this.setCommandName("area");
}
/**
* 提交附加发布
*/
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors,
ControllerHelper helper, Map model) throws Exception {
ModelAndView mv = new ModelAndView(operationViewName, model);
SurveyArea surveyArea = (SurveyArea) command;
String nodeId = request.getParameter("nodeId");
model.put("nodeId", surveyArea.getNodeId());
try {
if(surveyArea.getId()!=null&&!surveyArea.getId().equals(0L)){
//编辑
model.put("op", "edit");
long modifiedDate = System.currentTimeMillis();
surveyArea.setLastModifiedDate(modifiedDate);
surveyArea.setLastModifiedUserId(this.getUser().getUserId());
surveyArea.setLastModifiedUserName(this.getUserSession().getName());
surveyAreaManager.saveArea(surveyArea);
}else{
//新增
model.put("op", "add");
long now = System.currentTimeMillis();
surveyArea.setCreationDate(now);
surveyArea.setCreationUserId(this.getUser().getUserId());
surveyArea.setCreationUserName(this.getUserSession().getName());
surveyArea.setPublishState(0);
surveyArea.setStatus(0);
surveyArea.setLastModifiedDate(now);
surveyArea.setLastModifiedUserId(this.getUser().getUserId());
surveyArea.setLastModifiedUserName(this.getUserSession().getName());
surveyArea.setPublishDate(0L);
surveyArea.setPos(0);
//
Long id=surveyAreaManager.addArea(surveyArea);
surveyArea.setId(id);
}
model.put("rs", "success");
} catch (Exception e) {
model.put("rs", "failed");
model.put("msgs", e.getMessage());
}
return mv;
}
protected void onBindAndValidate(HttpServletRequest request,
Object command, BindException errors) {
//TODO
}
protected Object formBackingObject(HttpServletRequest request) {
String mode = request.getParameter("mode");
String nodeId = request.getParameter("nodeId");
String id = request.getParameter("id");
Long nid = new Long(nodeId);
SurveyArea surveyArea=null;
if (mode == null || mode.equals("add")) {
surveyArea=new SurveyArea();
surveyArea.setNodeId(nid);
}else{
Long aid = new Long(id);
surveyArea=surveyAreaManager.getAreaById(aid);
}
return surveyArea;
}
@SuppressWarnings("unchecked")
protected Map referenceData(HttpServletRequest request, Object command,
Errors errors) throws Exception {
String mode = request.getParameter("mode");
String nodeId = request.getParameter("nodeId");
Node node = nodeManager.getNode(new Long(nodeId));
Map model = new HashMap();
model.put("mode", mode);
model.put("nodeId", nodeId);
model.put("node", node);
model.put("publishModes", PublishMode.DEFAULT_MODES);
model.put("nodeManager", nodeManager);
return model;
}
}