diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 4b70699a..3cd3701c 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -1,6 +1,6 @@ package mate.academy; -import java.math.BigInteger; +import java.math.BigDecimal; import mate.academy.dao.BookDao; import mate.academy.lib.Injector; import mate.academy.model.Book; @@ -12,16 +12,16 @@ public static void main(String[] args) { // create Book book = new Book(); book.setTitle("Java Programming"); - book.setPrice(100.00); + book.setPrice(new BigDecimal(100)); System.out.println(bookDao.create(book)); // update Book bookUpdate = new Book(); bookUpdate.setTitle("Updated title"); - bookUpdate.setPrice(200.00); - bookUpdate.setId(new BigInteger("1")); + bookUpdate.setPrice(new BigDecimal(200)); + bookUpdate.setId(1L); System.out.println(bookDao.update(bookUpdate)); // findById - System.out.println(bookDao.findById(2L)); + System.out.println(bookDao.findById(1L)); // findAll System.out.println(bookDao.findAll()); // deleteById diff --git a/src/main/java/mate/academy/dao/BookDaoImpl.java b/src/main/java/mate/academy/dao/BookDaoImpl.java index 78eba83b..50286648 100644 --- a/src/main/java/mate/academy/dao/BookDaoImpl.java +++ b/src/main/java/mate/academy/dao/BookDaoImpl.java @@ -1,7 +1,6 @@ package mate.academy.dao; import java.math.BigDecimal; -import java.math.BigInteger; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -10,10 +9,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import mate.academy.ConnectionUtil; import mate.academy.exception.DataProcessingException; import mate.academy.lib.Dao; import mate.academy.model.Book; +import mate.academy.util.ConnectionUtil; @Dao public class BookDaoImpl implements BookDao { @@ -25,7 +24,7 @@ public Book create(Book book) { PreparedStatement statement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS)) { statement.setString(1, book.getTitle()); - statement.setDouble(2, book.getPrice()); + statement.setBigDecimal(2, book.getPrice()); int affectedRows = statement.executeUpdate(); if (affectedRows < 1) { throw new RuntimeException( @@ -33,7 +32,7 @@ public Book create(Book book) { } ResultSet generatedKeys = statement.getGeneratedKeys(); if (generatedKeys.next()) { - BigInteger id = generatedKeys.getObject(1, BigInteger.class); + Long id = generatedKeys.getLong(1); book.setId(id); } } catch (SQLException e) { @@ -52,14 +51,11 @@ public Optional findById(Long id) { statement.executeQuery(); ResultSet resultSet = statement.getResultSet(); if (resultSet.next()) { - Book book = new Book(); - book.setId(resultSet.getObject("id", BigInteger.class)); - book.setTitle(resultSet.getObject("title", String.class)); - book.setPrice(resultSet.getObject("price", Double.class)); + Book book = mapResultSetToBook(resultSet); return Optional.of(book); } } catch (SQLException e) { - throw new RuntimeException(e); + throw new DataProcessingException("Can't find the book by id, where id = " + id, e); } return Optional.empty(); } @@ -74,15 +70,12 @@ public List findAll() { ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { do { - Book book = new Book(); - book.setId(resultSet.getObject("id", BigInteger.class)); - book.setTitle(resultSet.getObject("title", String.class)); - book.setPrice(resultSet.getObject("price", Double.class)); + Book book = mapResultSetToBook(resultSet); books.add(book); } while (resultSet.next()); } } catch (SQLException e) { - throw new RuntimeException(e); + throw new DataProcessingException("Can't find all from table", e); } return books; } @@ -94,8 +87,8 @@ public Book update(Book book) { Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = connection.prepareStatement(query)) { statement.setString(1, book.getTitle()); - statement.setDouble(2, book.getPrice()); - statement.setBigDecimal(3, new BigDecimal(book.getId())); + statement.setBigDecimal(2, book.getPrice()); + statement.setLong(3, book.getId()); int affectedRows = statement.executeUpdate(); if (affectedRows < 1) { throw new RuntimeException( @@ -103,7 +96,7 @@ public Book update(Book book) { } return book; } catch (SQLException e) { - throw new RuntimeException(e); + throw new DataProcessingException("Can't update the book: " + book, e); } } @@ -124,4 +117,12 @@ public boolean deleteById(Long id) { } return true; } + + private static Book mapResultSetToBook(ResultSet resultSet) throws SQLException { + Book book = new Book(); + book.setId(resultSet.getLong("id")); + book.setTitle(resultSet.getObject("title", String.class)); + book.setPrice(resultSet.getObject("price", BigDecimal.class)); + return book; + } } diff --git a/src/main/java/mate/academy/model/Book.java b/src/main/java/mate/academy/model/Book.java index d3ad20c9..e2cb4289 100644 --- a/src/main/java/mate/academy/model/Book.java +++ b/src/main/java/mate/academy/model/Book.java @@ -1,17 +1,17 @@ package mate.academy.model; -import java.math.BigInteger; +import java.math.BigDecimal; public class Book { - private BigInteger id; + private Long id; private String title; - private double price; + private BigDecimal price; - public BigInteger getId() { + public Long getId() { return id; } - public void setId(BigInteger id) { + public void setId(Long id) { this.id = id; } @@ -23,11 +23,11 @@ public void setTitle(String title) { this.title = title; } - public double getPrice() { + public BigDecimal getPrice() { return price; } - public void setPrice(double price) { + public void setPrice(BigDecimal price) { this.price = price; } diff --git a/src/main/java/mate/academy/ConnectionUtil.java b/src/main/java/mate/academy/util/ConnectionUtil.java similarity index 61% rename from src/main/java/mate/academy/ConnectionUtil.java rename to src/main/java/mate/academy/util/ConnectionUtil.java index 31e5215f..55ce98b4 100644 --- a/src/main/java/mate/academy/ConnectionUtil.java +++ b/src/main/java/mate/academy/util/ConnectionUtil.java @@ -1,8 +1,5 @@ -package mate.academy; +package mate.academy.util; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -15,7 +12,7 @@ public class ConnectionUtil { static { DB_PROPERTIES = new Properties(); DB_PROPERTIES.put("user", "root"); - DB_PROPERTIES.put("password", getPassword()); + DB_PROPERTIES.put("password", "1111"); try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { @@ -26,14 +23,4 @@ public class ConnectionUtil { public static Connection getConnection() throws SQLException { return DriverManager.getConnection(DB_URL, DB_PROPERTIES); } - - private static String getPassword() { - String path = "src/main/resources/pswrd.txt"; - try { - return Files.readString(Path.of(path)); - - } catch (IOException e) { - throw new RuntimeException("Can't read a file with path: " + path, e); - } - } } diff --git a/src/main/resources/pswrd.txt b/src/main/resources/pswrd.txt deleted file mode 100644 index 4edabb31..00000000 --- a/src/main/resources/pswrd.txt +++ /dev/null @@ -1 +0,0 @@ -My66524407m \ No newline at end of file