package org.sakaiproject.tool.assessment.ui.bean.samlite; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.component.cover.ServerConfigurationService; import org.sakaiproject.tool.assessment.facade.AssessmentFacade; import org.sakaiproject.tool.assessment.facade.AssessmentFacadeQueries; import org.sakaiproject.tool.assessment.facade.AssessmentTemplateFacade; import org.sakaiproject.tool.assessment.samlite.api.Question; import org.sakaiproject.tool.assessment.samlite.api.QuestionGroup; import org.sakaiproject.tool.assessment.samlite.api.SamLiteService; import org.sakaiproject.tool.assessment.services.assessment.AssessmentService; import org.sakaiproject.tool.assessment.ui.bean.author.AuthorBean; import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil; import org.sakaiproject.tool.assessment.util.TextFormat; import org.sakaiproject.util.FormattedText; import org.sakaiproject.util.ResourceLoader; import org.w3c.dom.Document; public class SamLiteBean implements Serializable { private static Log log = LogFactory.getLog(SamLiteBean.class); private static final long serialVersionUID = -3122436861866172596L; public static final String DEFAULT_CHARSET = "ascii-us"; private String name; private String description; private String data; private String assessmentTemplateId; private boolean isVisible = true; private AuthorBean authorBean; private ResourceLoader rb = new ResourceLoader("org.sakaiproject.tool.assessment.bundle.SamLite"); public void setAuthorBean(AuthorBean authorBean) { this.authorBean = authorBean; } private QuestionGroup questionGroup; private SamLiteService samLiteService; public void setSamLiteService(SamLiteService samLiteService) { this.samLiteService = samLiteService; } public SamLiteBean() { String samliteProperty = ServerConfigurationService.getString("samigo.samliteEnabled"); if (null != samliteProperty && "false".equalsIgnoreCase(samliteProperty)) isVisible = false; } public void parse() { questionGroup = samLiteService.parse(TextFormat.convertPlaintextToFormattedTextNoHighUnicode(log, name), TextFormat.convertPlaintextToFormattedTextNoHighUnicode(log, description), TextFormat.convertPlaintextToFormattedTextNoHighUnicode(log, data)); } public Document createDocument() { return samLiteService.createDocument(questionGroup); } public void createAssessment(AssessmentFacade assessment) { authorBean.setAssessTitle(""); authorBean.setAssessmentDescription(""); authorBean.setAssessmentTypeId(""); authorBean.setAssessmentTemplateId(AssessmentTemplateFacade.DEFAULTTEMPLATE.toString()); AssessmentService assessmentService = new AssessmentService(); ArrayList list = assessmentService.getBasicInfoOfAllActiveAssessments( authorBean.getCoreAssessmentOrderBy(), authorBean.isCoreAscending()); Iterator iter = list.iterator(); while (iter.hasNext()) { AssessmentFacade assessmentFacade= (AssessmentFacade) iter.next(); assessmentFacade.setTitle(FormattedText.convertFormattedTextToPlaintext(assessmentFacade.getTitle())); } authorBean.setAssessments(list); } public List getQuestions() { List<Question> list = questionGroup.getQuestions(); for (Question question: list) { question.setQuestionTypeAsString(getQuestionTypeAsString(question)); } return list; } public QuestionGroup getQuestionGroup() { return questionGroup; } public void setQuestionGroup(QuestionGroup questionGroup) { this.questionGroup = questionGroup; } public String getData() { return data; } public void setData(String data) { this.data = data; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setAssessmentTemplateId(String assessmentTemplateId) { this.assessmentTemplateId = assessmentTemplateId; } public String getAssessmentTemplateId() { return assessmentTemplateId; } public boolean isVisible() { return isVisible; } public void setVisible(boolean isVisible) { this.isVisible = isVisible; } private String getQuestionTypeAsString(Question question) { switch (question.getQuestionType()) { case Question.MULTIPLE_CHOICE_QUESTION: return rb.getString("sam_lite_multiple_choice"); case Question.MULTIPLE_CHOICE_MULTIPLE_ANSWER_QUESTION: return rb.getString("sam_lite_multiple_choice_multiple"); case Question.FILL_IN_THE_BLANK_QUESTION: return rb.getString("sam_lite_fill_in_the_blank"); case Question.TRUE_FALSE_QUESTION: return rb.getString("sam_lite_true_false"); case Question.SHORT_ESSAY_QUESTION: return rb.getString("sam_lite_short_essay"); }; return "Unrecognized Type"; } }