diff --git a/src/main/java/at/ionas999/questioncatalog/model/Question.java b/src/main/java/at/ionas999/questioncatalog/model/Question.java index 8d4f06b..6631cfb 100644 --- a/src/main/java/at/ionas999/questioncatalog/model/Question.java +++ b/src/main/java/at/ionas999/questioncatalog/model/Question.java @@ -32,4 +32,8 @@ public class Question { public void setAnswer(String answer) { this.answer = answer; } + + public void setQuestionCatalogId(int questionCatalogId) { + this.questionCatalogId = questionCatalogId; + } } diff --git a/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java b/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java index b5ab841..3386bb3 100644 --- a/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java +++ b/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java @@ -11,7 +11,8 @@ public class QuestionCatalog { private ArrayList questions; private String name; - public QuestionCatalog(String name, ArrayList questions) { + public QuestionCatalog(int id, String name, ArrayList questions) { + this.id = id; this.name = name; this.questions = questions; } @@ -20,6 +21,14 @@ public class QuestionCatalog { return FXCollections.observableList(questions); } + public void setQuestions(ArrayList questions){ + this.questions = questions; + } + + public int getId(){ + return this.id; + } + public String getName() { return name; } diff --git a/src/main/java/at/ionas999/questioncatalog/services/QuestionCatalogService.java b/src/main/java/at/ionas999/questioncatalog/services/QuestionCatalogService.java new file mode 100644 index 0000000..30c1b35 --- /dev/null +++ b/src/main/java/at/ionas999/questioncatalog/services/QuestionCatalogService.java @@ -0,0 +1,76 @@ +package at.ionas999.questioncatalog.services; + +import at.ionas999.questioncatalog.model.Question; +import at.ionas999.questioncatalog.model.QuestionCatalog; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class QuestionCatalogService { + public static boolean AddQuestionCatalogToDb(QuestionCatalog catalog) throws SQLException { + try (Connection connection = ServiceBase.GetJDBCConnection()) { + String insertStmt = "insert into QUESTIONCATALOG (NAME) VALUES (?)"; + + try (PreparedStatement statement = connection.prepareStatement(insertStmt)) { + statement.setString(2, catalog.getName()); + statement.execute(); + } + } + int id = GetLastInsertedCatalogWithoutQuestions(catalog.getName()).getId(); + for(Question q : catalog.getQuestions()) { + q.setQuestionCatalogId(id); + QuestionService.AddQuestionToDb(q); + } + + return true; + } + + + public static QuestionCatalog GetLastInsertedCatalogWithoutQuestions(String name) throws SQLException { + String stmtString = "select id, name from QUESTIONCATALOG order by ID desc fetch first row only"; + QuestionCatalog catalog; + try (Connection connection = ServiceBase.GetJDBCConnection()) { + + try (PreparedStatement statement = connection.prepareStatement(stmtString)) { + ResultSet rs = statement.executeQuery(); + List questions = new ArrayList(); + rs.next(); + catalog = new QuestionCatalog( + rs.getInt(1), + rs.getString(2), + null + ); + + } + } + return catalog; + } + + public static ArrayList GetCatalogsWithoutQuestions(int catalogId) throws SQLException { + String stmtString = "select id, name from QUESTIONCATALOG where ID = ?"; + + try (Connection connection = ServiceBase.GetJDBCConnection()) { + + try (PreparedStatement statement = connection.prepareStatement(stmtString)) { + statement.setInt(1, catalogId); + ResultSet rs = statement.executeQuery(); + ArrayList catalogs = new ArrayList<>(); + + while (rs.next()) { + QuestionCatalog catalog = new QuestionCatalog( + rs.getInt(1), + rs.getString(2), + null + ); + catalogs.add(catalog); + } + + return catalogs; + } + } + } +} diff --git a/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java b/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java index 5c78b65..533ea98 100644 --- a/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java +++ b/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java @@ -26,7 +26,7 @@ public class QuestionService { return true; } - public static List GetQuestionsFromCatalog(int catalogId) throws SQLException { + public static ArrayList GetQuestionsFromCatalog(int catalogId) throws SQLException { String stmtString = "select id, questionCatalogId, question, answer from Question where questionCatalogId = ?"; try(Connection connection = ServiceBase.GetJDBCConnection()){ @@ -34,7 +34,7 @@ public class QuestionService { try (PreparedStatement statement = connection.prepareStatement(stmtString)){ statement.setInt(1, catalogId); ResultSet rs = statement.executeQuery(); - List questions = new ArrayList(); + ArrayList questions = new ArrayList(); while (rs.next()){ Question question = new Question( diff --git a/src/main/java/at/ionas999/questioncatalog/services/ServiceBase.java b/src/main/java/at/ionas999/questioncatalog/services/ServiceBase.java index 3c4229f..8a3f2e0 100644 --- a/src/main/java/at/ionas999/questioncatalog/services/ServiceBase.java +++ b/src/main/java/at/ionas999/questioncatalog/services/ServiceBase.java @@ -20,7 +20,7 @@ public abstract class ServiceBase { create table QuestionCatalog ( id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), - name varchar(10) not null + name varchar(10) not null unique ) """; try (Statement stmt = connection.createStatement()) { diff --git a/src/main/resources/at/ionas999/questioncatalog/view.fxml b/src/main/resources/at/ionas999/questioncatalog/view.fxml index 7208d0a..fcbf9d2 100644 --- a/src/main/resources/at/ionas999/questioncatalog/view.fxml +++ b/src/main/resources/at/ionas999/questioncatalog/view.fxml @@ -7,6 +7,15 @@ fx:controller="at.ionas999.questioncatalog.controller.ViewController" prefHeight="400.0" prefWidth="600.0"> + + + + + + + + +