package com.huixinpn.dionysus.domain.psychtest; import java.util.ArrayList; import java.util.Collection; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import com.huixinpn.dionysus.domain.AbstractDionysusPersistable; @Data @EqualsAndHashCode(callSuper = true) @NoArgsConstructor @Entity @Table(name = "psychtestquestions") public class PsychTestQuestion extends AbstractDionysusPersistable { private static final long serialVersionUID = -3202875107419512957L; public enum PsychTestQuestionType { SINGLE_CHOICE, MULTIPLE_CHOICE, GAPFILL, // 文字输入 YES_NO } // TODO: May use single character to save bandwidth public enum RequireMode { REQUIRED, // 必填项 OPTIONAL } // 题目的需要,因为像16PF之类的题目,答案是根据题目的编号来安排的 // 而且有些题目依赖前一题的选择结果,需要根据这个ID来跳转到下一题 @Column(name = "sub_id") private Integer subId; @Column(name = "description") private String description; @ManyToOne private PsychTest test; @Column(name="required") @Enumerated(EnumType.STRING) private RequireMode require = RequireMode.OPTIONAL; @Enumerated(EnumType.STRING) private PsychTestQuestionType type; @OneToMany(mappedBy = "question", fetch = FetchType.EAGER) private Collection<PsychTestQuestionOption> options = new ArrayList<>(); public void addQuestionOption(PsychTestQuestionOption option) { options.add(option); } public void removeQuestionOption(PsychTestQuestionOption option) { options.remove(option); } }