package com.example.questionbank.domain; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import jakarta.persistence.*; import jakarta.validation.constraints.*; import java.io.Serial; import java.io.Serializable; import java.util.HashSet; import java.util.Set; /** * A Question. */ @Entity @Table(name = "question") @SuppressWarnings("common-java:DuplicatedBlocks") public class Question 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(min = 5, max = 2000) @Column(name = "prompt", length = 2000, nullable = false) private String prompt; @Size(max = 2000) @Column(name = "explanation", length = 2000) private String explanation; @NotNull @Column(name = "active", nullable = false) private Boolean active; @OneToMany(fetch = FetchType.LAZY, mappedBy = "question") @JsonIgnoreProperties(value = { "question" }, allowSetters = true) private Set choices = new HashSet<>(); @ManyToOne(optional = false) @NotNull private Subject subject; // jhipster-needle-entity-add-field - JHipster will add fields here public Long getId() { return this.id; } public Question id(Long id) { this.setId(id); return this; } public void setId(Long id) { this.id = id; } public String getPrompt() { return this.prompt; } public Question prompt(String prompt) { this.setPrompt(prompt); return this; } public void setPrompt(String prompt) { this.prompt = prompt; } public String getExplanation() { return this.explanation; } public Question explanation(String explanation) { this.setExplanation(explanation); return this; } public void setExplanation(String explanation) { this.explanation = explanation; } public Boolean getActive() { return this.active; } public Question active(Boolean active) { this.setActive(active); return this; } public void setActive(Boolean active) { this.active = active; } public Set getChoices() { return this.choices; } public void setChoices(Set choices) { if (this.choices != null) { this.choices.forEach(i -> i.setQuestion(null)); } if (choices != null) { choices.forEach(i -> i.setQuestion(this)); } this.choices = choices; } public Question choices(Set choices) { this.setChoices(choices); return this; } public Question addChoice(Choice choice) { this.choices.add(choice); choice.setQuestion(this); return this; } public Question removeChoice(Choice choice) { this.choices.remove(choice); choice.setQuestion(null); return this; } public Subject getSubject() { return this.subject; } public void setSubject(Subject subject) { this.subject = subject; } public Question subject(Subject subject) { this.setSubject(subject); 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 Question)) { return false; } return getId() != null && getId().equals(((Question) 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 "Question{" + "id=" + getId() + ", prompt='" + getPrompt() + "'" + ", explanation='" + getExplanation() + "'" + ", active='" + getActive() + "'" + "}"; } }