diff --git a/src/main/java/com/jesuspinar/booksearch/dao/BookDao.java b/src/main/java/com/jesuspinar/booksearch/dao/BookDao.java new file mode 100644 index 0000000..092252e --- /dev/null +++ b/src/main/java/com/jesuspinar/booksearch/dao/BookDao.java @@ -0,0 +1,74 @@ +package com.jesuspinar.booksearch.dao; + +import com.jesuspinar.booksearch.config.AppConfig; +import com.jesuspinar.booksearch.controller.CsvParser; +import com.jesuspinar.booksearch.model.Book; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +@Repository +public class BookDao implements IBookDao{ + + public List books = new ArrayList<>(); + + @Autowired + private AppConfig appConfig; + + @PostConstruct + public void init() { + books = CsvParser.readFile(appConfig.getFile(), appConfig.getSeparator(), appConfig.getListSeparator()); + } + + @Override + public Book findById(long id) { + Optional result = books + .stream() + .filter(f -> f.getId() == id) + .findFirst(); + return result.orElse(null); + } + + @Override + public Collection findAll() { + return books; + } + + @Override + public void insert(Book book) { + books.add(book); + } + + @Override + public void edit(Book book) { + int index = getIndexOf(book.getId()); + if (index != -1) + books.set(index, book); + } + + @Override + public void delete(long id) { + int index = getIndexOf(id); + if (index != -1) + books.remove(index); + } + + private int getIndexOf(long id) { + boolean find = false; + int index = 0; + + while (!find && index < books.size()) { + if (books.get(index).getId() == id) + find = true; + else + index++; + } + + return (find) ? index : -1; + } +} diff --git a/src/main/java/com/jesuspinar/booksearch/dao/IBookDao.java b/src/main/java/com/jesuspinar/booksearch/dao/IBookDao.java new file mode 100644 index 0000000..f3cc818 --- /dev/null +++ b/src/main/java/com/jesuspinar/booksearch/dao/IBookDao.java @@ -0,0 +1,15 @@ +package com.jesuspinar.booksearch.dao; + +import com.jesuspinar.booksearch.model.Book; + +import java.util.Collection; + +public interface IBookDao { + + public Book findById(long id); + public Collection findAll(); + public void insert(Book book); + public void edit(Book book); + public void delete(long id); + +} diff --git a/src/main/java/com/jesuspinar/booksearch/model/Book.java b/src/main/java/com/jesuspinar/booksearch/model/Book.java index fa18664..28be50c 100644 --- a/src/main/java/com/jesuspinar/booksearch/model/Book.java +++ b/src/main/java/com/jesuspinar/booksearch/model/Book.java @@ -15,7 +15,7 @@ public class Book { private String publisher; public Book( String title, List authors, String genre,String height, String publisher) { - this.id = AUTO_ID++; + this.id = ++AUTO_ID; this.title = title; this.authors = authors; this.genre = genre;