diff --git a/enterprise-patterns/front-controller-pattern/pom.xml b/enterprise-patterns/front-controller-pattern/pom.xml index dbcd4f1b1d..5f9152ad42 100644 --- a/enterprise-patterns/front-controller-pattern/pom.xml +++ b/enterprise-patterns/front-controller-pattern/pom.xml @@ -17,7 +17,7 @@ javax.servlet javax.servlet-api - 3.1.0 + 4.0.0-b01 provided diff --git a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java index 4d9e5f7b79..0c5bd64bbc 100644 --- a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java +++ b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java @@ -1,7 +1,7 @@ package com.baeldung.enterprise.patterns.front.controller.commands; import com.baeldung.enterprise.patterns.front.controller.data.Book; -import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; +import com.baeldung.enterprise.patterns.front.controller.data.BookshelfImpl; import javax.servlet.ServletException; import java.io.IOException; @@ -9,13 +9,12 @@ import java.io.IOException; public class SearchCommand extends FrontCommand { @Override public void process() throws ServletException, IOException { - Book book = Bookshelf.getInstance() + Book book = new BookshelfImpl().getInstance() .findByTitle(request.getParameter("title")); if (book != null) { request.setAttribute("book", book); forward("book-found"); } else { - request.setAttribute("books", Bookshelf.getInstance().getBooks()); forward("book-notfound"); } } diff --git a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java index 634e05c3a0..abadcc0d76 100644 --- a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java +++ b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java @@ -1,40 +1,15 @@ package com.baeldung.enterprise.patterns.front.controller.data; -public class Book { - private String author; - private String title; - private Double price; +public interface Book { + String getAuthor(); - public Book() { - } + void setAuthor(String author); - public Book(String author, String title, Double price) { - this.author = author; - this.title = title; - this.price = price; - } + String getTitle(); - public String getAuthor() { - return author; - } + void setTitle(String title); - public void setAuthor(String author) { - this.author = author; - } + Double getPrice(); - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public Double getPrice() { - return price; - } - - public void setPrice(Double price) { - this.price = price; - } + void setPrice(Double price); } diff --git a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java new file mode 100644 index 0000000000..b270bc7985 --- /dev/null +++ b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java @@ -0,0 +1,46 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +public class BookImpl implements Book { + private String author; + private String title; + private Double price; + + public BookImpl() { + } + + public BookImpl(String author, String title, Double price) { + this.author = author; + this.title = title; + this.price = price; + } + + @Override + public String getAuthor() { + return author; + } + + @Override + public void setAuthor(String author) { + this.author = author; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public void setTitle(String title) { + this.title = title; + } + + @Override + public Double getPrice() { + return price; + } + + @Override + public void setPrice(Double price) { + this.price = price; + } +} diff --git a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java index ad9758bf76..1e30452d95 100644 --- a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java +++ b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java @@ -1,32 +1,15 @@ package com.baeldung.enterprise.patterns.front.controller.data; -import java.util.ArrayList; -import java.util.List; +public interface Bookshelf { -public class Bookshelf { - private static Bookshelf INSTANCE = new Bookshelf(); - private List books = new ArrayList<>(); - - public static Bookshelf getInstance() { - if (INSTANCE.books.size() == 0) { - INSTANCE.init(); - } - return INSTANCE; + default void init() { + add(new BookImpl("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); + add(new BookImpl("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); } - private void init() { - books.add(new Book("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); - books.add(new Book("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); - } + Bookshelf getInstance(); - public Book findByTitle(String title) { - return books.stream() - .filter(book -> book.getTitle().toLowerCase().contains(title.toLowerCase())) - .findFirst() - .orElse(null); - } + boolean add(E book); - public List getBooks() { - return books; - } + Book findByTitle(String title); } diff --git a/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java new file mode 100644 index 0000000000..3862418857 --- /dev/null +++ b/enterprise-patterns/front-controller-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java @@ -0,0 +1,24 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +import java.util.ArrayList; + +public class BookshelfImpl extends ArrayList implements Bookshelf { + private static Bookshelf INSTANCE; + + @Override + public Bookshelf getInstance() { + if (INSTANCE == null) { + INSTANCE = new BookshelfImpl(); + INSTANCE.init(); + } + return INSTANCE; + } + + @Override + public Book findByTitle(String title) { + return this.stream() + .filter(book -> book.getTitle().toLowerCase().contains(title.toLowerCase())) + .findFirst() + .orElse(null); + } +}