public int create(Answer answer, Diagnosis diagnosis) { try { establishConnection(); Statement stmt = connection.createStatement(); String SQL = "SELECT id FROM perfect_diagnosis_diagnoses_to_answers WHERE answer = " + answer.getId() + " AND diagnosis = " + diagnosis.getId() + ";"; ResultSet res = stmt.executeQuery(SQL); if (res.next()) System.out.println("Perfect diagnosis diagnoses to answers already exists!"); else { stmt = connection.createStatement(); SQL = "INSERT INTO perfect_diagnosis_diagnoses_to_answers (answer, diagnosis) VALUES(" + answer.getId() + ", " + diagnosis.getId() + ");"; int rows = stmt.executeUpdate(SQL, Statement.RETURN_GENERATED_KEYS); int id = 0; if (rows > 0) { ResultSet set = stmt.getGeneratedKeys(); if (set.next()) id = set.getInt(1); } return id; } } catch (SQLException ex) { System.out.println("SQL Error create perfect diagnosis to answer"); } return -1; }
/** * 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); } }