package nju.seec.helper.vo.question; import lombok.Data; import lombok.NonNull; import nju.seec.helper.enums.ExceptionType; import nju.seec.helper.enums.QuestionType; import nju.seec.helper.exception.HelperException; import java.util.Date; import java.util.Set; /** * @author XuShengTao *

* updated by cst */ @Data public abstract class BaseQuestionVO { protected String id; protected QuestionType type; protected String stem; protected String analysis; protected String keyPoints; protected Set tags; protected Set knowledgeId; private Date lastModified; public static BaseQuestionVO convertBokQuestionToVO(@NonNull BokQuestion bokQuestion, boolean withAnswer) { switch (bokQuestion.getType()) { case "choice": return new ChoiceQuestionVO(bokQuestion, withAnswer); case "true_false": return new TrueOrFalseQuestionVO(bokQuestion, withAnswer); default: throw HelperException.of(ExceptionType.ERROR, "无法解析该题目"); } } public BaseQuestionVO(BokQuestion bokQuestion) { this.id = bokQuestion.getId(); this.stem = bokQuestion.getStem(); this.keyPoints = bokQuestion.getKeyPoints(); this.tags = bokQuestion.getTags(); this.knowledgeId = bokQuestion.getKnowledgeId(); this.lastModified = bokQuestion.getLastModified(); } /** * 检查答案是否正确 * * @param answer 答案 * @return 是否正确 */ public abstract boolean pass(Object answer); }