implemt the testconroller without error handeling

This commit is contained in:
Jonas Hinterdorfer 2025-05-13 10:00:13 +02:00
parent 7bb22fccd9
commit 3c5f9c7bbf

View File

@ -49,6 +49,8 @@ public class TestController {
private ObservableList<Question> questions; private ObservableList<Question> questions;
private ArrayList<String> answers = new ArrayList<>(); private ArrayList<String> answers = new ArrayList<>();
private int currentIdx = 0; private int currentIdx = 0;
private int correctCount = 0;
private int inCorrectCount = 0;
@FXML @FXML
private void initialize() throws SQLException { private void initialize() throws SQLException {
@ -87,10 +89,14 @@ public class TestController {
@FXML @FXML
private void onCorrectBtnClick(ActionEvent actionEvent) { private void onCorrectBtnClick(ActionEvent actionEvent) {
correctCount++;
displayNextQuestionCorrectionn();
} }
@FXML @FXML
private void onIncorrectBtnClick(ActionEvent actionEvent) { private void onIncorrectBtnClick(ActionEvent actionEvent) {
inCorrectCount ++;
displayNextQuestionCorrectionn();
} }
public void onStartTestBtnClick(ActionEvent actionEvent) throws SQLException { public void onStartTestBtnClick(ActionEvent actionEvent) throws SQLException {
@ -99,18 +105,46 @@ public class TestController {
.GetQuestionsFromCatalog(((QuestionCatalog) catalogComboBox.getValue()).getId()); .GetQuestionsFromCatalog(((QuestionCatalog) catalogComboBox.getValue()).getId());
this.questions = FXCollections.observableList(Utils.getRandom(questions, (int) this.questionSlider.getValue())); this.questions = FXCollections.observableList(Utils.getRandom(questions, (int) this.questionSlider.getValue()));
this.questionLabel.setText(this.questions.get(currentIdx).getQuestion()); this.questionLabel.setText(this.questions.get(currentIdx).getQuestion());
this.userAnswerArea.clear();
} }
public void showNextQuestion(ActionEvent actionEvent) { @FXML
private void showNextQuestion(ActionEvent actionEvent) {
this.answers.add(this.userAnswerArea.getText()); this.answers.add(this.userAnswerArea.getText());
currentIdx++; currentIdx++;
if(currentIdx >= this.questions.size()) if(currentIdx >= this.questions.size())
{ {
this.isInCorrectionState.setValue(true); this.isInCorrectionState.setValue(true);
this.questionLabel.setText("Rate your Answers !"); this.questionLabel.setText("Rate your Answers !");
this.currentIdx = -1;
displayNextQuestionCorrectionn();
return; return;
} }
this.userAnswerArea.clear(); this.userAnswerArea.clear();
this.questionLabel.setText(this.questions.get(currentIdx).getQuestion()); this.questionLabel.setText(this.questions.get(currentIdx).getQuestion());
} }
private void displayNextQuestionCorrectionn()
{
currentIdx ++;
if(currentIdx == this.answers.size())
{
this.isInConfiguringState.setValue(true);
this.isInCorrectionState.setValue(false);
this.currentIdx = 0;
displayResult();
this.correctCount = 0;
this.inCorrectCount = 0;
this.answers.clear();
return;
}
this.questionLabel.setText(this.questions.get(currentIdx).getQuestion());
this.userAnswerArea.setText(this.answers.get(currentIdx));
this.correctAnswerArea.setText(this.questions.get(currentIdx).getAnswer());
}
private void displayResult()
{
this.userAnswerArea.setText("Correct: %d \nIncorrect: %d\n".formatted(correctCount, inCorrectCount));
}
} }