package symplik.flower.sample;
//~--- non-JDK imports --------------------------------------------------------
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
import symplik.flower.Answer;
import symplik.flower.Choice;
import symplik.flower.Helper;
import symplik.flower.Question;
//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
public class TestQuestion extends Question {
private static String QUESTION_NO = "QUESTION_NO";
private static String TOTAL_SCORE = "TOTAL_SCORE";
private String qContent = null;
private int qNo = 0;
private int totalNoOfQuestion = 0;
private int totalScore = 0;
@Override
public boolean enterQuestion() {
qNo = Helper.getInt(Answer.getInstance().getB(QUESTION_NO), 1);
totalScore = Helper.getInt(Answer.getInstance().getB(TOTAL_SCORE), 0);
try {
InputStream is = this.getClass().getResourceAsStream("/symplik/flower/sample/Test.xml");
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(is);
XPath xpath = XPath.newInstance("//Question");
totalNoOfQuestion = xpath.selectNodes(doc).size();
xpath = XPath.newInstance("//Question[@no='" + qNo + "']");
qContent = ((Element) xpath.selectSingleNode(doc)).getValue();
} catch (JDOMException je) {
Helper.log(LOG_ERROR, "Malformat XML file");
System.exit(1);
} catch (IOException ioe) {
Helper.log(LOG_ERROR, "Unable to read question XML file");
System.exit(1);
}
return true;
}
@Override
public String getQuestion() {
return "Question " + qNo + "\n";
}
@Override
public String getExplanation() {
return qContent;
}
@Override
public ArrayList<choice> choices() {
ArrayList<choice> al = new ArrayList<choice>();
al.add(new Choice("1", "Rarely"));
al.add(new Choice("2", "Occasionally"));
al.add(new Choice("3", "Frequently"));
al.add(new Choice("4", "Often"));
al.add(new Choice("5", "Always"));
return al;
}
@Override
public boolean leaveQuestion() {
totalScore = Integer.valueOf(Answer.getInstance().getA(this)) + totalScore;
Helper.log(LOG_DEBUG, "totalScore = " + totalScore);
Answer.getInstance().putB(TOTAL_SCORE, String.valueOf(totalScore));
Answer.getInstance().putB(QUESTION_NO, String.valueOf(qNo));
return true;
}
@Override
public String nextAction() {
if (qNo >= totalNoOfQuestion) {
return "symplik.flower.sample.TestResult";
} else {
Answer.getInstance().putB(QUESTION_NO, String.valueOf(qNo + 1));
return this.getClass().getCanonicalName();
}
}
@Override
public String getTitle() {
return "Internet Addiction Test | Question " + qNo;
}
}
TestQuestion.java