Question.java
package com.gvi.project.models;
import java.util.Arrays;
import java.util.List;
/**
* Simple POJO for Question data transfer.
* This is a data model class, not a JPA entity.
* For database operations, use QuestionEntity from the repository package.
*
* Stores questions with answers and possible answer options
*/
public class Question {
// Primary key
private Long id;
// The question text
private String question;
// The correct answer
private String answer;
// Answer options as CSV string in the database
private String possibilities;
// Default constructor
public Question() {
}
/**
* Constructor with all fields
* @param question The question text
* @param answer The correct answer
* @param possibilities Answer options as CSV string
*/
public Question(String question, String answer, String possibilities) {
this.question = question;
this.answer = answer;
this.possibilities = possibilities;
}
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
/**
* Returns the raw CSV string of possibilities
* @return Possibilities as CSV string
*/
public String getPossibilities() {
return possibilities;
}
public void setPossibilities(String possibilities) {
this.possibilities = possibilities;
}
/**
* Converts the CSV string of possibilities into a list
* @return List of answer options
*/
public List<String> getPossibilitiesAsList() {
// Split CSV string and trim whitespace
if (possibilities == null || possibilities.isEmpty()) {
return List.of();
}
return Arrays.stream(possibilities.split(","))
.map(String::trim)
.toList();
}
/**
* Sets possibilities from a list (converts to CSV)
* @param possibilitiesList List of answer options
*/
public void setPossibilitiesFromList(List<String> possibilitiesList) {
this.possibilities = String.join(",", possibilitiesList);
}
}