package com.example.questionbank.domain; import com.example.questionbank.domain.enumeration.OptionKey; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import jakarta.persistence.*; import jakarta.validation.constraints.*; import java.io.Serial; import java.io.Serializable; /** * A ExamAnswer. */ @Entity @Table(name = "exam_answer") @SuppressWarnings("common-java:DuplicatedBlocks") public class ExamAnswer implements Serializable { @Serial private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator") @SequenceGenerator(name = "sequenceGenerator") @Column(name = "id") private Long id; @NotNull @Size(max = 2000) @Column(name = "question_text_snapshot", length = 2000, nullable = false) private String questionTextSnapshot; @Size(max = 2000) @Column(name = "explanation_snapshot", length = 2000) private String explanationSnapshot; @Enumerated(EnumType.STRING) @Column(name = "selected_option") private OptionKey selectedOption; @Size(max = 500) @Column(name = "selected_content_snapshot", length = 500) private String selectedContentSnapshot; @Column(name = "correct") private Boolean correct; @Min(value = 0) @Column(name = "awarded_points") private Integer awardedPoints; @ManyToOne(optional = false) @NotNull @JsonIgnoreProperties(value = { "choices", "subject" }, allowSetters = true) private Question question; @ManyToOne(optional = false) @NotNull @JsonIgnoreProperties(value = { "answers", "subject", "user" }, allowSetters = true) private ExamAttempt attempt; // jhipster-needle-entity-add-field - JHipster will add fields here public Long getId() { return this.id; } public ExamAnswer id(Long id) { this.setId(id); return this; } public void setId(Long id) { this.id = id; } public String getQuestionTextSnapshot() { return this.questionTextSnapshot; } public ExamAnswer questionTextSnapshot(String questionTextSnapshot) { this.setQuestionTextSnapshot(questionTextSnapshot); return this; } public void setQuestionTextSnapshot(String questionTextSnapshot) { this.questionTextSnapshot = questionTextSnapshot; } public String getExplanationSnapshot() { return this.explanationSnapshot; } public ExamAnswer explanationSnapshot(String explanationSnapshot) { this.setExplanationSnapshot(explanationSnapshot); return this; } public void setExplanationSnapshot(String explanationSnapshot) { this.explanationSnapshot = explanationSnapshot; } public OptionKey getSelectedOption() { return this.selectedOption; } public ExamAnswer selectedOption(OptionKey selectedOption) { this.setSelectedOption(selectedOption); return this; } public void setSelectedOption(OptionKey selectedOption) { this.selectedOption = selectedOption; } public String getSelectedContentSnapshot() { return this.selectedContentSnapshot; } public ExamAnswer selectedContentSnapshot(String selectedContentSnapshot) { this.setSelectedContentSnapshot(selectedContentSnapshot); return this; } public void setSelectedContentSnapshot(String selectedContentSnapshot) { this.selectedContentSnapshot = selectedContentSnapshot; } public Boolean getCorrect() { return this.correct; } public ExamAnswer correct(Boolean correct) { this.setCorrect(correct); return this; } public void setCorrect(Boolean correct) { this.correct = correct; } public Integer getAwardedPoints() { return this.awardedPoints; } public ExamAnswer awardedPoints(Integer awardedPoints) { this.setAwardedPoints(awardedPoints); return this; } public void setAwardedPoints(Integer awardedPoints) { this.awardedPoints = awardedPoints; } public Question getQuestion() { return this.question; } public void setQuestion(Question question) { this.question = question; } public ExamAnswer question(Question question) { this.setQuestion(question); return this; } public ExamAttempt getAttempt() { return this.attempt; } public void setAttempt(ExamAttempt examAttempt) { this.attempt = examAttempt; } public ExamAnswer attempt(ExamAttempt examAttempt) { this.setAttempt(examAttempt); return this; } // jhipster-needle-entity-add-getters-setters - JHipster will add getters and setters here @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof ExamAnswer)) { return false; } return getId() != null && getId().equals(((ExamAnswer) o).getId()); } @Override public int hashCode() { // see https://vladmihalcea.com/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/ return getClass().hashCode(); } // prettier-ignore @Override public String toString() { return "ExamAnswer{" + "id=" + getId() + ", questionTextSnapshot='" + getQuestionTextSnapshot() + "'" + ", explanationSnapshot='" + getExplanationSnapshot() + "'" + ", selectedOption='" + getSelectedOption() + "'" + ", selectedContentSnapshot='" + getSelectedContentSnapshot() + "'" + ", correct='" + getCorrect() + "'" + ", awardedPoints=" + getAwardedPoints() + "}"; } }