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);
}