@Override public void remove(int id) { Question q = get(id); questionDescriptionManager.removeFromQuestion(id); answerManager.remove(q.getAnswerNo().getId()); answerManager.remove(q.getAnswerYes().getId()); questionMapper.delete(id); }
@Override public Question add() { Question question = new Question(); Answer yesAnswer = answerManager.add(); question.setAnswerYes(yesAnswer); Answer noAnswer = answerManager.add(); question.setAnswerNo(noAnswer); question.setSymptom(true); // RE: Standardwert auf Symptom, da die meisten Fragen Symptome sind. questionMapper.create(question); addDescriptions(question); return question; }
/** * Diese Methode überprüft ob ein Dependency Loop existiert. * * <p>Dafür wird die Abhängigkeitskette einer Frage Rekursiv durchgegangen und die Fragen jeweils * einem Set hinzugefügt. * * <p>Kommt eine Frage zwei mal vor, dann existiert ein Loop. * * @param question Die nächste zu überprüfende Frage * @param previousQuestions Ein Set mit allen Bisher überprüften Fragen * @return true fals ein Loop entsteht, false falls kein Loop entsteht */ private boolean hasDependencyLoop(Question question, HashSet<Question> previousQuestions) { if (previousQuestions.contains(question)) { return true; } previousQuestions.add(question); final Answer answer = question.getDependsOn(); if (answer == null) { return false; } else { Question nextQuestion = answer.getAnswerOf(); if (nextQuestion == null) { final Answer fetchedAnswer = answerManager.get(answer.getId()); nextQuestion = fetchedAnswer.getAnswerOf(); } return hasDependencyLoop(nextQuestion, previousQuestions); } }