package cn.seecoder.seecoderbokserver.domain; import cn.seecoder.bok.common.QuestionState; import cn.seecoder.bok.common.QuestionType; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.annotation.TypeAlias; import org.springframework.data.elasticsearch.annotations.DateFormat; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; import javax.persistence.EnumType; import javax.persistence.Enumerated; import java.time.Instant; import java.util.List; import java.util.Map; /** * @author Kunduin */ @Document(indexName = "question") @TypeAlias("question") public class Question { @Id @Field(name = "id", type = FieldType.Keyword) private String id; @Field(name = "type", type = FieldType.Keyword) private QuestionType type; @Enumerated(EnumType.STRING) @Field(name = "state", type = FieldType.Keyword) private QuestionState state; @Field(name = "checkedUserId", type = FieldType.Integer) private Integer checkedUserId; @Field(name = "savedUserId", type = FieldType.Integer) private Integer savedUserId; @Field(name = "title", type = FieldType.Text) private String title; @Field(name = "stem", type = FieldType.Text) private String stem; @Field(name = "weight", type = FieldType.Integer) private Integer weight; @Field(name = "analysis", type = FieldType.Text) private String analysis; @Field(name = "key_points", type = FieldType.Text) private String keyPoints; @Field(name = "tags", type = FieldType.Text) private List tags; @Field(name = "knowledge_id", type = FieldType.Text) private List knowledgeId; @Field(name = "options", type = FieldType.Object) private Map options; @Field(name = "blanks", type = FieldType.Object) private Map blanks; @Field(name = "answer", type = FieldType.Text) private String answer; @Field(name = "input_output_mapping", type = FieldType.Object, index = false) private Map inputOutputMapping; @Field(name = "millisecond_limit", type = FieldType.Integer) private Integer millisecondLimit; @Field(name = "memory_limit", type = FieldType.Integer) private Integer memoryLimit; @CreatedDate @Field(name = "created_at", type = FieldType.Date, format = DateFormat.basic_date_time) private Instant createdTime; @LastModifiedDate @Field(name = "updated_at", type = FieldType.Date, format = DateFormat.basic_date_time) private Instant lastModifiedTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public QuestionType getType() { return type; } public void setType(QuestionType type) { this.type = type; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Integer getWeight() { return weight; } public void setWeight(Integer weight) { this.weight = weight; } public String getStem() { return stem; } public void setStem(String stem) { this.stem = stem; } public String getAnalysis() { return analysis; } public void setAnalysis(String analysis) { this.analysis = analysis; } public String getKeyPoints() { return keyPoints; } public void setKeyPoints(String keyPoints) { this.keyPoints = keyPoints; } public List getTags() { return tags; } public void setTags(List tags) { this.tags = tags; } public List getKnowledgeId() { return knowledgeId; } public void setKnowledgeId(List knowledgeId) { this.knowledgeId = knowledgeId; } public Map getOptions() { return options; } public void setOptions(Map options) { this.options = options; } public Map getBlanks() { return blanks; } public void setBlanks(Map blanks) { this.blanks = blanks; } public String getAnswer() { return answer; } public void setAnswer(String answer) { this.answer = answer; } public Map getInputOutputMapping() { return inputOutputMapping; } public void setInputOutputMapping(Map inputOutputMapping) { this.inputOutputMapping = inputOutputMapping; } public Integer getMillisecondLimit() { return millisecondLimit; } public void setMillisecondLimit(Integer millisecondLimit) { this.millisecondLimit = millisecondLimit; } public Integer getMemoryLimit() { return memoryLimit; } public void setMemoryLimit(Integer memoryLimit) { this.memoryLimit = memoryLimit; } public Instant getLastModifiedTime() { return lastModifiedTime; } public void setLastModifiedTime(Instant lastModifiedTime) { this.lastModifiedTime = lastModifiedTime; } public Instant getCreatedTime() { return createdTime; } public void setCreatedTime(Instant createdTime) { this.createdTime = createdTime; } public Integer getCheckedUserId() { return checkedUserId; } public void setCheckedUserId(Integer checkedUserId) { this.checkedUserId = checkedUserId; } public Integer getSavedUserId() { return savedUserId; } public void setSavedUserId(Integer savedUserId) { this.savedUserId = savedUserId; } public QuestionState getState() { return state; } public void setState(QuestionState state) { this.state = state; } @Override public String toString() { return "Question{" + "id='" + id + '\'' + ", type=" + type + ", state=" + state + ", checkedUserId=" + checkedUserId + ", savedUserId=" + savedUserId + ", title='" + title + '\'' + ", stem='" + stem + '\'' + ", weight=" + weight + ", analysis='" + analysis + '\'' + ", keyPoints='" + keyPoints + '\'' + ", tags=" + tags + ", knowledgeId=" + knowledgeId + ", options=" + options + ", blanks=" + blanks + ", answer='" + answer + '\'' + ", inputOutputMapping=" + inputOutputMapping + ", millisecondLimit=" + millisecondLimit + ", memoryLimit=" + memoryLimit + ", createdTime=" + createdTime + ", lastModifiedTime=" + lastModifiedTime + '}'; } }