diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java index fb0848cacd311d14e68b5eda171c784bb68fed32..2538a6ccc53fda15faa6894cb290f798b80b90cc 100644 --- a/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java +++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java @@ -40,6 +40,9 @@ public class Question implements Serializable { ) private Set<QuestionPhaseRelation> questionPhaseRelations = new HashSet<>(); + @Column(name = "answer_required") + private boolean answerRequired; + public Long getId() { return id; } @@ -100,6 +103,14 @@ public class Question implements Serializable { this.questionPhaseRelations.add(questionPhaseRelation); } + public boolean isAnswerRequired() { + return answerRequired; + } + + public void setAnswerRequired(boolean answerRequired) { + this.answerRequired = answerRequired; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -107,12 +118,13 @@ public class Question implements Serializable { Question question = (Question) o; return getOrder() == question.getOrder() && getQuestionType() == question.getQuestionType() && - Objects.equals(getText(), question.getText()); + Objects.equals(getText(), question.getText()) && + Objects.equals(isAnswerRequired(), question.isAnswerRequired()); } @Override public int hashCode() { - return Objects.hash(getQuestionType(), getText(), getOrder()); + return Objects.hash(getQuestionType(), getText(), getOrder(), isAnswerRequired()); } @Override @@ -122,6 +134,7 @@ public class Question implements Serializable { ", questionType=" + this.getQuestionType() + ", text='" + this.getText() + '\'' + ", order=" + this.getOrder() + + ", answerRequired=" + this.answerRequired + '}'; } } diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java index cb60689b961aa3c5b6ad5f7783d8936edcbf7f73..a833bc4dce306eeb38accce0139e2f5bffc25290 100644 --- a/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java +++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java @@ -3,6 +3,8 @@ package cz.muni.ics.kypo.training.adaptive.dto.questionnaire; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import javax.persistence.Column; +import javax.validation.constraints.NotNull; import java.util.Objects; @ApiModel( @@ -12,6 +14,9 @@ public class QuestionDTO extends AbstractQuestionDTO { @ApiModelProperty(value = "Question ID. Leave blank if a new question is added", required = true, example = "1") private Long id; + @ApiModelProperty(value = "Sign if the question must be answered by the participant or not.", example = "true") + @NotNull(message = "{question.answerRequired.NotNull.message}") + private boolean answerRequired; public Long getId() { return id; @@ -21,24 +26,33 @@ public class QuestionDTO extends AbstractQuestionDTO { this.id = id; } + public boolean isAnswerRequired() { + return answerRequired; + } + + public void setAnswerRequired(boolean answerRequired) { + this.answerRequired = answerRequired; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; QuestionDTO that = (QuestionDTO) o; - return Objects.equals(id, that.id); + return Objects.equals(id, that.id) && Objects.equals(answerRequired, that.answerRequired); } @Override public int hashCode() { - return Objects.hash(super.hashCode(), id); + return Objects.hash(super.hashCode(), id, answerRequired); } @Override public String toString() { return "QuestionDTO{" + "id=" + id + + "answerRequired=" + answerRequired + "} " + super.toString(); } } diff --git a/src/main/resources/db/migration/V13__db_question_answer_required.sql b/src/main/resources/db/migration/V13__db_question_answer_required.sql new file mode 100644 index 0000000000000000000000000000000000000000..4785c16394158e0953a141b578adc44f2b16e954 --- /dev/null +++ b/src/main/resources/db/migration/V13__db_question_answer_required.sql @@ -0,0 +1 @@ +alter table question add column answer_required boolean;