From 86c5e61589469bd3bedf6aa0aacc74c046f1415f Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Mon, 14 Nov 2022 09:40:40 -0600 Subject: [PATCH 01/27] setup --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 22a2e9c039..392a549420 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.31 From b159eb968b8cb130c011fa88f7a2d2d1d8857613 Mon Sep 17 00:00:00 2001 From: Nicholas Barrera Date: Mon, 14 Nov 2022 10:07:16 -0600 Subject: [PATCH 02/27] create config class --- src/main/java/com/codeup/adlister/dao/DaoFactory.java | 2 ++ src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java | 1 + src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java | 1 + 3 files changed, 4 insertions(+) diff --git a/src/main/java/com/codeup/adlister/dao/DaoFactory.java b/src/main/java/com/codeup/adlister/dao/DaoFactory.java index e002140f85..3d27c2f664 100644 --- a/src/main/java/com/codeup/adlister/dao/DaoFactory.java +++ b/src/main/java/com/codeup/adlister/dao/DaoFactory.java @@ -1,5 +1,7 @@ package com.codeup.adlister.dao; +import com.codeup.adlister.Config; + public class DaoFactory { private static Ads adsDao; private static Users usersDao; diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index d58c45f985..9bdab8cbc9 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -1,5 +1,6 @@ package com.codeup.adlister.dao; +import com.codeup.adlister.Config; import com.codeup.adlister.models.Ad; import com.mysql.cj.jdbc.Driver; diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 4e69e57044..271aefec21 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -1,5 +1,6 @@ package com.codeup.adlister.dao; +import com.codeup.adlister.Config; import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; From 702c36bf6925730ea3e02c7c95fecdc8a308473d Mon Sep 17 00:00:00 2001 From: Cody Palmer Date: Mon, 14 Nov 2022 13:58:51 -0600 Subject: [PATCH 03/27] Updates to NavBar layout and locations --- .../adlister/controllers/LoginServlet.java | 6 ++++-- .../adlister/controllers/RegisterServlet.java | 4 ++++ .../com/codeup/adlister/dao/DaoFactory.java | 2 -- .../com/codeup/adlister/dao/MySQLAdsDao.java | 4 ---- .../com/codeup/adlister/dao/MySQLUsersDao.java | 3 ++- src/main/webapp/WEB-INF/ads/create.jsp | 1 + src/main/webapp/WEB-INF/ads/index.jsp | 3 +-- src/main/webapp/WEB-INF/partials/navbar.jsp | 2 +- .../webapp/WEB-INF/partials/navbarLoggedIn.jsp | 17 +++++++++++++++++ src/main/webapp/WEB-INF/profile.jsp | 2 +- 10 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java index e5c52723a2..f0c441a379 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -24,14 +24,16 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); +// System.out.println(username + " " + password); User user = DaoFactory.getUsersDao().findByUsername(username); - +// System.out.println(user); if (user == null) { response.sendRedirect("/login"); return; } - boolean validAttempt = Password.check(password, user.getPassword()); +// boolean validAttempt = Password.check(password, user.getPassword()); + boolean validAttempt = user.getUsername().equals(username) && user.getPassword().equals(password); if (validAttempt) { request.getSession().setAttribute("user", user); diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index e1e997c17a..4e9fdcb713 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -20,6 +20,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String username = request.getParameter("username"); String email = request.getParameter("email"); String password = request.getParameter("password"); + System.out.println(password); String passwordConfirmation = request.getParameter("confirm_password"); // validate input @@ -35,6 +36,9 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // create and save a new user User user = new User(username, email, password); + System.out.println(user.getPassword()); + System.out.println(user.getEmail()); + System.out.println(user.getUsername()); DaoFactory.getUsersDao().insert(user); response.sendRedirect("/login"); } diff --git a/src/main/java/com/codeup/adlister/dao/DaoFactory.java b/src/main/java/com/codeup/adlister/dao/DaoFactory.java index 3d27c2f664..e002140f85 100644 --- a/src/main/java/com/codeup/adlister/dao/DaoFactory.java +++ b/src/main/java/com/codeup/adlister/dao/DaoFactory.java @@ -1,7 +1,5 @@ package com.codeup.adlister.dao; -import com.codeup.adlister.Config; - public class DaoFactory { private static Ads adsDao; private static Users usersDao; diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 9bdab8cbc9..dfce6b622f 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -1,12 +1,8 @@ package com.codeup.adlister.dao; -import com.codeup.adlister.Config; import com.codeup.adlister.models.Ad; import com.mysql.cj.jdbc.Driver; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; import java.sql.*; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 271aefec21..3d3a93dcba 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -1,6 +1,5 @@ package com.codeup.adlister.dao; -import com.codeup.adlister.Config; import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; @@ -27,6 +26,8 @@ public MySQLUsersDao(Config config) { public User findByUsername(String username) { String query = "SELECT * FROM users WHERE username = ? LIMIT 1"; try { + System.out.println(username); + System.out.println(query); PreparedStatement stmt = connection.prepareStatement(query); stmt.setString(1, username); return extractUser(stmt.executeQuery()); diff --git a/src/main/webapp/WEB-INF/ads/create.jsp b/src/main/webapp/WEB-INF/ads/create.jsp index f6332692f7..d4413f722a 100644 --- a/src/main/webapp/WEB-INF/ads/create.jsp +++ b/src/main/webapp/WEB-INF/ads/create.jsp @@ -4,6 +4,7 @@ +
diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 6f4371f0bb..68753c8712 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!

@@ -19,6 +19,5 @@
- diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 8e1f98f662..1d5bb0d91e 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -6,7 +6,7 @@ diff --git a/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp new file mode 100644 index 0000000000..22514d5ae1 --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 05e3fa7a91..16eccba28e 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 590081b4af54ba05f0a1c7a1eaac6a5ba78109a9 Mon Sep 17 00:00:00 2001 From: Cody Palmer Date: Mon, 14 Nov 2022 14:20:33 -0600 Subject: [PATCH 04/27] Updates to nav bar changes based on login / logout --- .../java/com/codeup/adlister/controllers/LoginServlet.java | 7 ++----- src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java index f0c441a379..5b729a6280 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -3,7 +3,6 @@ import com.codeup.adlister.dao.DaoFactory; import com.codeup.adlister.models.User; import com.codeup.adlister.util.Password; - import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -24,16 +23,14 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); -// System.out.println(username + " " + password); User user = DaoFactory.getUsersDao().findByUsername(username); -// System.out.println(user); if (user == null) { response.sendRedirect("/login"); return; } -// boolean validAttempt = Password.check(password, user.getPassword()); - boolean validAttempt = user.getUsername().equals(username) && user.getPassword().equals(password); + boolean validAttempt = Password.check(password, user.getPassword()); + if (validAttempt) { request.getSession().setAttribute("user", user); diff --git a/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp index 22514d5ae1..3b284bbe43 100644 --- a/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp +++ b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp @@ -5,7 +5,7 @@ Adlister
From 65367d708f2ddcb15a2fa29c978feb4907dc7d62 Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Mon, 14 Nov 2022 15:30:02 -0600 Subject: [PATCH 05/27] created Update and Delete Ads & Users servlets --- .../controllers/DeleteAdsServlet.java | 35 +++++++++++ .../controllers/DeleteUserServlet.java | 41 ++++++++++++ .../adlister/controllers/UpdateAdServlet.java | 30 +++++++++ .../controllers/UpdateUserServlet.java | 41 ++++++++++++ .../java/com/codeup/adlister/dao/Ads.java | 4 ++ .../com/codeup/adlister/dao/ListAdsDao.java | 10 +++ .../com/codeup/adlister/dao/MySQLAdsDao.java | 50 +++++++++++++++ .../codeup/adlister/dao/MySQLUsersDao.java | 62 ++++++++++++++++--- .../java/com/codeup/adlister/dao/Users.java | 2 + 9 files changed, 267 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java create mode 100644 src/main/java/com/codeup/adlister/controllers/DeleteUserServlet.java create mode 100644 src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java create mode 100644 src/main/java/com/codeup/adlister/controllers/UpdateUserServlet.java diff --git a/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java new file mode 100644 index 0000000000..d7e65c9e04 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java @@ -0,0 +1,35 @@ +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.DeleteAdsServlet", urlPatterns = "/ads/deleteAds") +public class DeleteAdsServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (request.getSession().getAttribute("user") == null) { + response.sendRedirect("/login"); + return; + } + request.getRequestDispatcher("/WEB-INF/ads/create.jsp") + .forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + User user = (User) request.getSession().getAttribute("user"); + Ad ad = new Ad( + user.getId(), + request.getParameter("title"), + request.getParameter("description") + ); + DaoFactory.getAdsDao().insert(ad); + response.sendRedirect("/ads"); + } +} diff --git a/src/main/java/com/codeup/adlister/controllers/DeleteUserServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteUserServlet.java new file mode 100644 index 0000000000..6e488ded07 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/DeleteUserServlet.java @@ -0,0 +1,41 @@ +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; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "controllers.DeleteUserServlet", urlPatterns = "/deleteUser") +public class DeleteUserServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String password = request.getParameter("password"); + String passwordConfirmation = request.getParameter("confirm_password"); + + // validate input + boolean inputHasErrors = username.isEmpty() + || email.isEmpty() + || password.isEmpty() + || (! password.equals(passwordConfirmation)); + + if (inputHasErrors) { + response.sendRedirect("/register"); + return; + } + + // create and save a new user + User user = new User(username, email, password); + DaoFactory.getUsersDao().insert(user); + response.sendRedirect("/login"); + } +} diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java new file mode 100644 index 0000000000..afbb4fb0eb --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -0,0 +1,30 @@ +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.UpdateAdServlet", urlPatterns = "/ads/updateAd") +public class UpdateAdServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (request.getSession().getAttribute("user") == null) { + response.sendRedirect("/login"); + return; + } + request.getRequestDispatcher("/WEB-INF/ads/updateAd.jsp") + .forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + User user = (User) request.getSession().getAttribute("user"); + Ad ad = + + } +} diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateUserServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateUserServlet.java new file mode 100644 index 0000000000..b635f46539 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/UpdateUserServlet.java @@ -0,0 +1,41 @@ +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; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "controllers.UpdateUserServlet", urlPatterns = "/updateUser") +public class UpdateUserServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.getRequestDispatcher("/WEB-INF/updateUser.jsp").forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String password = request.getParameter("password"); + String passwordConfirmation = request.getParameter("confirm_password"); + + // validate input + boolean inputHasErrors = username.isEmpty() + || email.isEmpty() + || password.isEmpty() + || (! password.equals(passwordConfirmation)); + + if (inputHasErrors) { + response.sendRedirect("/register"); + return; + } + + // create and save a new user + User user = new User(username, email, password); + DaoFactory.getUsersDao().insert(user); + response.sendRedirect("/login"); + } +} diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 79dc59f484..d015955056 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -9,4 +9,8 @@ public interface Ads { List all(); // insert a new ad and return the new ad's id Long insert(Ad ad); + + void update(Ad ad); + + void delete(Ad ad); } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 8d3baaa369..9b602de403 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -27,6 +27,16 @@ public Long insert(Ad ad) { return ad.getId(); } + @Override + public void update(Ad ad) { + + } + + @Override + public void delete(Ad ad) { + + } + private List generateAds() { List ads = new ArrayList<>(); ads.add(new Ad( diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 9bdab8cbc9..43da075145 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -2,6 +2,7 @@ import com.codeup.adlister.Config; import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; import java.io.FileInputStream; @@ -56,6 +57,55 @@ public Long insert(Ad ad) { } } + @Override + public void update(Ad ad) { + + String query = "UPDATE ads" + + " SET" + + " title = ?," + + " description = ?" + + + "WHERE title = " +ad.getTitle()+ "AND user_id ="+ ad.getUserId()+""; + + + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, ad.getTitle()); + stmt.setString(2, ad.getDescription()); + stmt.executeUpdate(); + ResultSet rs = stmt.getGeneratedKeys(); + rs.next(); + + } catch (SQLException e) { + throw new RuntimeException("Error creating new user", e); + + } + + + + } + + @Override + public void delete(Ad ad) { + + String query = "DELETE ads" + + "WHERE title = " + ad.getTitle() + ""; + + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.executeUpdate(); + ResultSet rs = stmt.getGeneratedKeys(); + rs.next(); + + } catch (SQLException e) { + throw new RuntimeException("Error creating new user", e); + + } + + + + } + private Ad extractAd(ResultSet rs) throws SQLException { return new Ad( rs.getLong("id"), diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 271aefec21..7c4eca0663 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -13,9 +13,9 @@ public MySQLUsersDao(Config config) { try { DriverManager.registerDriver(new Driver()); connection = DriverManager.getConnection( - config.getUrl(), - config.getUser(), - config.getPassword() + config.getUrl(), + config.getUser(), + config.getPassword() ); } catch (SQLException e) { throw new RuntimeException("Error connecting to the database!", e); @@ -50,17 +50,63 @@ public Long insert(User user) { } catch (SQLException e) { throw new RuntimeException("Error creating new user", e); } + } + + @Override + public void update(User user) { + String query = "UPDATE users" + + " SET" + + " username = ?," + + " email = ?" + + " password = ?" + + "WHERE username = " + user.getUsername() + ""; + + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, user.getUsername()); + stmt.setString(2, user.getEmail()); + stmt.setString(3, user.getPassword()); + stmt.executeUpdate(); + ResultSet rs = stmt.getGeneratedKeys(); + rs.next(); + + } catch (SQLException e) { + throw new RuntimeException("Error creating new user", e); + + } + } + + + @Override + public void delete(User user) { + String query = "DELETE users" + + "WHERE username = " + user.getUsername() + ""; + + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.executeUpdate(); + ResultSet rs = stmt.getGeneratedKeys(); + rs.next(); + + } catch (SQLException e) { + throw new RuntimeException("Error creating new user", e); + + } + + + + } private User extractUser(ResultSet rs) throws SQLException { - if (! rs.next()) { + if (!rs.next()) { return null; } return new User( - rs.getLong("id"), - rs.getString("username"), - rs.getString("email"), - rs.getString("password") + rs.getLong("id"), + rs.getString("username"), + rs.getString("email"), + rs.getString("password") ); } diff --git a/src/main/java/com/codeup/adlister/dao/Users.java b/src/main/java/com/codeup/adlister/dao/Users.java index 62da74d20b..31f08c7c84 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -7,4 +7,6 @@ public interface Users { User findByUsername(String username); Long insert(User user); + void update(User user); + void delete(User user); } From cefd63232647c755e2836f50ee5f11f2e3f8370a Mon Sep 17 00:00:00 2001 From: Cody Palmer Date: Mon, 14 Nov 2022 16:54:33 -0600 Subject: [PATCH 06/27] Updates to nav bar changes based on login / logout --- src/main/webapp/WEB-INF/partials/head.jsp | 2 +- src/main/webapp/WEB-INF/partials/navbar.jsp | 2 ++ src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/WEB-INF/partials/head.jsp b/src/main/webapp/WEB-INF/partials/head.jsp index a33443d65c..1357a417dd 100644 --- a/src/main/webapp/WEB-INF/partials/head.jsp +++ b/src/main/webapp/WEB-INF/partials/head.jsp @@ -1,2 +1,2 @@ ${param.title} - + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 1d5bb0d91e..efea1326ab 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -8,6 +8,8 @@
  • Login
  • Register
  • +<%-- --%> +<%-- --%> diff --git a/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp index 3b284bbe43..22514d5ae1 100644 --- a/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp +++ b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp @@ -5,7 +5,7 @@ Adlister From 1e5128cdcf6a14e42e549abf62bf2d1fbfcf8908 Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Mon, 14 Nov 2022 19:46:58 -0600 Subject: [PATCH 07/27] method to search adds by title created --- .../controllers/DeleteAdsServlet.java | 15 ++-- .../adlister/controllers/UpdateAdServlet.java | 7 +- .../java/com/codeup/adlister/dao/Ads.java | 4 + .../com/codeup/adlister/dao/MySQLAdsDao.java | 75 +++++++++++++++++-- .../codeup/adlister/dao/MySQLUsersDao.java | 29 +++++-- 5 files changed, 108 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java index d7e65c9e04..69460ee1ba 100644 --- a/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java @@ -18,18 +18,19 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t response.sendRedirect("/login"); return; } - request.getRequestDispatcher("/WEB-INF/ads/create.jsp") + request.getRequestDispatcher("/WEB-INF/ads/deleteAd.jsp") .forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { User user = (User) request.getSession().getAttribute("user"); - Ad ad = new Ad( - user.getId(), - request.getParameter("title"), - request.getParameter("description") - ); - DaoFactory.getAdsDao().insert(ad); + long userId = user.getId(); + + String title = request.getParameter("title"); + Ad ad = DaoFactory.getAdsDao().findAd(userId,title); //FIND THE AD TO DELETE + DaoFactory.getAdsDao().delete(ad); // DELETE AD response.sendRedirect("/ads"); + } } + diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java index afbb4fb0eb..06eff5aa44 100644 --- a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -24,7 +24,12 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { User user = (User) request.getSession().getAttribute("user"); - Ad ad = + long userId = user.getId(); + + String title = request.getParameter("title"); + Ad ad = DaoFactory.getAdsDao().findAd(userId,title); //FIND THE AD TO UPDATE + DaoFactory.getAdsDao().update(ad); // UPDATE AD + response.sendRedirect("/ads"); } } diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index d015955056..dc67cd357c 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -13,4 +13,8 @@ public interface Ads { void update(Ad ad); void delete(Ad ad); + + Ad findAd(long userId, String title); + + List searchAD(String tittle); } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 43da075145..323a7fa2b2 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -40,6 +40,12 @@ public List all() { } } + + + + + + //****************************INSERT AD********************************* @Override public Long insert(Ad ad) { try { @@ -57,15 +63,19 @@ public Long insert(Ad ad) { } } + + + //************************UPDATE ADS******************************************** + @Override public void update(Ad ad) { - String query = "UPDATE ads" + - " SET" + - " title = ?," + - " description = ?" + + String query = "UPDATE ads " + + " SET " + + " title = ?, " + + " description = ? " + - "WHERE title = " +ad.getTitle()+ "AND user_id ="+ ad.getUserId()+""; + "WHERE title = " + ad.getTitle()+""; try { @@ -74,7 +84,7 @@ public void update(Ad ad) { stmt.setString(2, ad.getDescription()); stmt.executeUpdate(); ResultSet rs = stmt.getGeneratedKeys(); - rs.next(); + } catch (SQLException e) { throw new RuntimeException("Error creating new user", e); @@ -85,10 +95,16 @@ public void update(Ad ad) { } + + + + + //****************************DELETE ADS************************************************ + @Override public void delete(Ad ad) { - String query = "DELETE ads" + + String query = "DELETE ads " + "WHERE title = " + ad.getTitle() + ""; try { @@ -106,6 +122,51 @@ public void delete(Ad ad) { } + + + //******************************** FIND ADS **************************************************** + + + @Override + public Ad findAd(long userId, String title) { +String query = "SELECT * FROM ads WHERE title = ? AND user_id = ?"; + + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, title); + stmt.setLong(2, userId); + ResultSet rs = stmt.executeQuery(); + return extractAd(rs); + + + } catch (SQLException e) { + throw new RuntimeException("Error retrieving all ads.", e); + } + } + + + + +//****************************SEARCH AD BY TITLE********************************** + @Override + public List searchAD(String tittle) { + + PreparedStatement stmt = null; + try { + stmt = connection.prepareStatement("SELECT * FROM ads WHERE title =? "); + stmt.setString(1,tittle); + ResultSet rs = stmt.executeQuery(); + return createAdsFromResults(rs); + } catch (SQLException e) { + throw new RuntimeException("Error retrieving all ads.", e); + } + + } + + + + + private Ad extractAd(ResultSet rs) throws SQLException { return new Ad( rs.getLong("id"), diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 7c4eca0663..494462315c 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -23,6 +23,8 @@ public MySQLUsersDao(Config config) { } + +//**************************FIND BY USERNAME************************************** @Override public User findByUsername(String username) { String query = "SELECT * FROM users WHERE username = ? LIMIT 1"; @@ -35,6 +37,11 @@ public User findByUsername(String username) { } } + + + + + @Override public Long insert(User user) { String query = "INSERT INTO users(username, email, password) VALUES (?, ?, ?)"; @@ -52,12 +59,14 @@ public Long insert(User user) { } } + + //**********************UPDATE USER********************************* @Override public void update(User user) { - String query = "UPDATE users" + - " SET" + + String query = "UPDATE users " + + " SET " + " username = ?," + - " email = ?" + + " email = ? " + " password = ?" + "WHERE username = " + user.getUsername() + ""; @@ -77,16 +86,18 @@ public void update(User user) { } + + + + //*******************************DELETE USER********************************* @Override public void delete(User user) { - String query = "DELETE users" + + String query = "DELETE users " + "WHERE username = " + user.getUsername() + ""; try { PreparedStatement stmt = connection.prepareStatement(query); - stmt.executeUpdate(); - ResultSet rs = stmt.getGeneratedKeys(); - rs.next(); + stmt.executeUpdate(); } catch (SQLException e) { throw new RuntimeException("Error creating new user", e); @@ -98,6 +109,10 @@ public void delete(User user) { } + + + + private User extractUser(ResultSet rs) throws SQLException { if (!rs.next()) { return null; From 29d5a6192f32aa4d1852238ebc653de52039004f Mon Sep 17 00:00:00 2001 From: Nicholas Barrera Date: Tue, 15 Nov 2022 08:58:32 -0600 Subject: [PATCH 08/27] username verification --- adlister.sql | 24 ++++++++++++++ .../adlister/controllers/RegisterServlet.java | 31 ++++++++++++++++--- .../codeup/adlister/dao/MySQLUsersDao.java | 3 ++ .../java/com/codeup/adlister/dao/Users.java | 2 ++ .../java/com/codeup/adlister/models/User.java | 1 + src/main/webapp/WEB-INF/partials/home.jsp | 16 ++++++++++ src/main/webapp/WEB-INF/profile.jsp | 8 +++++ src/main/webapp/WEB-INF/register.jsp | 5 +++ 8 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 adlister.sql create mode 100644 src/main/webapp/WEB-INF/partials/home.jsp diff --git a/adlister.sql b/adlister.sql new file mode 100644 index 0000000000..0e0776beec --- /dev/null +++ b/adlister.sql @@ -0,0 +1,24 @@ +USE adlister_db; +DROP TABLE IF EXISTS ads; +DROP TABLE IF EXISTS users; +CREATE TABLE users ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + username VARCHAR(240) NOT NULL, + email VARCHAR(240) NOT NULL, + password VARCHAR(255) NOT NULL, + PRIMARY KEY (id) + +); +CREATE TABLE ads ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + user_id INT UNSIGNED NOT NULL, + title VARCHAR(240) NOT NULL, + description TEXT NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY (user_id) REFERENCES users(id) + ON DELETE CASCADE +); + +ALTER TABLE users + + ADD UNIQUE (username); \ No newline at end of file diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index e1e997c17a..dd2c480c59 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -16,7 +16,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); } - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String username = request.getParameter("username"); String email = request.getParameter("email"); String password = request.getParameter("password"); @@ -33,9 +33,30 @@ 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 userName = DaoFactory.getUsersDao().findByUsername(username); + + + boolean valid = false; + + if(userName != null && username.equals(userName.getUsername())) { + request.setAttribute("usernameExists", "This username already exists."); + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); + } else if (!password.equals(passwordConfirmation)) { + request.setAttribute("passwordError", "The passwords do not match!"); + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); + } else { + valid = true; + } + + + // create and save a new user + if(valid) { + User user = new User(username, email, password); + DaoFactory.getUsersDao().insert(user); + response.sendRedirect("/login"); + } + } + + } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 271aefec21..2b764a2164 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -16,6 +16,7 @@ public MySQLUsersDao(Config config) { config.getUrl(), config.getUser(), config.getPassword() + ); } catch (SQLException e) { throw new RuntimeException("Error connecting to the database!", e); @@ -35,6 +36,8 @@ public User findByUsername(String username) { } } + + @Override public Long insert(User user) { String query = "INSERT INTO users(username, email, password) VALUES (?, ?, ?)"; diff --git a/src/main/java/com/codeup/adlister/dao/Users.java b/src/main/java/com/codeup/adlister/dao/Users.java index 62da74d20b..7d229bec60 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -6,5 +6,7 @@ public interface Users { User findByUsername(String username); + + Long insert(User user); } diff --git a/src/main/java/com/codeup/adlister/models/User.java b/src/main/java/com/codeup/adlister/models/User.java index e43bc0dc81..52f3f8f68b 100644 --- a/src/main/java/com/codeup/adlister/models/User.java +++ b/src/main/java/com/codeup/adlister/models/User.java @@ -14,6 +14,7 @@ public User(String username, String email, String password) { this.username = username; this.email = email; setPassword(password); +// this.password = password; } public User(long id, String username, String email, String password) { diff --git a/src/main/webapp/WEB-INF/partials/home.jsp b/src/main/webapp/WEB-INF/partials/home.jsp new file mode 100644 index 0000000000..0fd5d0d5a6 --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/home.jsp @@ -0,0 +1,16 @@ +<%-- + Created by IntelliJ IDEA. + User: adriannabarrera + Date: 11/14/22 + Time: 1:24 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Title + + + + + diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 05e3fa7a91..423e6dfe59 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -1,9 +1,13 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + @@ -12,5 +16,9 @@

    Welcome, ${sessionScope.user.username}!

    +
    + +
    + diff --git a/src/main/webapp/WEB-INF/register.jsp b/src/main/webapp/WEB-INF/register.jsp index 4b64e10a43..93e2dde533 100644 --- a/src/main/webapp/WEB-INF/register.jsp +++ b/src/main/webapp/WEB-INF/register.jsp @@ -1,3 +1,4 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> @@ -14,10 +15,14 @@ +

    + +

    +
    From 297908ecbced781bfce1ad9be3d5e40ba5c939a9 Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Tue, 15 Nov 2022 09:35:15 -0600 Subject: [PATCH 09/27] cards --- .../com/codeup/adlister/dao/ListAdsDao.java | 10 ++++++++++ src/main/webapp/WEB-INF/ads/index.jsp | 17 ++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 9b602de403..81a84133db 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -37,6 +37,16 @@ public void delete(Ad ad) { } + @Override + public Ad findAd(long userId, String title) { + return null; + } + + @Override + public List searchAD(String tittle) { + return null; + } + private List generateAds() { List ads = new ArrayList<>(); ads.add(new Ad( diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 6f4371f0bb..7d1dcf3354 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -10,13 +10,20 @@
    -

    Here Are all the ads!

    +

    Here Are all the ads!

    -
    -

    ${ad.title}

    -

    ${ad.description}

    -
    + +
    +
    +
    ${ad.title}
    +

    ${ad.description}

    + Card link + Another link +
    +
    + +
    From b0624a60f0986a4f015a121496f8cdf5c2d3b90a Mon Sep 17 00:00:00 2001 From: Nicholas Barrera Date: Tue, 15 Nov 2022 09:54:55 -0600 Subject: [PATCH 10/27] update --- src/main/java/com/codeup/adlister/dao/DaoFactory.java | 2 ++ src/main/java/com/codeup/adlister/dao/ListAdsDao.java | 10 ++++++++++ src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java | 1 + .../java/com/codeup/adlister/dao/MySQLUsersDao.java | 1 + 4 files changed, 14 insertions(+) diff --git a/src/main/java/com/codeup/adlister/dao/DaoFactory.java b/src/main/java/com/codeup/adlister/dao/DaoFactory.java index e002140f85..3d27c2f664 100644 --- a/src/main/java/com/codeup/adlister/dao/DaoFactory.java +++ b/src/main/java/com/codeup/adlister/dao/DaoFactory.java @@ -1,5 +1,7 @@ package com.codeup.adlister.dao; +import com.codeup.adlister.Config; + public class DaoFactory { private static Ads adsDao; private static Users usersDao; diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 9b602de403..81a84133db 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -37,6 +37,16 @@ public void delete(Ad ad) { } + @Override + public Ad findAd(long userId, String title) { + return null; + } + + @Override + public List searchAD(String tittle) { + return null; + } + private List generateAds() { List ads = new ArrayList<>(); ads.add(new Ad( diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 29cec482ce..27486de03c 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -1,5 +1,6 @@ package com.codeup.adlister.dao; +import com.codeup.adlister.Config; import com.codeup.adlister.models.Ad; import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 710bebf889..f7428a261f 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -1,5 +1,6 @@ package com.codeup.adlister.dao; +import com.codeup.adlister.Config; import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; From 93fe07d3f9bf268c980412dce3b2e4d08281b557 Mon Sep 17 00:00:00 2001 From: Cody Palmer Date: Tue, 15 Nov 2022 10:56:55 -0600 Subject: [PATCH 11/27] Updates to search / nav bar --- .../adlister/controllers/RegisterServlet.java | 40 +++++++++----- src/main/webapp/WEB-INF/login.jsp | 2 +- src/main/webapp/WEB-INF/partials/head.jsp | 3 +- src/main/webapp/WEB-INF/partials/navbar.jsp | 31 ++++++----- .../WEB-INF/partials/navbarLoggedIn.jsp | 52 ++++++++++++++----- src/main/webapp/WEB-INF/register.jsp | 2 +- 6 files changed, 90 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index 4e9fdcb713..92e123c1ae 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -16,7 +16,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); } - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String username = request.getParameter("username"); String email = request.getParameter("email"); String password = request.getParameter("password"); @@ -25,21 +25,37 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // validate input boolean inputHasErrors = username.isEmpty() - || email.isEmpty() - || password.isEmpty() - || (! password.equals(passwordConfirmation)); + || email.isEmpty() + || password.isEmpty() + || (!password.equals(passwordConfirmation)); if (inputHasErrors) { response.sendRedirect("/register"); return; } - // create and save a new user - User user = new User(username, email, password); - System.out.println(user.getPassword()); - System.out.println(user.getEmail()); - System.out.println(user.getUsername()); - DaoFactory.getUsersDao().insert(user); - response.sendRedirect("/login"); + User userName = DaoFactory.getUsersDao().findByUsername(username); + + boolean valid = false; + + if (userName != null && username.equals(userName.getUsername())) { + request.setAttribute("usernameExists", "This username already exists."); + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); +// } else if (!password.equals(passwordConfirmation)) { +// request.setAttribute("passwordError", "The passwords do not match!"); +// request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); +// } else { +// valid = true; + } + +// create and save a new user +// if(valid) { + User user = new User(username, email, password); + DaoFactory.getUsersDao().insert(user); + response.sendRedirect("/login"); +// } + + } + } -} + diff --git a/src/main/webapp/WEB-INF/login.jsp b/src/main/webapp/WEB-INF/login.jsp index 83ce2d0a1f..bc19b2ea71 100644 --- a/src/main/webapp/WEB-INF/login.jsp +++ b/src/main/webapp/WEB-INF/login.jsp @@ -18,7 +18,7 @@
    - + diff --git a/src/main/webapp/WEB-INF/partials/head.jsp b/src/main/webapp/WEB-INF/partials/head.jsp index 1357a417dd..f49247e6a0 100644 --- a/src/main/webapp/WEB-INF/partials/head.jsp +++ b/src/main/webapp/WEB-INF/partials/head.jsp @@ -1,2 +1,3 @@ ${param.title} - \ No newline at end of file + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index efea1326ab..b2a341a4e3 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -1,15 +1,22 @@ - \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp index 22514d5ae1..38005ee8a3 100644 --- a/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp +++ b/src/main/webapp/WEB-INF/partials/navbarLoggedIn.jsp @@ -1,17 +1,43 @@ ---%> + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 0469fc6f70..01f6548a3b 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -10,15 +10,10 @@ - +

    Welcome, ${sessionScope.user.username}!

    - -
    - -
    - From 5349b1c8804765134f139da1a5339e6c83c01492 Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Tue, 15 Nov 2022 15:42:23 -0600 Subject: [PATCH 19/27] display ads posted by a particular user on their profile --- .../adlister/controllers/ViewProfileServlet.java | 11 +++++++++++ src/main/java/com/codeup/adlister/dao/Ads.java | 2 +- .../java/com/codeup/adlister/dao/ListAdsDao.java | 4 ++-- .../java/com/codeup/adlister/dao/MySQLAdsDao.java | 14 +++++++------- src/main/webapp/WEB-INF/updateProfile.jsp | 2 +- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java index e1b8941067..542d664d20 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java @@ -1,19 +1,30 @@ 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; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import java.io.IOException; @WebServlet(name = "controllers.ViewProfileServlet", urlPatterns = "/profile") public class ViewProfileServlet extends HttpServlet { + long userId; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + if (request.getSession().getAttribute("user") == null) { response.sendRedirect("/login"); return; } + HttpSession session = request.getSession(); + User user = session.setAttribute("user",user); + userId = user.getId(); + request.setAttribute("ads", DaoFactory.getAdsDao().findAd(userId)); request.getRequestDispatcher("/WEB-INF/profile.jsp").forward(request, response); } } diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 213b16e896..b0bbdcb501 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -14,7 +14,7 @@ public interface Ads { void delete(Ad ad); - Ad findAd(long userId, String title); + List findAd(long userId); List searchAD(String tittle); } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 7ea6320fc5..bee1db6f3a 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -38,8 +38,8 @@ public void delete(Ad ad) { } - @Override - public Ad findAd(long userId, String title) { + + public List findAd(long userId) { return null; } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 79efa56917..c125c1b0f2 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -121,19 +121,19 @@ public void delete(Ad ad) { - //******************************** FIND ADS **************************************************** + //******************************** FIND All ADS OWNED BY A User **************************************************** - @Override - public Ad findAd(long userId, String title) { -String query = "SELECT * FROM ads WHERE title = ? AND user_id = ?"; + public List findAd(long userId) { +String query = "SELECT * FROM ads WHERE user_id = ?"; try { PreparedStatement stmt = connection.prepareStatement(query); - stmt.setString(1, title); - stmt.setLong(2, userId); + + stmt.setLong(1, userId); ResultSet rs = stmt.executeQuery(); - return extractAd(rs); + return createAdsFromResults(rs); + } catch (SQLException e) { diff --git a/src/main/webapp/WEB-INF/updateProfile.jsp b/src/main/webapp/WEB-INF/updateProfile.jsp index 5b6f09a524..a5c018b560 100644 --- a/src/main/webapp/WEB-INF/updateProfile.jsp +++ b/src/main/webapp/WEB-INF/updateProfile.jsp @@ -10,7 +10,7 @@

    Please fill in your information.

    -
    +
    From bc8f2e89ca4297f7b67f5b8494d786f5fd56fd41 Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Tue, 15 Nov 2022 20:30:22 -0600 Subject: [PATCH 20/27] delete Ad functionality working --- .../controllers/DeleteAdsServlet.java | 25 ++++----- .../adlister/controllers/LoginServlet.java | 16 +++++- .../adlister/controllers/UpdateAdServlet.java | 8 +-- .../controllers/ViewProfileServlet.java | 11 ++-- .../java/com/codeup/adlister/dao/Ads.java | 3 ++ .../com/codeup/adlister/dao/ListAdsDao.java | 5 ++ .../com/codeup/adlister/dao/MySQLAdsDao.java | 36 ++++++++++--- src/main/webapp/WEB-INF/ads/index.jsp | 1 + src/main/webapp/WEB-INF/profile.jsp | 51 +++++++++++++++---- 9 files changed, 114 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java index 69460ee1ba..253df74ff4 100644 --- a/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java @@ -11,26 +11,19 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "controllers.DeleteAdsServlet", urlPatterns = "/ads/deleteAds") +@WebServlet(name = "controllers.DeleteAdsServlet", urlPatterns = "/deleteAd") public class DeleteAdsServlet extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - if (request.getSession().getAttribute("user") == null) { - response.sendRedirect("/login"); - return; - } - request.getRequestDispatcher("/WEB-INF/ads/deleteAd.jsp") - .forward(request, response); - } + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { - User user = (User) request.getSession().getAttribute("user"); - long userId = user.getId(); - String title = request.getParameter("title"); - Ad ad = DaoFactory.getAdsDao().findAd(userId,title); //FIND THE AD TO DELETE - DaoFactory.getAdsDao().delete(ad); // DELETE AD - response.sendRedirect("/ads"); + String title = (String) request.getParameter("title"); + System.out.println(title); + + Ad ad = DaoFactory.getAdsDao().ByTitle(title); //FIND THE AD TO DELETE + DaoFactory.getAdsDao().delete(ad); // DELETE 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 8de8da863c..def6f25419 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -3,11 +3,14 @@ import com.codeup.adlister.dao.DaoFactory; import com.codeup.adlister.models.User; import com.codeup.adlister.util.Password; +import com.mysql.cj.xdevapi.Session; + 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 javax.servlet.http.HttpSession; import java.io.IOException; @WebServlet(name = "controllers.LoginServlet", urlPatterns = "/login") @@ -19,11 +22,15 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t } request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); } +String scopeUserName; + long scopId; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); User user = DaoFactory.getUsersDao().findByUsername(username); + + if (user == null) { response.sendRedirect("/login"); return; @@ -31,8 +38,8 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) boolean validAttempt = Password.check(password, user.getPassword()); - if (validAttempt) { + request.getSession().setAttribute("user", user); response.sendRedirect("/profile"); @@ -40,5 +47,12 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) } else { response.sendRedirect("/login"); } + + scopId = user.getId(); + scopeUserName = user.getUsername(); + + HttpSession session = request.getSession(); + session.setAttribute("userName",scopeUserName); + session.setAttribute("userId",scopId); } } diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java index 14ce9d3130..c4b1b9d47e 100644 --- a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -11,25 +11,27 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "controllers.UpdateAdServlet", urlPatterns = "/ads/updateAd") +@WebServlet(name = "controllers.UpdateAdServlet", urlPatterns = "/updateAd") public class UpdateAdServlet extends HttpServlet { + String titleOld; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (request.getSession().getAttribute("user") == null) { response.sendRedirect("/login"); return; } + String titleOld = request.getParameter("title"); request.getRequestDispatcher("/WEB-INF/ads/updateAd.jsp") .forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { User user = (User) request.getSession().getAttribute("user"); - long userId = user.getId(); + String title = request.getParameter("title"); String description = request.getParameter("description"); - Ad ad = DaoFactory.getAdsDao().findAd(userId,title); //FIND THE AD TO UPDATE + Ad ad = DaoFactory.getAdsDao().ByTitle(titleOld); //FIND THE AD TO UPDATE DaoFactory.getAdsDao().update(ad,title,description); // UPDATE AD response.sendRedirect("/ads"); diff --git a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java index 542d664d20..d356b15456 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java @@ -14,16 +14,17 @@ @WebServlet(name = "controllers.ViewProfileServlet", urlPatterns = "/profile") public class ViewProfileServlet extends HttpServlet { long userId; + String username; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { +HttpSession session = request.getSession(); - - if (request.getSession().getAttribute("user") == null) { + if (session.getAttribute("user") == null) { response.sendRedirect("/login"); return; } - HttpSession session = request.getSession(); - User user = session.setAttribute("user",user); - userId = user.getId(); + + String username = (String) session.getAttribute("username"); + userId = (long) session.getAttribute("userId"); request.setAttribute("ads", DaoFactory.getAdsDao().findAd(userId)); request.getRequestDispatcher("/WEB-INF/profile.jsp").forward(request, response); } diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index b0bbdcb501..d81ed790b7 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -12,6 +12,9 @@ public interface Ads { void update(Ad ad,String title,String description); + + Ad ByTitle(String title); + void delete(Ad ad); List findAd(long userId); diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index bee1db6f3a..6f393f4736 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -32,6 +32,11 @@ public void update(Ad ad, String title, String description) { } + @Override + public Ad ByTitle(String title) { + return null; + } + @Override public void delete(Ad ad) { diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index c125c1b0f2..65e4500af7 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -31,6 +31,7 @@ public List all() { try { stmt = connection.prepareStatement("SELECT * FROM ads"); ResultSet rs = stmt.executeQuery(); + return createAdsFromResults(rs); } catch (SQLException e) { throw new RuntimeException("Error retrieving all ads.", e); @@ -94,6 +95,29 @@ public void update(Ad ad, String title,String description) { + //**********************Find ad by the ad id to delete**************************** + + public Ad ByTitle(String title) { + + String sql = "SELECT * FROM ads WHERE title LIKE ?"; + PreparedStatement stmt = null; + try { + stmt = connection.prepareStatement(sql); + stmt.setString(1,"%"+title+"%"); + ResultSet rs = stmt.executeQuery(); + List ad = createAdsFromResults(rs); + +return ad.get(0); + + + + } catch (SQLException e) { + throw new RuntimeException("Error retrieving all ads.", e); + } + } + + + //****************************DELETE ADS************************************************ @@ -101,17 +125,17 @@ public void update(Ad ad, String title,String description) { @Override public void delete(Ad ad) { - String query = "DELETE ads " + - "WHERE title = " + ad.getTitle() + ""; + String query = "DELETE FROM ads WHERE title = ? "; + PreparedStatement stmt = null; try { - PreparedStatement stmt = connection.prepareStatement(query); + stmt = connection.prepareStatement(query); + stmt.setString(1,ad.getTitle()); + stmt.executeUpdate(); - ResultSet rs = stmt.getGeneratedKeys(); - rs.next(); } catch (SQLException e) { - throw new RuntimeException("Error creating new user", e); + throw new RuntimeException("Error deleting ad", e); } diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index ab793c6442..bbfc6386e8 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -18,6 +18,7 @@
    ${ad.title}

    ${ad.description}

    + Card link Another link
    diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 0469fc6f70..fafa6298ab 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -1,24 +1,53 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - - + - - - - + + +
    +

    Welcome ${sessionScope.user.username}

    + + +

    Here Are all the ads!

    + + + +
    +
    +
    ${ad.title}
    +

    ${ad.description}

    + +
    +
    + + + + + + +
    + + +
    +
    + + -
    -

    Welcome, ${sessionScope.user.username}!

    -
    + +
    +
    +
    -
    +
    +
    -
    +
    +
    From 2e2a7379a0717fad44aca4e2def170be8a962698 Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Tue, 15 Nov 2022 23:13:28 -0600 Subject: [PATCH 21/27] update ad functional --- .../adlister/controllers/UpdateAdServlet.java | 10 +++---- .../com/codeup/adlister/dao/MySQLAdsDao.java | 8 +++-- src/main/webapp/WEB-INF/ads/updateAd.jsp | 29 +++++++++++++++++++ src/main/webapp/WEB-INF/profile.jsp | 2 +- 4 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 src/main/webapp/WEB-INF/ads/updateAd.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java index c4b1b9d47e..2d0213fc26 100644 --- a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -15,11 +15,9 @@ public class UpdateAdServlet extends HttpServlet { String titleOld; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - if (request.getSession().getAttribute("user") == null) { - response.sendRedirect("/login"); - return; - } - String titleOld = request.getParameter("title"); + + titleOld = request.getParameter("title"); + request.getRequestDispatcher("/WEB-INF/ads/updateAd.jsp") .forward(request, response); } @@ -30,7 +28,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String title = request.getParameter("title"); String description = request.getParameter("description"); - + System.out.println(titleOld); Ad ad = DaoFactory.getAdsDao().ByTitle(titleOld); //FIND THE AD TO UPDATE DaoFactory.getAdsDao().update(ad,title,description); // UPDATE AD response.sendRedirect("/ads"); diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 65e4500af7..745062d85a 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -73,19 +73,21 @@ public void update(Ad ad, String title,String description) { " title = ?, " + " description = ? " + - "WHERE title = " + ad.getTitle()+""; + "WHERE title = ?"; try { PreparedStatement stmt = connection.prepareStatement(query); stmt.setString(1, title); stmt.setString(2, description); + stmt.setString(3 , ad.getTitle()); + stmt.executeUpdate(); - ResultSet rs = stmt.getGeneratedKeys(); + } catch (SQLException e) { - throw new RuntimeException("Error creating new user", e); + throw new RuntimeException("Error updating Ad", e); } diff --git a/src/main/webapp/WEB-INF/ads/updateAd.jsp b/src/main/webapp/WEB-INF/ads/updateAd.jsp new file mode 100644 index 0000000000..7cf085daa6 --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/updateAd.jsp @@ -0,0 +1,29 @@ +<% +String title = request.getParameter("title"); +%> + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + + +
    +

    Update <%=request.getParameter("title")%>

    +
    +
    + + +
    +
    + + +
    + +
    +
    + + diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index fafa6298ab..d1208bbb86 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -28,7 +28,7 @@ - +
    From 585120a82ad61199ef3e0a823b75c4f017a5666b Mon Sep 17 00:00:00 2001 From: Nicholas Barrera Date: Wed, 16 Nov 2022 08:51:10 -0600 Subject: [PATCH 22/27] complete password verification --- .../adlister/controllers/AdsIndexServlet.java | 2 +- .../adlister/controllers/RegisterServlet.java | 81 +++++++------------ .../java/com/codeup/adlister/dao/Ads.java | 15 ++-- .../codeup/adlister/dao/MySQLUsersDao.java | 16 +++- .../java/com/codeup/adlister/dao/Users.java | 2 + src/main/webapp/WEB-INF/register.jsp | 10 +++ 6 files changed, 62 insertions(+), 64 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java index a25f8a0797..0460daf546 100644 --- a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java @@ -12,7 +12,7 @@ @WebServlet(name = "controllers.AdsIndexServlet", urlPatterns = "/ads") public class AdsIndexServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - request.setAttribute("ads", DaoFactory.getAdsDao().); + request.setAttribute("ads", DaoFactory.getAdsDao().all()); request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response); } } diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index 5c5de4afe3..b7ad6f0540 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -24,79 +24,52 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String passwordConfirmation = request.getParameter("confirm_password"); // validate input - boolean inputHasErrors = username.isEmpty() - || email.isEmpty() - || password.isEmpty() - || (!password.equals(passwordConfirmation)); - - if (inputHasErrors) { - response.sendRedirect("/register"); - return; - } +// boolean inputHasErrors = username.isEmpty() +// || email.isEmpty() +// || password.isEmpty() +// || (!password.equals(passwordConfirmation)); +// +// if (inputHasErrors) { +// response.sendRedirect("/register"); +// return; +// } - User userName = DaoFactory.getUsersDao().findByUsername(username); - boolean valid = false; + User userName = DaoFactory.getUsersDao().findByUsername(username); + User emailTest = DaoFactory.getUsersDao().findByEmail(email); + + boolean correctInfo = false; if (userName != null && username.equals(userName.getUsername())) { - request.setAttribute("usernameExists", "This username already exists."); + request.setAttribute("usernameExists", "This username is already in use, please try another."); + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); + } else if (!email.contains("@")) { + request.setAttribute("emailError", "You need to enter a valid email address!"); + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); + } else if (emailTest != null && email.equals(emailTest.getEmail())) { + request.setAttribute("emailExists", "The email you entered already exists."); + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); + } else if (!password.equals(passwordConfirmation)) { + request.setAttribute("passwordMismatch", "Please confirm your password you re-entered is correct."); request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); -// } else if (!password.equals(passwordConfirmation)) { -// request.setAttribute("passwordError", "The passwords do not match!"); -// request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); -// } else { -// valid = true; - } - -// create and save a new user -// if(valid) { -<<<<<<< HEAD - User user = new User(username, email, password); - DaoFactory.getUsersDao().insert(user); - response.sendRedirect("/login"); -// } -======= - User user = new User(username, email, password); - DaoFactory.getUsersDao().insert(user); - response.sendRedirect("/login"); -// } + else { + correctInfo = true; } ->>>>>>> fe7c836abce2643dcc2c5cd3a0d83e995b916298 - - - - // create and save a new user + } +} - // create and save a new user - // if(valid) { - // User user = new User(username, email, password); - // DaoFactory.getUsersDao().insert(user); - // response.sendRedirect("/login"); - // } - } -<<<<<<< HEAD - // create and save a new user - // create and save a new user - // if(valid) { - // User user = new User(username, email, password); - // DaoFactory.getUsersDao().insert(user); - // response.sendRedirect("/login"); - // } -} -======= ->>>>>>> fe7c836abce2643dcc2c5cd3a0d83e995b916298 diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index c7355df539..1083c742aa 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -10,19 +10,18 @@ public interface Ads { // insert a new ad and return the new ad's id Long insert(Ad ad); -<<<<<<< HEAD + void update(Ad ad,String title,String description); -======= - void update(Ad ad,String title,String description); ->>>>>>> fe7c836abce2643dcc2c5cd3a0d83e995b916298 + + void delete(Ad ad); Ad findAd(long userId, String title); List searchAD(String tittle); -<<<<<<< HEAD -} -======= + } ->>>>>>> fe7c836abce2643dcc2c5cd3a0d83e995b916298 + + + diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 122ffcfb1b..72228d5872 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -46,6 +46,8 @@ public User findByUsername(String username) { + + @Override public Long insert(User user) { String query = "INSERT INTO users(username, email, password) VALUES (?, ?, ?)"; @@ -113,8 +115,20 @@ public void delete(User user) { } + @Override + public User findByEmail(String email) { + String query = "SELECT * FROM users WHERE email = ? LIMIT 1"; + try { + System.out.println(email); + System.out.println(query); + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, email); + return extractUser(stmt.executeQuery()); + } catch (SQLException e) { + throw new RuntimeException("Error finding a user by username", e); + } - + } private User extractUser(ResultSet rs) throws SQLException { diff --git a/src/main/java/com/codeup/adlister/dao/Users.java b/src/main/java/com/codeup/adlister/dao/Users.java index a8d6d2e205..f893b13679 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -11,4 +11,6 @@ public interface Users { Long insert(User user); void update(User user,String name,String email,String password); void delete(User user); + + User findByEmail(String email); } diff --git a/src/main/webapp/WEB-INF/register.jsp b/src/main/webapp/WEB-INF/register.jsp index 6b7f168747..204822434f 100644 --- a/src/main/webapp/WEB-INF/register.jsp +++ b/src/main/webapp/WEB-INF/register.jsp @@ -23,15 +23,25 @@
    +

    +

    + +

    +
    +

    + +

    From ee737f2274c150f4bc8d3c16b569aa597b615b18 Mon Sep 17 00:00:00 2001 From: Nicholas Barrera Date: Wed, 16 Nov 2022 08:52:45 -0600 Subject: [PATCH 23/27] update --- .../com/codeup/adlister/controllers/RegisterServlet.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index b7ad6f0540..f93743e72b 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -35,8 +35,6 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // } - - User userName = DaoFactory.getUsersDao().findByUsername(username); User emailTest = DaoFactory.getUsersDao().findByEmail(email); @@ -55,14 +53,13 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); else { - correctInfo = true; + correctInfo = true; + } } } -} - - +} From 907e75e984afb27d7ec8a8ec45acc025811a327d Mon Sep 17 00:00:00 2001 From: Cody Palmer Date: Wed, 16 Nov 2022 12:11:37 -0600 Subject: [PATCH 24/27] Updates --- src/main/java/com/codeup/adlister/dao/DaoFactory.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/codeup/adlister/dao/DaoFactory.java b/src/main/java/com/codeup/adlister/dao/DaoFactory.java index 3d27c2f664..e002140f85 100644 --- a/src/main/java/com/codeup/adlister/dao/DaoFactory.java +++ b/src/main/java/com/codeup/adlister/dao/DaoFactory.java @@ -1,7 +1,5 @@ package com.codeup.adlister.dao; -import com.codeup.adlister.Config; - public class DaoFactory { private static Ads adsDao; private static Users usersDao; From 38578e7ff8811362ed9cc3835484fbdf120c7851 Mon Sep 17 00:00:00 2001 From: Cody Palmer Date: Wed, 16 Nov 2022 14:27:51 -0600 Subject: [PATCH 25/27] Updates to master --- src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java | 1 - src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java | 1 - 2 files changed, 2 deletions(-) diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 79efa56917..4b2637648b 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -1,6 +1,5 @@ package com.codeup.adlister.dao; -import com.codeup.adlister.Config; import com.codeup.adlister.models.Ad; import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 122ffcfb1b..d033b1b67c 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -1,6 +1,5 @@ package com.codeup.adlister.dao; -import com.codeup.adlister.Config; import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; From da269b54d8ca9076935171dc86b20485d45480db Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Wed, 16 Nov 2022 14:57:45 -0600 Subject: [PATCH 26/27] updated delet and update servlet --- .../adlister/controllers/DeleteAdsServlet.java | 6 +++--- .../adlister/controllers/RegisterServlet.java | 9 ++++----- .../adlister/controllers/UpdateAdServlet.java | 18 +++++++++++++++--- src/main/java/com/codeup/adlister/dao/Ads.java | 2 +- .../com/codeup/adlister/dao/ListAdsDao.java | 4 +++- .../com/codeup/adlister/dao/MySQLAdsDao.java | 8 ++++---- src/main/webapp/WEB-INF/profile.jsp | 15 ++++++++++----- 7 files changed, 40 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java index 253df74ff4..6c07785587 100644 --- a/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/DeleteAdsServlet.java @@ -17,10 +17,10 @@ public class DeleteAdsServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { - String title = (String) request.getParameter("title"); - System.out.println(title); + long id = Long.parseLong( request.getParameter("id")); + System.out.println(id); - Ad ad = DaoFactory.getAdsDao().ByTitle(title); //FIND THE AD TO DELETE + Ad ad = DaoFactory.getAdsDao().ById(id); //FIND THE AD TO DELETE DaoFactory.getAdsDao().delete(ad); // DELETE AD response.sendRedirect("/ads"); diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index f93743e72b..d48da11ee4 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -52,13 +52,11 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) request.setAttribute("passwordMismatch", "Please confirm your password you re-entered is correct."); request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); - else { - correctInfo = true; - } + + } else { + correctInfo = true; } } - - } @@ -70,3 +68,4 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) + diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java index 2d0213fc26..464782242d 100644 --- a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -14,9 +14,14 @@ @WebServlet(name = "controllers.UpdateAdServlet", urlPatterns = "/updateAd") public class UpdateAdServlet extends HttpServlet { String titleOld; + long id; + String oldDescription; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { titleOld = request.getParameter("title"); + id = Long.parseLong(request.getParameter("id")); + oldDescription = request.getParameter("description"); + request.getRequestDispatcher("/WEB-INF/ads/updateAd.jsp") .forward(request, response); @@ -26,10 +31,17 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) User user = (User) request.getSession().getAttribute("user"); String title = request.getParameter("title"); -String description = request.getParameter("description"); + if( title.isEmpty()){title = titleOld;} + +String description = request.getParameter("description"); + if( description.isEmpty()){ description = oldDescription;} + + + - System.out.println(titleOld); - Ad ad = DaoFactory.getAdsDao().ByTitle(titleOld); //FIND THE AD TO UPDATE + System.out.println(id); + System.out.println(oldDescription); + Ad ad = DaoFactory.getAdsDao().ById(id); //FIND THE AD TO UPDATE DaoFactory.getAdsDao().update(ad,title,description); // UPDATE AD response.sendRedirect("/ads"); diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index adb66141ae..b579b48282 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -16,7 +16,7 @@ public interface Ads { - Ad ByTitle(String title); + Ad ById(long id); void delete(Ad ad); diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 6f393f4736..0caafd0970 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -33,11 +33,13 @@ public void update(Ad ad, String title, String description) { } @Override - public Ad ByTitle(String title) { + public Ad ById(long id) { return null; } + + @Override public void delete(Ad ad) { diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 5460141bdc..9d49b30ecc 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -96,15 +96,15 @@ public void update(Ad ad, String title,String description) { - //**********************Find ad by the ad id to delete**************************** + //**********************Find ad by id to delete**************************** - public Ad ByTitle(String title) { + public Ad ById(long id) { - String sql = "SELECT * FROM ads WHERE title LIKE ?"; + String sql = "SELECT * FROM ads WHERE id = ?"; PreparedStatement stmt = null; try { stmt = connection.prepareStatement(sql); - stmt.setString(1,"%"+title+"%"); + stmt.setLong(1,id); ResultSet rs = stmt.executeQuery(); List ad = createAdsFromResults(rs); diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 22b0028b17..9c2fdf1727 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -30,20 +30,25 @@

    ${ad.description}

    -
    +
    - - + + + + +
    -
    +
    - + + +
    From 9a2fd364ccc8157288adddc4a51e0f568c34fd8d Mon Sep 17 00:00:00 2001 From: Amida Fombutu Date: Wed, 16 Nov 2022 15:26:42 -0600 Subject: [PATCH 27/27] more --- src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 61336f09c3..72228d5872 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -1,5 +1,6 @@ package com.codeup.adlister.dao; +import com.codeup.adlister.Config; import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver;