diff --git a/src/main/java/lab/App.java b/src/main/java/lab/App.java index ec8e12686df1b3bcc2f16c95652a1f65f66100cc..bd778ae3db7dca39462dcf4895a2e615d212bd7c 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 9aba4e9d79f07386e26e3b024bde198495a235b2..d7a0594cf69ca3baa2910308fc4b8b8d1cb5b0bb 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 b94e3f58af79457fd1b1f26df2b8fdd9a7058854..745de938821f9e3e651df9a6bccdb0487bbd4a6b 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 0000000000000000000000000000000000000000..3346de6eb41a256e171e1a9bfb3d6af18ad1b464 --- /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 33be739d9e2e405729ea29470944c5ab1d8a1ee6..9eb99f99a217926c42ebd219b1a0bbd925364854 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" />