package com.sun.portal.app.collab.survey.faces;
import com.sun.portal.app.collab.survey.model.SurveyException;
import java.beans.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.StringTokenizer;
import com.sun.web.ui.model.Option;
import com.sun.portal.app.collab.survey.model.QuestionModel;
import com.sun.portal.app.collab.survey.model.AnswerModel;
import com.sun.portal.app.collab.survey.util.SurveyUtil;
import com.sun.portal.app.collab.survey.util.Resources;
import com.sun.portal.log.common.PortalLogger;
import java.util.logging.Logger;
/**
* @author bshankar@sun.com
*/
public class QuestionAndAnswers {
private QuestionModel m = null;
private String questionOrder = null;
private int questionId;
private String questionText = null;
private static Logger logger = PortalLogger.getLogger(QuestionAndAnswers.class);
/**
* This array list is used as -
*/
private String answerString = null;
private ArrayList answers = null;
private boolean isMandatory = false;
private boolean isSingleChoice = true;
private boolean isOpen = false;
public QuestionAndAnswers() {
}
public QuestionAndAnswers(QuestionModel m) {
this.m = m;
}
public void init() throws SurveyException {
if(m == null)
return;
AnswerModel ans[] = m.getAnswers();
boolean hasAnswers = true;
isOpen = m.isOpen();
if (ans == null || ans.length == 0) {
hasAnswers = false;
isOpen = true;
}
questionId = m.getQuestionId();
questionOrder = String.valueOf(m.getQuestionOrder());
questionText = m.getQuestionText();
answers = new ArrayList();
for(int i=0; hasAnswers && i < ans.length; i++) {
answers.add(new Option(String.valueOf(((AnswerModel)ans[i]).getAnswerId()), ((AnswerModel)ans[i]).getAnswerText()));
}
if(isOpen && hasAnswers) {
answers.add(new Option("", new Resources().getString("OtherSpecify")));
}
isSingleChoice = !(m.isMultiselect());
isMandatory = m.isMandatory();
}
public int getQuestionId() {
return questionId;
}
public String getQuestionOrder() {
return questionOrder;
}
public void setQuestionOrder(String val) {
questionOrder = val;
}
public String getQuestionText() {
if(new SurveyUtil().isSurvey()) {
return questionOrder + ". " + questionText;
}
return questionText;
}
public String getQuestion() {
return questionText;
}
public void setQuestion(String val) {
questionText = val;
}
public ArrayList getAnswers() {
return answers;
}
public String getAnswersAsString() {
return answerString;
}
public String[] getAnswersAsStringArray() {
if(answerString != null) {
StringTokenizer st = new StringTokenizer(answerString,"\n");
String[] val = new String[st.countTokens()];
for(int i=0; st.hasMoreTokens(); i++) {
val[i] = st.nextToken();
}
return val;
}
return null;
}
public void setAnswers(ArrayList val) {
answers = new ArrayList();
answerString = new String();
if(val != null) {
for(int i=0; i < val.size(); i++) {
String ans = (String)val.get(i);
answers.add(new Option(String.valueOf(i+1), ans));
answerString = answerString.concat(ans);
if (i+1 < val.size()) {
answerString = answerString.concat("\n");
}
}
}
}
public void setAnswers(ArrayList val, boolean isOpen) {
setAnswers(val);
/**
* Is the question is open, add "Other (please specify)" option.
*/
if(isOpen) {
answers.add(new Option("",new Resources().getString("OtherSpecify")));
}
}
public boolean getIsMandatory() {
return isMandatory;
}
public void setIsMandatory(boolean val) {
isMandatory = val;
}
public boolean getSingleChoice() {
return isSingleChoice;
}
public void setSingleChoice(boolean val) {
isSingleChoice = val;
}
public boolean getMultiChoice() {
return !isSingleChoice;
}
public void setMultiChoice(boolean val) {
setSingleChoice(!val);
}
public boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(boolean val) {
isOpen = val;
}
private String selectedAnswer = null;
public String getSelectedAnswer() {
return selectedAnswer;
}
public void setSelectedAnswer(String val) {
if (val == null) {
return;
}
selectedAnswer = (String)val;
logger.fine("Question = " + questionText + ", selected answer = " + selectedAnswer);
}
private String[] selectedAnswers = null;
public void setSelectedAnswers(Object[] val) {
if(val != null) {
selectedAnswers = new String[val.length];
for(int i=0; i<val.length; i++) {
selectedAnswers[i] = (String)val[i];
logger.fine("Question = " + questionText + ", selected answer[" + i + "] = " + selectedAnswers[i]);
}
}
}
public Object[] getSelectedAnswers() {
return selectedAnswers;
}
private String customAnswer;
public String getCustomAnswer() {
return customAnswer;
}
public void setCustomAnswer(String val) {
customAnswer = val;
logger.fine("Question = " + questionText + ", selected answer = " + customAnswer);
}
}
|