/*
* Copyright 2002-2006 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openuap.cms.survey.action.poll;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.openuap.base.util.ControllerHelper;
import org.openuap.cms.CmsPlugin;
import org.openuap.cms.core.action.UserAwareWizardFormAction;
import org.openuap.cms.survey.manager.QuestionManager;
import org.openuap.cms.survey.manager.SurveyManager;
import org.openuap.cms.survey.model.Answer;
import org.openuap.cms.survey.model.AnswerItem;
import org.openuap.cms.survey.model.SurveyAnswer;
import org.openuap.runtime.util.ObjectLocator;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
/**
* <p>
* 抽象投票向导控制器.
* </p>
*
* <p>
* $Id: PollWizardAction.java 4026 2011-03-22 14:58:42Z orangeforjava $
* </p>
*
* @author Joseph
* @version 1.0
*/
public class PollWizardAction extends UserAwareWizardFormAction {
public static final String SURVEY_ANSWER = "surveyAnswer";
public static final String QUESTION_IDS = "questionIds";
public static final String SURVEY_ID = "sid";
protected QuestionManager questionManager;
protected SurveyManager surveyManager;
public PollWizardAction() {
}
protected ModelAndView processFinish(HttpServletRequest request, HttpServletResponse response,
Object command, BindException bindException, ControllerHelper helper, Map model)
throws Exception {
return null;
}
/**
* 获得每个问题输入文本
* @param itemId
* @param session
* @return
*/
public String getItemInputText(Long itemId, HttpSession session) {
Object obj = session.getAttribute(SURVEY_ANSWER);
if (obj != null) {
SurveyAnswer surveyAnswer = (SurveyAnswer) obj;
AnswerItem AnswerItem = (AnswerItem) surveyAnswer.getQuestionItemAnswers().get(itemId);
if (AnswerItem != null) {
String result = AnswerItem.getAnswerItemInputText();
int start = result.indexOf("-");
if (start > 0 && start != result.length() - 1) {
result = result.substring(start + 1, result.length());
}
return result;
}
}
return "";
}
protected String upateAnswer(HttpServletRequest request, HttpSession session) {
String questionIds = request.getParameter(QUESTION_IDS);
String surveyId = request.getParameter(SURVEY_ID);
String surveyRecordId=request.getParameter("rid");
if (surveyId == null) {
surveyId = "-1";
}
if (questionIds != null) {
SurveyAnswer surveyAnswer = null;
Object obj = session.getAttribute(SURVEY_ANSWER);
if (obj != null) {
surveyAnswer = (SurveyAnswer) obj;
}
if (surveyAnswer == null) {
surveyAnswer = new SurveyAnswer();
}
// 获得题号
String[] questionIdArray = questionIds.split(",");
for (int i = 0; i < questionIdArray.length; i++) {
String questionId = questionIdArray[i];
String question_input = request.getParameter(questionId + "_q_input");
String[] itemIds = request.getParameterValues(questionId);
String items = "";
if (itemIds != null) {
for (int j = 0; j < itemIds.length; j++) {
String itemId = itemIds[j];
if (!itemId.equals("")) {
String item_input = request.getParameter(itemId + "_i_input");
Long litemId = new Long(itemId);
AnswerItem vai = new AnswerItem();
vai.setQuestionId(new Long(questionId));
vai.setQuestionItemId(litemId);
vai.setSurveyId(new Long(surveyId));
vai.setSurveyRecordId(new Long(surveyRecordId));
if (item_input != null) {
//
vai.setAnswerItemInputText(item_input);
surveyAnswer.getQuestionItemAnswers().put(litemId, vai);
}
//
items += itemId + ",";
}
}
if (!items.equals("")) {
items = items.substring(0, items.length() - 1);
}
}
//
//
Answer va = new Answer();
va.setAnswer(items);
va.setAnswerInputText(question_input);
va.setQuestionId(new Long(questionId));
va.setSurveyId(new Long(surveyId));
va.setSurveyRecordId(new Long(surveyRecordId));
//
surveyAnswer.getQuestionAnswers().put(new Long(questionId), va);
}
session.setAttribute(SURVEY_ANSWER, surveyAnswer);
}
return "";
}
public String getItemInputTextChecked(Long itemId, String input, HttpSession session) {
Object obj = session.getAttribute(SURVEY_ANSWER);
if (obj != null) {
SurveyAnswer surveyAnswer = (SurveyAnswer) obj;
AnswerItem AnswerItem = (AnswerItem) surveyAnswer.getQuestionItemAnswers().get(itemId);
if (AnswerItem != null) {
String inputText = AnswerItem.getAnswerItemInputText();
if (inputText != null) {
if (input.endsWith("-")) {
input.substring(0, input.length() - 1);
if (inputText.startsWith(input)) {
return " checked ";
}
} else {
if (inputText.equals(input)) {
return " checked ";
}
}
}
}
}
return "";
}
/**
* 返回选项是否已经被选择状态
*
* @param questionId
* 问题id
* @param itemId
* 选项id
* @param session
* 用户session
* @return 选中返回checked,否则返回空字符串
*/
public String getItemChecked(Long questionId, Long itemId, HttpSession session) {
//
Object obj = session.getAttribute(SURVEY_ANSWER);
if (obj != null) {
SurveyAnswer surveyAnswer = (SurveyAnswer) obj;
Answer Answer = (Answer) surveyAnswer.getQuestionAnswers().get(questionId);
if (Answer != null) {
String answer = Answer.getAnswer();
if (answer != null) {
String[] itemIds = answer.split(",");
for (int i = 0; i < itemIds.length; i++) {
String iid = itemIds[i];
if (!iid.equals("")) {
//
Long lid = new Long(iid);
if (itemId.equals(lid)) {
return " checked ";
}
}
}
}
}
}
return "";
}
/**
* 获得题目输入文本
*
* @param questionId
* 问题id
* @param session
* session对象
* @return String
*/
public String getQuestionInputText(Long questionId, HttpSession session) {
Object obj = session.getAttribute(SURVEY_ANSWER);
if (obj != null) {
SurveyAnswer surveyAnswer = (SurveyAnswer) obj;
Answer Answer = (Answer) surveyAnswer.getQuestionAnswers().get(questionId);
if (Answer != null) {
return Answer.getAnswerInputText() != null ? Answer.getAnswerInputText() : "";
}
}
return "";
}
public QuestionManager getQuestionManager() {
if (questionManager == null) {
questionManager = (QuestionManager) ObjectLocator.lookup("questionManager",
CmsPlugin.PLUGIN_ID);
//
}
return questionManager;
}
public SurveyManager getSurveyManager() {
if (surveyManager == null) {
surveyManager = (SurveyManager) ObjectLocator.lookup("surveyManager",
CmsPlugin.PLUGIN_ID);
//
}
return surveyManager;
}
public void setQuestionManager(QuestionManager questionManager) {
this.questionManager = questionManager;
}
public void setSurveyManager(SurveyManager surveyManager) {
this.surveyManager = surveyManager;
}
}