From 3eb50a1e147c28acd448e50c97e269e3a7a842e9 Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Mon, 14 Nov 2022 09:45:32 -0600 Subject: [PATCH 01/17] pom.xml --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 22a2e9c039..1572a65b1e 100644 --- a/pom.xml +++ b/pom.xml @@ -27,12 +27,12 @@ org.mindrot jbcrypt - 0.3m + 0.4 javax.servlet javax.servlet-api - 3.0.1 + 4.0.1 jstl @@ -42,7 +42,7 @@ mysql mysql-connector-java - 6.0.5 + 8.0.30 From 7901d27ba346ed58777fe30558dfd0199f062342 Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Mon, 14 Nov 2022 11:28:57 -0600 Subject: [PATCH 02/17] registration redirect --- .../adlister/controllers/RegisterServlet.java | 17 +++++++++++++++-- .../webapp/WEB-INF/partials/navbar-profile.jsp | 13 +++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/main/webapp/WEB-INF/partials/navbar-profile.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index e1e997c17a..5e1d9441f5 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -33,9 +33,22 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) return; } + + // create and save a new user User user = new User(username, email, password); - DaoFactory.getUsersDao().insert(user); - response.sendRedirect("/login"); + + User user1 = DaoFactory.getUsersDao().findByUsername(user.getUsername()); + + if(user1.getUsername().equals(user.getUsername())) + { + response.sendRedirect("/register"); + } + else + { + DaoFactory.getUsersDao().insert(user); + response.sendRedirect("/login"); + } + } } diff --git a/src/main/webapp/WEB-INF/partials/navbar-profile.jsp b/src/main/webapp/WEB-INF/partials/navbar-profile.jsp new file mode 100644 index 0000000000..5864ec9051 --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-profile.jsp @@ -0,0 +1,13 @@ + From 5e7d36edd0a073f98e368eaf6621f186733a3d9c Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Mon, 14 Nov 2022 12:01:47 -0600 Subject: [PATCH 03/17] profile ad displays --- .../codeup/adlister/controllers/RegisterServlet.java | 1 + src/main/java/com/codeup/adlister/dao/Ads.java | 2 ++ .../java/com/codeup/adlister/dao/MySQLAdsDao.java | 12 ++++++++++++ src/main/java/com/codeup/adlister/models/Ad.java | 1 + src/main/webapp/WEB-INF/partials/navbar.jsp | 1 + src/main/webapp/WEB-INF/profile.jsp | 2 +- 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index 5e1d9441f5..c587f07906 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -43,6 +43,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) if(user1.getUsername().equals(user.getUsername())) { response.sendRedirect("/register"); + } else { diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 79dc59f484..6e8391b02e 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -1,6 +1,7 @@ package com.codeup.adlister.dao; import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; import java.util.List; @@ -9,4 +10,5 @@ public interface Ads { List all(); // insert a new ad and return the new ad's id Long insert(Ad ad); + Ads findByUserID(long userID); } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index d58c45f985..de0fe42c5c 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -71,4 +71,16 @@ private List createAdsFromResults(ResultSet rs) throws SQLException { } return ads; } + + public Ads findByUserID(long user_id) + { + String query = "SELECT * FROM ads WHERE user_id = ? LIMIT 1"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, user_id); + return (Ads) extractAd(stmt.executeQuery()); + } catch (SQLException e) { + throw new RuntimeException("Error finding ads by user_id", e); + } + } } diff --git a/src/main/java/com/codeup/adlister/models/Ad.java b/src/main/java/com/codeup/adlister/models/Ad.java index 9e9e02d87e..39f75b1dbd 100644 --- a/src/main/java/com/codeup/adlister/models/Ad.java +++ b/src/main/java/com/codeup/adlister/models/Ad.java @@ -50,4 +50,5 @@ public String getDescription() { public void setDescription(String description) { this.description = description; } + } diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 8e1f98f662..0c6b5b762d 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -5,6 +5,7 @@ Adlister diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 05e3fa7a91..b624069a7d 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -6,7 +6,7 @@ - +

Welcome, ${sessionScope.user.username}!

From ff9c38ce933c4896c54b3b837396d25ff23d38db Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Mon, 14 Nov 2022 12:29:16 -0600 Subject: [PATCH 04/17] user ads --- .../controllers/ViewProfileServlet.java | 10 ++++++++++ .../com/codeup/adlister/dao/ListAdsDao.java | 17 +++++++++++++++++ src/main/webapp/WEB-INF/profile.jsp | 7 +++++++ 3 files changed, 34 insertions(+) diff --git a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java index e1b8941067..5b9efc0148 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java @@ -1,5 +1,8 @@ package com.codeup.adlister.controllers; +import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.models.User; + import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -14,6 +17,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t response.sendRedirect("/login"); return; } + + User user = (User) request.getSession().getAttributeNames(); + + request.setAttribute("ads", DaoFactory.getAdsDao().findByUserID(user.getId())); + request.getRequestDispatcher("/WEB-INF/profile.jsp").forward(request, response); + + } } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 8d3baaa369..f5666b77c8 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -27,6 +27,23 @@ public Long insert(Ad ad) { return ad.getId(); } + public Ads findByUserID(long userID){ + List newAds = new ArrayList<>(); + newAds.add((Ad) DaoFactory.getAdsDao().all()); + + List returnAds = new ArrayList<>(); + + for(Ad ad : newAds) + { + if(userID == ad.getUserId()) + { + returnAds.add(ad); + } + } + + return (Ads) returnAds; + } + private List generateAds() { List ads = new ArrayList<>(); ads.add(new Ad( diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index b624069a7d..ebe4afc3e0 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -12,5 +12,12 @@

Welcome, ${sessionScope.user.username}!

+ +
+

${ad.title}

+

${ad.description}

+
+
+ From f501b315b2b3dca013ee370705ca0553f7bfa75e Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Mon, 14 Nov 2022 14:32:59 -0600 Subject: [PATCH 05/17] unique usernames --- .../adlister/controllers/RegisterServlet.java | 15 ++++++++++----- .../adlister/controllers/ViewProfileServlet.java | 6 +++--- src/main/webapp/WEB-INF/partials/navbar-ads.jsp | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/main/webapp/WEB-INF/partials/navbar-ads.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index c587f07906..4948c23435 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -37,15 +37,20 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // create and save a new user User user = new User(username, email, password); + try { - User user1 = DaoFactory.getUsersDao().findByUsername(user.getUsername()); + User user1 = DaoFactory.getUsersDao().findByUsername(user.getUsername()); - if(user1.getUsername().equals(user.getUsername())) - { - response.sendRedirect("/register"); +// System.out.println(DaoFactory.getUsersDao().findByUsername()); +// System.out.println(user1.getUsername()); + + if (user1.getUsername().equals(user.getUsername())){ + response.sendRedirect("/register"); + + } } - else + catch(NullPointerException e) { DaoFactory.getUsersDao().insert(user); response.sendRedirect("/login"); diff --git a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java index 5b9efc0148..a97e9c4345 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java @@ -18,9 +18,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t return; } - User user = (User) request.getSession().getAttributeNames(); - - request.setAttribute("ads", DaoFactory.getAdsDao().findByUserID(user.getId())); +// User user = (User) request.getSession().getAttributeNames(); +// +// request.setAttribute("ads", DaoFactory.getAdsDao().findByUserID(user.getId())); request.getRequestDispatcher("/WEB-INF/profile.jsp").forward(request, response); diff --git a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp new file mode 100644 index 0000000000..eec2fede63 --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp @@ -0,0 +1,15 @@ + From d5a21118af4b12632ff503a108075ab9346287b7 Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Mon, 14 Nov 2022 14:49:12 -0600 Subject: [PATCH 06/17] navbars --- src/main/webapp/WEB-INF/ads/index.jsp | 2 +- src/main/webapp/WEB-INF/partials/navbar-ads.jsp | 5 +---- src/main/webapp/WEB-INF/partials/navbar-profile.jsp | 2 +- src/main/webapp/WEB-INF/partials/navbar-register.jsp | 10 ++++++++++ src/main/webapp/WEB-INF/register.jsp | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 src/main/webapp/WEB-INF/partials/navbar-register.jsp diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 6f4371f0bb..02da0b6760 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -7,7 +7,7 @@
- +

Here Are all the ads!

diff --git a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp index eec2fede63..8741374801 100644 --- a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp @@ -5,10 +5,7 @@ Adlister
diff --git a/src/main/webapp/WEB-INF/partials/navbar-profile.jsp b/src/main/webapp/WEB-INF/partials/navbar-profile.jsp index 5864ec9051..68c0a489e2 100644 --- a/src/main/webapp/WEB-INF/partials/navbar-profile.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar-profile.jsp @@ -5,7 +5,7 @@ Adlister diff --git a/src/main/webapp/WEB-INF/partials/navbar-register.jsp b/src/main/webapp/WEB-INF/partials/navbar-register.jsp new file mode 100644 index 0000000000..400be1bcc1 --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-register.jsp @@ -0,0 +1,10 @@ + + diff --git a/src/main/webapp/WEB-INF/register.jsp b/src/main/webapp/WEB-INF/register.jsp index 4b64e10a43..a05f6d6f93 100644 --- a/src/main/webapp/WEB-INF/register.jsp +++ b/src/main/webapp/WEB-INF/register.jsp @@ -6,7 +6,7 @@
- +

Please fill in your information.

From 66592fd55b1df060a8b95df9c3f4d05ccde5685d Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Mon, 14 Nov 2022 16:23:50 -0600 Subject: [PATCH 07/17] navbars --- src/main/webapp/WEB-INF/ads/create.jsp | 2 ++ src/main/webapp/WEB-INF/partials/navbar-ads.jsp | 1 + src/main/webapp/WEB-INF/partials/navbar-create.jsp | 10 ++++++++++ src/main/webapp/WEB-INF/partials/navbar-register.jsp | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/main/webapp/WEB-INF/partials/navbar-create.jsp diff --git a/src/main/webapp/WEB-INF/ads/create.jsp b/src/main/webapp/WEB-INF/ads/create.jsp index f6332692f7..467c1f0f17 100644 --- a/src/main/webapp/WEB-INF/ads/create.jsp +++ b/src/main/webapp/WEB-INF/ads/create.jsp @@ -6,6 +6,8 @@ + +

Create a new Ad

diff --git a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp index 8741374801..6f1e43abe2 100644 --- a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp @@ -6,6 +6,7 @@
diff --git a/src/main/webapp/WEB-INF/partials/navbar-create.jsp b/src/main/webapp/WEB-INF/partials/navbar-create.jsp new file mode 100644 index 0000000000..3ff6d2514a --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-create.jsp @@ -0,0 +1,10 @@ + + diff --git a/src/main/webapp/WEB-INF/partials/navbar-register.jsp b/src/main/webapp/WEB-INF/partials/navbar-register.jsp index 400be1bcc1..b1373677e1 100644 --- a/src/main/webapp/WEB-INF/partials/navbar-register.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar-register.jsp @@ -2,7 +2,7 @@ From db52fdd8c0c162480b1a7a46b9df7e9ba11bd95b Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Tue, 15 Nov 2022 09:26:38 -0600 Subject: [PATCH 08/17] next pull --- .../adlister/controllers/CreateAdServlet.java | 14 +++++++++++++- .../codeup/adlister/controllers/LoginServlet.java | 3 ++- src/main/webapp/WEB-INF/login.jsp | 2 +- src/main/webapp/WEB-INF/partials/navbar-ads.jsp | 2 +- src/main/webapp/WEB-INF/partials/navbar-create.jsp | 1 + src/main/webapp/WEB-INF/partials/navbar-login.jsp | 13 +++++++++++++ src/main/webapp/WEB-INF/partials/navbar.jsp | 1 - 7 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 src/main/webapp/WEB-INF/partials/navbar-login.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java index 38775bc6f7..add19d8d56 100644 --- a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java @@ -22,14 +22,26 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t .forward(request, response); } - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, IllegalStateException { User user = (User) request.getSession().getAttribute("user"); Ad ad = new Ad( user.getId(), request.getParameter("title"), request.getParameter("description") ); + + String title = request.getParameter("title"); + String description = request.getParameter("description"); + + boolean inputHasErrors = title.isEmpty() || description.isEmpty(); + + if (inputHasErrors) { + response.sendRedirect("/ads/create"); + return; + } DaoFactory.getAdsDao().insert(ad); response.sendRedirect("/ads"); } } + + diff --git a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java index e5c52723a2..1636e4bda2 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -32,8 +32,9 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) } boolean validAttempt = Password.check(password, user.getPassword()); + boolean validUser = user.getUsername().equals(username); - if (validAttempt) { + if (validAttempt && validUser) { request.getSession().setAttribute("user", user); response.sendRedirect("/profile"); } else { diff --git a/src/main/webapp/WEB-INF/login.jsp b/src/main/webapp/WEB-INF/login.jsp index 83ce2d0a1f..9ffb4bc069 100644 --- a/src/main/webapp/WEB-INF/login.jsp +++ b/src/main/webapp/WEB-INF/login.jsp @@ -6,7 +6,7 @@
- +

Please Log In

diff --git a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp index 6f1e43abe2..507645e46c 100644 --- a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp @@ -6,7 +6,7 @@
diff --git a/src/main/webapp/WEB-INF/partials/navbar-create.jsp b/src/main/webapp/WEB-INF/partials/navbar-create.jsp index 3ff6d2514a..40adda593b 100644 --- a/src/main/webapp/WEB-INF/partials/navbar-create.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar-create.jsp @@ -4,6 +4,7 @@ + diff --git a/src/main/webapp/WEB-INF/partials/navbar-login.jsp b/src/main/webapp/WEB-INF/partials/navbar-login.jsp new file mode 100644 index 0000000000..77dfc55d4d --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-login.jsp @@ -0,0 +1,13 @@ + + diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 0c6b5b762d..f668a02045 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -7,7 +7,6 @@ From 6ecaa6c14c4eeb0ce427c9ad92191f905497c7a1 Mon Sep 17 00:00:00 2001 From: Ramaj Johnson Date: Tue, 15 Nov 2022 12:42:24 -0600 Subject: [PATCH 09/17] finally fixed --- .../adlister/controllers/AdsIndexServlet.java | 10 +++ .../controllers/AdsSearchServlet.java | 24 +++++++ .../java/com/codeup/adlister/dao/Ads.java | 3 +- .../com/codeup/adlister/dao/ListAdsDao.java | 31 ++++++++- .../com/codeup/adlister/dao/MySQLAdsDao.java | 63 +++++++++++++------ .../java/com/codeup/adlister/models/Ad.java | 2 + .../webapp/WEB-INF/partials/navbar-ads.jsp | 5 ++ 7 files changed, 117 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/codeup/adlister/controllers/AdsSearchServlet.java diff --git a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java index 1763081228..afe8e02eda 100644 --- a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java @@ -1,6 +1,8 @@ package com.codeup.adlister.controllers; import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; @@ -8,6 +10,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.List; @WebServlet(name = "controllers.AdsIndexServlet", urlPatterns = "/ads") public class AdsIndexServlet extends HttpServlet { @@ -15,4 +18,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t request.setAttribute("ads", DaoFactory.getAdsDao().all()); request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response); } + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String searchQuery = req.getParameter("search"); + System.out.println(searchQuery); + Ad search = (Ad) DaoFactory.getAdsDao().findByTitle(searchQuery); + resp.sendRedirect("/"); + } } diff --git a/src/main/java/com/codeup/adlister/controllers/AdsSearchServlet.java b/src/main/java/com/codeup/adlister/controllers/AdsSearchServlet.java new file mode 100644 index 0000000000..922a5d7752 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/AdsSearchServlet.java @@ -0,0 +1,24 @@ +//package com.codeup.adlister.controllers; +// +//import com.codeup.adlister.dao.DaoFactory; +//import com.codeup.adlister.models.Ad; +//import com.codeup.adlister.models.User; +// +//import javax.servlet.ServletException; +//import javax.servlet.annotation.WebServlet; +//import javax.servlet.http.HttpServlet; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.IOException; +// +//@WebServlet(name = "controllers.AdsIndexServlet", urlPatterns = "/ads") +//public class AdsSearchServlet extends HttpServlet { +// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { +// request.setAttribute("ads", DaoFactory.getAdsDao().all()); +// request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response); +// +// String searchQuery = request.getParameter("search"); +// System.out.println(searchQuery); +// Ad search = (Ad) DaoFactory.getAdsDao().findByTitle(searchQuery); +// } +//} diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 6e8391b02e..04e24d8136 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -10,5 +10,6 @@ public interface Ads { List all(); // insert a new ad and return the new ad's id Long insert(Ad ad); - Ads findByUserID(long userID); + Ad findByUserID(long userID); + Ad findByTitle(String search); } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index f5666b77c8..079a12bb0b 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -2,11 +2,16 @@ import com.codeup.adlister.models.Ad; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class ListAdsDao implements Ads { private List ads; + private Connection connection = null; public List all() { if (ads == null) { @@ -27,7 +32,7 @@ public Long insert(Ad ad) { return ad.getId(); } - public Ads findByUserID(long userID){ + public Ad findByUserID(long userID){ List newAds = new ArrayList<>(); newAds.add((Ad) DaoFactory.getAdsDao().all()); @@ -41,7 +46,7 @@ public Ads findByUserID(long userID){ } } - return (Ads) returnAds; + return (Ad) returnAds; } private List generateAds() { @@ -72,4 +77,26 @@ private List generateAds() { )); return ads; } + + private Ad extractAd(ResultSet rs) throws SQLException { + return new Ad( + rs.getLong("id"), + rs.getLong("user_id"), + rs.getString("title"), + rs.getString("description") + ); + } + @Override + public Ad findByTitle(String search) + { + String query = "SELECT * FROM ads WHERE title LIKE ? "; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, search); + return (Ad) extractAd(stmt.executeQuery()); + } catch (SQLException e) { + throw new RuntimeException("Error finding ads by search", e); + } + } + } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index de0fe42c5c..e98a5c8e57 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -55,32 +55,59 @@ public Long insert(Ad ad) { } } - private Ad extractAd(ResultSet rs) throws SQLException { - return new Ad( - rs.getLong("id"), - rs.getLong("user_id"), - rs.getString("title"), - rs.getString("description") - ); + public Ad findByUserID(long user_id) + { + PreparedStatement stmt = null; + try { + stmt = connection.prepareStatement("SELECT * FROM ads WHERE user_id = ? LIMIT 1"); + stmt.setLong(1, user_id); + return (Ad) extractAd(stmt.executeQuery()); + } catch (SQLException e) { + throw new RuntimeException("Error finding ads by user_id", e); + } + } + @Override + public Ad findByTitle(String search) + { + String query = "SELECT * FROM ads WHERE title = ? LIMIT 1"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, search); + ResultSet rs = stmt.executeQuery(); + rs.next(); + System.out.println("Below is our search results"); + return new Ad( + rs.getLong("id"), + rs.getLong("user_id"), + rs.getString("title"), + rs.getString("description") + ); + } catch (SQLException e) { + throw new RuntimeException("Error finding ads by search", e); + } } private List createAdsFromResults(ResultSet rs) throws SQLException { List ads = new ArrayList<>(); while (rs.next()) { + System.out.println("next result set"); ads.add(extractAd(rs)); } return ads; } - - public Ads findByUserID(long user_id) - { - String query = "SELECT * FROM ads WHERE user_id = ? LIMIT 1"; - try { - PreparedStatement stmt = connection.prepareStatement(query); - stmt.setLong(1, user_id); - return (Ads) extractAd(stmt.executeQuery()); - } catch (SQLException e) { - throw new RuntimeException("Error finding ads by user_id", e); - } + private Ad extractAd(ResultSet rs) throws SQLException { +// if (! rs.next()) { +// return null; +// } + System.out.println("Current result set " + rs); + System.out.println("result set id: " + rs.getLong("id")); + System.out.println("result set title: " + rs.getString("title")); + return new Ad( + rs.getLong("id"), + rs.getLong("user_id"), + rs.getString("title"), + rs.getString("description") + ); +// } } } diff --git a/src/main/java/com/codeup/adlister/models/Ad.java b/src/main/java/com/codeup/adlister/models/Ad.java index 39f75b1dbd..8f744148b8 100644 --- a/src/main/java/com/codeup/adlister/models/Ad.java +++ b/src/main/java/com/codeup/adlister/models/Ad.java @@ -6,6 +6,8 @@ public class Ad { private String title; private String description; + public Ad(){}; + public Ad(long id, long userId, String title, String description) { this.id = id; this.userId = userId; diff --git a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp index 507645e46c..1796bb3a10 100644 --- a/src/main/webapp/WEB-INF/partials/navbar-ads.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar-ads.jsp @@ -4,6 +4,11 @@ + +
+ +
+