Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cz.muni.fi.books;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowMapper;
- import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
- import org.springframework.jdbc.core.namedparam.SqlParameterSource;
- import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
- import org.springframework.transaction.annotation.Transactional;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import javax.sql.DataSource;
- import java.util.List;
- /**
- * cz.muni.fi.books.Book manager class
- *
- * @author Martin Kacenga
- */
- public class BookManagerImpl implements BookManager {
- private JdbcTemplate jdbc;
- final static Logger log = LoggerFactory.getLogger(BookManagerImpl.class);
- public BookManagerImpl(DataSource dataSource) {
- this.jdbc = new JdbcTemplate(dataSource);
- }
- @Override
- public void createBook(Book book) {
- if (book == null) {
- log.error("Null cannot he passed as argument.");
- throw new NullPointerException();
- }
- if (book.getName().equals("") || book.getAuthorName().equals("")) {
- log.error("Essential arguments from book are missing.");
- throw new IllegalArgumentException();
- }
- SimpleJdbcInsert insertBook = new SimpleJdbcInsert(jdbc)
- .withTableName("books").usingGeneratedKeyColumns("id");
- SqlParameterSource parameters = new MapSqlParameterSource()
- .addValue("name", book.getName())
- .addValue("author", book.getAuthorName())
- .addValue("publisher", book.getPublisher());
- log.debug("Creating book {}", book.getName());
- Number id = insertBook.executeAndReturnKey(parameters);
- book.setId(id.longValue());
- }
- @Override
- public Book getBookById(Long id) {
- if (id == null) {
- log.error("Book has no ID.");
- throw new NullPointerException();
- }
- log.debug("Getting book with {} ID", id);
- return jdbc.queryForObject("SELECT * FROM books WHERE id=?", bookMapper, id);
- }
- private RowMapper<Book> bookMapper = (rs, rowNum) ->
- new Book(rs.getLong("id"), rs.getString("name"), rs.getString("author"), rs.getString("publisher"));
- @Transactional
- @Override
- public List<Book> getAllBooks() {
- log.debug("getting all books");
- return jdbc.query("SELECT * FROM books", bookMapper);
- }
- @Override
- public void updateBook(Book book) {
- throwPossibleExceptions(book);
- log.debug("Updating {0} book with {1}ID.", book.getName(), book.getId());
- jdbc.update("UPDATE books set name=?,author=? where id=?",
- book.getName(),
- book.getAuthorName(),
- book.getId());
- }
- @Override
- public void deleteBook(Book book) {
- throwPossibleExceptions(book);
- log.debug("Deleting {0} book with {1}ID.", book.getName(), book.getId());
- jdbc.update("DELETE FROM books WHERE id=?", book.getId());
- }
- private void throwPossibleExceptions(Book book) {
- if (book == null){
- log.error("Cannot do this operation with null argument.");
- throw new NullPointerException();
- }
- if (book.getId() == null) {
- log.error("ID cannot be set to NULL.");
- throw new IllegalArgumentException();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement