From 3a7fc2aa51f8870399bc2fe1bd03f6c209af5577 Mon Sep 17 00:00:00 2001 From: jez04 <david.jezek@post.cz> Date: Mon, 24 Feb 2025 01:23:34 +0100 Subject: [PATCH] feat: add factory --- src/main/java/lab/App.java | 1 - src/main/java/lab/DbConnector.java | 10 +++++----- src/main/java/lab/GameController.java | 10 +++++----- src/main/java/lab/ScoreStorageFactory.java | 13 +++++++++++++ src/main/resources/lab/gameWindow.fxml | 4 ++-- 5 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 src/main/java/lab/ScoreStorageFactory.java diff --git a/src/main/java/lab/App.java b/src/main/java/lab/App.java index ec8e126..bd778ae 100644 --- a/src/main/java/lab/App.java +++ b/src/main/java/lab/App.java @@ -29,7 +29,6 @@ public class App extends Application { GameController gameController = gameLoader.getController(); Scene scene = new Scene(root); primaryStage.setScene(scene); -// primaryStage.resizableProperty().set(false); primaryStage.setTitle("Java 2 - 2nd laboratory"); primaryStage.show(); // Exit program when main window is closed diff --git a/src/main/java/lab/DbConnector.java b/src/main/java/lab/DbConnector.java index 9aba4e9..d7a0594 100644 --- a/src/main/java/lab/DbConnector.java +++ b/src/main/java/lab/DbConnector.java @@ -13,15 +13,15 @@ public class DbConnector { private static final String JDBC_CONECTIN_STRING = "jdbc:h2:file:./scoreDB"; - public static List<Score> getAll() { + public List<Score> getAll() { return queryScore("select * from scores;"); } - public static List<Score> getFirstTen() { + public List<Score> getFirstTen() { return queryScore("select * from scores order by points desc limit 10;"); } - private static List<Score> queryScore(String query) { + private List<Score> queryScore(String query) { List<Score> result = new ArrayList<>(); try (Connection con = DriverManager.getConnection(JDBC_CONECTIN_STRING); Statement stm = con.createStatement(); @@ -35,7 +35,7 @@ public class DbConnector { return result; } - public static void createTable() { + public void init() { try (Connection con = DriverManager.getConnection(JDBC_CONECTIN_STRING); Statement stm = con.createStatement();) { stm.executeUpdate("CREATE TABLE if not exists scores (nick VARCHAR(50) NOT NULL, points INT NOT NULL);"); @@ -44,7 +44,7 @@ public class DbConnector { } } - public static void insertScore(Score score) { + public void insertScore(Score score) { try (Connection con = DriverManager.getConnection(JDBC_CONECTIN_STRING); PreparedStatement stm = con.prepareStatement("INSERT INTO scores VALUES (?, ?)");) { stm.setString(1, score.getName()); diff --git a/src/main/java/lab/GameController.java b/src/main/java/lab/GameController.java index b94e3f5..745de93 100644 --- a/src/main/java/lab/GameController.java +++ b/src/main/java/lab/GameController.java @@ -71,17 +71,17 @@ public class GameController { void btnGenerateScoreAction(ActionEvent event) { Score score = Score.generate(); this.scores.getItems().add(score); - DbConnector.insertScore(score); + ScoreStorageFactory.getInstance().insertScore(score); } @FXML void btnLoadAllAction(ActionEvent event) { - updateScoreTable(DbConnector.getAll()); + updateScoreTable(ScoreStorageFactory.getInstance().getAll()); } @FXML void btnLoadFirstTenAction(ActionEvent event) { - updateScoreTable(DbConnector.getFirstTen()); + updateScoreTable(ScoreStorageFactory.getInstance().getFirstTen()); } private void updateScoreTable(List<Score> scores) { @@ -117,8 +117,8 @@ public class GameController { private void initDB() { //Stream.generate(Score::generate).limit(10).toList(); - DbConnector.createTable(); - scores.getItems().addAll(DbConnector.getAll()); + ScoreStorageFactory.getInstance().init(); + scores.getItems().addAll(ScoreStorageFactory.getInstance().getAll()); } public void stop() { diff --git a/src/main/java/lab/ScoreStorageFactory.java b/src/main/java/lab/ScoreStorageFactory.java new file mode 100644 index 0000000..3346de6 --- /dev/null +++ b/src/main/java/lab/ScoreStorageFactory.java @@ -0,0 +1,13 @@ +package lab; + +public class ScoreStorageFactory { + + private static DbConnector instance; + + public static DbConnector getInstance() { + if(instance == null) { + instance = new DbConnector(); + } + return instance; + } +} diff --git a/src/main/resources/lab/gameWindow.fxml b/src/main/resources/lab/gameWindow.fxml index 33be739..9eb99f9 100644 --- a/src/main/resources/lab/gameWindow.fxml +++ b/src/main/resources/lab/gameWindow.fxml @@ -13,7 +13,7 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Font?> -<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="421.0" prefWidth="849.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="lab.GameController"> +<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="388.0" prefWidth="911.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="lab.GameController"> <bottom> <HBox alignment="TOP_CENTER" prefHeight="66.0" prefWidth="866.0" BorderPane.alignment="CENTER"> <children> @@ -49,7 +49,7 @@ <center> <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER"> <children> - <TableView fx:id="scores" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"> + <TableView fx:id="scores" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="2000.0"> <columns> <TableColumn fx:id="nickColumn" prefWidth="75.0" text="Nick" /> <TableColumn fx:id="pointsColumn" prefWidth="75.0" text="Points" /> -- GitLab