/**
* $Id: SurveyRecordAction.java 4026 2011-03-22 14:58:42Z orangeforjava $
*/
package org.openuap.cms.survey.action.admin.survey;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.openuap.base.util.ControllerHelper;
import org.openuap.base.util.QueryInfo;
import org.openuap.base.util.context.PageBuilder;
import org.openuap.cms.core.action.UserAwareAction;
import org.openuap.cms.survey.manager.SurveyManager;
import org.openuap.cms.survey.model.Survey;
import org.springframework.web.servlet.ModelAndView;
/**
* 调查实例控制器
* @author Joseph
*
*/
public class SurveyRecordAction extends UserAwareAction {
private SurveyManager surveyManager;
private String defaultViewName;
private String defaultScreensPath;
private String framesetViewName;
private String headerViewName;
private String listViewName;
private String surveyViewName;
private String resultViewName;
/**
*
*/
public SurveyRecordAction() {
initDefaultViewName();
}
protected void initDefaultViewName() {
defaultScreensPath = "/plugin/cms/survey/screens/record/";
defaultViewName = defaultScreensPath + "index.html";
framesetViewName = defaultScreensPath + "survey_record_frameset.html";
headerViewName = defaultScreensPath + "survey_record_header.html";
listViewName = defaultScreensPath + "survey_record_list.html";
surveyViewName = defaultScreensPath + "survey_record_view.html";
resultViewName = defaultScreensPath + "survey_record_result.html";
}
public ModelAndView perform(HttpServletRequest request,
HttpServletResponse response, ControllerHelper helper, Map model)
throws Exception {
ModelAndView mv = new ModelAndView(framesetViewName, model);
String sid = helper.getString("sid");
model.put("sid", sid);
return mv;
}
public ModelAndView doHeader(HttpServletRequest request,
HttpServletResponse response, ControllerHelper helper, Map model)
throws Exception {
ModelAndView mv = new ModelAndView(headerViewName, model);
String sid = helper.getString("sid");
if (sid != null) {
Survey survey = surveyManager.getSurveyById(new Long(sid));
model.put("survey", survey);
}
model.put("sid", sid);
return mv;
}
/**
* 显示调查问卷活动列表
*
* @param request
* @param response
* @param helper
* @param model
* @return
* @throws Exception
*/
public ModelAndView doList(HttpServletRequest request,
HttpServletResponse response, ControllerHelper helper, Map model)
throws Exception {
ModelAndView mv = new ModelAndView(listViewName, model);
//
String sid = helper.getString("sid");
if (sid != null) {
Survey survey = surveyManager.getSurveyById(new Long(sid));
model.put("survey", survey);
}
model.put("sid", sid);
//
String column_condition = "";
//
String where = request.getParameter("where");
String page = request.getParameter("page");
String pageNum = request.getParameter("pageNum");
String order = request.getParameter("order");
String order_mode = request.getParameter("order_mode");
String order_name = request.getParameter("order_name");
//
String audit = request.getParameter("audit");
//
String creationDate = request.getParameter("creationDate");
String creationDate2 = request.getParameter("creationDate2");
// get the keyword
String tmp = request.getParameter("keyword");
if (tmp == null) {
tmp = "";
}
//
//
String keyword = tmp;
//
String fields = helper.getString("fields", "");
//
Integer start = new Integer(0);
Integer limit = new Integer(10);
if (where == null) {
where = "";
}
if (order == null) {
order = "";
}
if (order_mode == null) {
order_mode = "";
}
if (order_name == null) {
order_name = "";
}
order_name = order_name.replaceAll("\\^", "");
//
String final_order = "";
if (!order.equals("") && !order_mode.equals("")) {
final_order = order + " " + order_mode;
}
if (pageNum != null) {
limit = new Integer(pageNum);
} else {
pageNum = "10";
}
if (page != null) {
start = new Integer((Integer.parseInt(page) - 1) * limit.intValue());
} else {
page = "1";
}
//
if (fields != null && !fields.equals("")) {
String columns[] = fields.split(",");
if (columns != null) {
for (int i = 0; i < columns.length; i++) {
column_condition += " or e." + columns[i] + " like '%"
+ keyword + "%'";
}
if (!column_condition.equals("")) {
column_condition = column_condition.substring(4);
column_condition = " (" + column_condition + ")";
}
}
}
//
where += column_condition;
// other where condition
// creationDate
if (creationDate != null && !creationDate.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dd = sdf.parse(creationDate);
where += " and e.startDate>=" + dd.getTime() + "";
} else {
creationDate = "";
}
// creationDate2
if (creationDate2 != null && !creationDate2.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dd = sdf.parse(creationDate2);
where += " and e.startDate<=" + dd.getTime() + "";
} else {
creationDate2 = "";
}
//
where += " and e.surveyId=" + sid;
//
PageBuilder pb = new PageBuilder(limit.intValue());
QueryInfo qi = new QueryInfo(where, final_order, limit, start);
//
List surveys = surveyManager.getSurveyRecords(qi, pb);
pb.page(Integer.parseInt(page));
model.put("surveyRecords", surveys);
model.put("pb", pb);
model.put("page", page);
model.put("pageNum", pageNum);
model.put("order", order);
model.put("order_mode", order_mode);
model.put("order_name", order_name);
model.put("where", where);
model.put("action", this);
// add some search parameter
model.put("keyword", keyword);
model.put("audit", audit);
//
model.put("creationDate", creationDate);
model.put("creationDate2", creationDate2);
//
//
return mv;
}
/**
* 初始化问题选项的定义
*
* @param request
* @param response
* @param helper
* @param model
* @return
* @throws Exception
*/
public ModelAndView doInitQuestion(HttpServletRequest request,
HttpServletResponse response, ControllerHelper helper, Map model)
throws Exception {
ModelAndView mv = new ModelAndView(resultViewName, model);
String sid = helper.getString("sid");
String id = request.getParameter("id");
String op="initQuestion";
String rs="success";
try {
if(id!=null&&sid!=null){
Long iid=new Long(id);
Long isid=new Long(sid);
surveyManager.initQuestionItemRecords(iid, isid);
}
} catch (Exception e) {
rs="failed";
String msgs=e.getMessage();
e.printStackTrace();
}
model.put("rs", rs);
model.put("op", op);
model.put("sid", sid);
return mv;
}
public void setSurveyManager(SurveyManager surveyManager) {
this.surveyManager = surveyManager;
}
public void setDefaultViewName(String defaultViewName) {
this.defaultViewName = defaultViewName;
}
public void setDefaultScreensPath(String defaultScreensPath) {
this.defaultScreensPath = defaultScreensPath;
}
public void setFramesetViewName(String framesetViewName) {
this.framesetViewName = framesetViewName;
}
public void setHeaderViewName(String headerViewName) {
this.headerViewName = headerViewName;
}
public void setListViewName(String listViewName) {
this.listViewName = listViewName;
}
public void setSurveyViewName(String surveyViewName) {
this.surveyViewName = surveyViewName;
}
}