@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);
    }
  }