BaseQuestionVO.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package nju.seec.helper.vo.question;
  2. import lombok.Data;
  3. import lombok.NonNull;
  4. import nju.seec.helper.enums.ExceptionType;
  5. import nju.seec.helper.enums.QuestionType;
  6. import nju.seec.helper.exception.HelperException;
  7. import java.util.Date;
  8. import java.util.Set;
  9. /**
  10. * @author XuShengTao
  11. * <p>
  12. * updated by cst
  13. */
  14. @Data
  15. public abstract class BaseQuestionVO {
  16. protected String id;
  17. protected QuestionType type;
  18. protected String stem;
  19. protected String analysis;
  20. protected String keyPoints;
  21. protected Set<String> tags;
  22. protected Set<String> knowledgeId;
  23. private Date lastModified;
  24. public static BaseQuestionVO convertBokQuestionToVO(@NonNull BokQuestion bokQuestion, boolean withAnswer) {
  25. switch (bokQuestion.getType()) {
  26. case "choice":
  27. return new ChoiceQuestionVO(bokQuestion, withAnswer);
  28. case "true_false":
  29. return new TrueOrFalseQuestionVO(bokQuestion, withAnswer);
  30. default:
  31. throw HelperException.of(ExceptionType.ERROR, "无法解析该题目");
  32. }
  33. }
  34. public BaseQuestionVO(BokQuestion bokQuestion) {
  35. this.id = bokQuestion.getId();
  36. this.stem = bokQuestion.getStem();
  37. this.keyPoints = bokQuestion.getKeyPoints();
  38. this.tags = bokQuestion.getTags();
  39. this.knowledgeId = bokQuestion.getKnowledgeId();
  40. this.lastModified = bokQuestion.getLastModified();
  41. }
  42. /**
  43. * 检查答案是否正确
  44. *
  45. * @param answer 答案
  46. * @return 是否正确
  47. */
  48. public abstract boolean pass(Object answer);
  49. }