}
}
private Question buildQuestion(Element questionRoot) throws Exception {
QuestionBuilder qb = new QuestionBuilder();
qb.setId(questionRoot.getAttribute("id"));
if (questionRoot.hasAttribute("mandatory")) {
qb.setMandatory(questionRoot.getAttribute("mandatory").equalsIgnoreCase("true"));
}
//try to find a label node
NodeList labelNodes = questionRoot.getElementsByTagName("label");
if (labelNodes.getLength() != 0) {
Element labelNode = (Element) labelNodes.item(0);
qb.setLabel(labelNode.getTextContent());
}
if (questionRoot.hasAttribute("default")) {
qb.setDefault(questionRoot.getAttribute("default"));
}
if (questionRoot.getElementsByTagName("onAnswerChanged").getLength() == 1) {
qb.setOnAnswerChangedScript(questionRoot.getElementsByTagName("onAnswerChanged").item(0).getTextContent());
}
//replace with template if the type is set to a template
if (questionRoot.getElementsByTagName("template").getLength() == 1) {
Template template = templateMap.get(((Element) questionRoot.getElementsByTagName("template").item(0)).getAttribute("name"));
return qb.buildTemplate(template);
} else {
return buildConcreteQuestion(qb, questionRoot);
}
}