From 8b9f992a73e272dc8839419ccedc67c82204af71 Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Mon, 13 Feb 2023 10:31:30 -0600 Subject: [PATCH 01/24] initial commit --- src/main/java/com/codeup/adlister/dao/DaoFactory.java | 3 +++ src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java | 2 +- src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java | 3 ++- 3 files changed, 6 insertions(+), 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 e002140f85..536e7563bb 100644 --- a/src/main/java/com/codeup/adlister/dao/DaoFactory.java +++ b/src/main/java/com/codeup/adlister/dao/DaoFactory.java @@ -1,5 +1,8 @@ package com.codeup.adlister.dao; + + + 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..fa3f3e856e 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -18,7 +18,7 @@ public MySQLAdsDao(Config config) { DriverManager.registerDriver(new Driver()); connection = DriverManager.getConnection( config.getUrl(), - config.getUser(), + config.getUsername(), config.getPassword() ); } catch (SQLException e) { diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 4e69e57044..a349685741 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -3,6 +3,7 @@ import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; + import java.sql.*; public class MySQLUsersDao implements Users { @@ -13,7 +14,7 @@ public MySQLUsersDao(Config config) { DriverManager.registerDriver(new Driver()); connection = DriverManager.getConnection( config.getUrl(), - config.getUser(), + config.getUsername(), config.getPassword() ); } catch (SQLException e) { From 62e3ff5d107d51c401ad54841493396cdbe6a507 Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Mon, 13 Feb 2023 14:59:35 -0600 Subject: [PATCH 02/24] adding navbar and partially completed profile page --- pom.xml | 2 +- .../adlister/controllers/LoginServlet.java | 2 +- src/main/webapp/WEB-INF/partials/navbar.jsp | 21 ++++++++++++++++--- src/main/webapp/WEB-INF/profile.jsp | 13 +++++++++++- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 22a2e9c039..47304fd49f 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ mysql mysql-connector-java - 6.0.5 + 8.0.23 diff --git a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java index e5c52723a2..255df74a34 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -27,7 +27,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) User user = DaoFactory.getUsersDao().findByUsername(username); if (user == null) { - response.sendRedirect("/login"); + response.sendRedirect("/login");// this needs to be changed to the register page return; } diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 8e1f98f662..be1e84d3c7 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -1,13 +1,28 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page import="com.codeup.adlister.models.User" %> +<%--Fontawesome JS--%> + diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 05e3fa7a91..fca463ccc8 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -10,7 +10,18 @@

Welcome, ${sessionScope.user.username}!

-
+
+
+ + +
+
+ + +
+ +
+ From cdeeb1c3824de970e0a8927ff1610a736e01bf92 Mon Sep 17 00:00:00 2001 From: Paul Wagner Date: Mon, 13 Feb 2023 14:59:40 -0600 Subject: [PATCH 03/24] adding search functionality --- migration.sql => database_files/migration.sql | 2 ++ database_files/seeder.sql | 0 pom.xml | 2 +- .../adlister/controllers/SearchServlet.java | 32 +++++++++++++++++ .../java/com/codeup/adlister/dao/Ads.java | 5 +++ .../com/codeup/adlister/dao/DaoFactory.java | 3 -- .../com/codeup/adlister/dao/ListAdsDao.java | 13 ++++++- .../com/codeup/adlister/dao/MySQLAdsDao.java | 36 +++++++++++++++++-- .../codeup/adlister/dao/MySQLUsersDao.java | 1 + src/main/webapp/WEB-INF/ads/index.jsp | 8 +++++ src/main/webapp/WEB-INF/partials/search.jsp | 4 +++ src/main/webapp/index.jsp | 10 ++++++ 12 files changed, 108 insertions(+), 8 deletions(-) rename migration.sql => database_files/migration.sql (92%) create mode 100644 database_files/seeder.sql create mode 100644 src/main/java/com/codeup/adlister/controllers/SearchServlet.java create mode 100644 src/main/webapp/WEB-INF/partials/search.jsp diff --git a/migration.sql b/database_files/migration.sql similarity index 92% rename from migration.sql rename to database_files/migration.sql index a70d2eab38..08e994b55b 100644 --- a/migration.sql +++ b/database_files/migration.sql @@ -1,3 +1,5 @@ +CREATE DATABASE IF NOT EXISTS adlister_db; + USE adlister_db; DROP TABLE IF EXISTS ads; diff --git a/database_files/seeder.sql b/database_files/seeder.sql new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pom.xml b/pom.xml index 22a2e9c039..23d5d2db4f 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ mysql mysql-connector-java - 6.0.5 + 8.0.32 diff --git a/src/main/java/com/codeup/adlister/controllers/SearchServlet.java b/src/main/java/com/codeup/adlister/controllers/SearchServlet.java new file mode 100644 index 0000000000..140a534629 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/SearchServlet.java @@ -0,0 +1,32 @@ +package com.codeup.adlister.controllers; + +import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.models.Ad; + +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; +import java.sql.SQLException; +import java.util.List; + + +@WebServlet(name = "SearchServlet", urlPatterns = "/ads/search") +public class SearchServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String searchString = req.getParameter("s"); + + try{ + List adlist =DaoFactory.getAdsDao().searchAds(searchString); + req.setAttribute("ads", adlist); + } catch (SQLException e){ + throw new RuntimeException("Error"); + } + + req.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(req, resp); + } +} diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 79dc59f484..1edc276ad9 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -2,6 +2,7 @@ import com.codeup.adlister.models.Ad; +import java.sql.SQLException; import java.util.List; public interface Ads { @@ -9,4 +10,8 @@ public interface Ads { List all(); // insert a new ad and return the new ad's id Long insert(Ad ad); + + List searchAds(String searchString) throws SQLException; + + Ad findUniqueAdId(Long ad); } diff --git a/src/main/java/com/codeup/adlister/dao/DaoFactory.java b/src/main/java/com/codeup/adlister/dao/DaoFactory.java index 536e7563bb..e002140f85 100644 --- a/src/main/java/com/codeup/adlister/dao/DaoFactory.java +++ b/src/main/java/com/codeup/adlister/dao/DaoFactory.java @@ -1,8 +1,5 @@ package com.codeup.adlister.dao; - - - 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 8d3baaa369..430adb3c0f 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -2,10 +2,11 @@ import com.codeup.adlister.models.Ad; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class ListAdsDao implements Ads { +public class ListAdsDao { private List ads; public List all() { @@ -27,6 +28,16 @@ public Long insert(Ad ad) { return ad.getId(); } +// @Override +// public List searchAds(String searchString) throws SQLException { +// return null; +// } +// +// @Override +// public Ad findUniqueAdId(Long ad) { +// 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 fa3f3e856e..126bb4517a 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -3,9 +3,7 @@ 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; @@ -55,6 +53,38 @@ public Long insert(Ad ad) { } } + @Override + public List searchAds(String keyword) throws SQLException { + List adList = new ArrayList<>(); + String sqlQuery = "SELECT id FROM ads WHERE title LIKE ?"; + + PreparedStatement stmt = connection.prepareStatement(sqlQuery, Statement.NO_GENERATED_KEYS); + stmt.setString(1, "%" + keyword + "%"); + System.out.println(stmt); + stmt.executeQuery(); + ResultSet rs = stmt.getResultSet(); + while (rs.next()) { + adList.add(findUniqueAdId(rs.getLong("id"))); + } + return adList; + } + + @Override + public Ad findUniqueAdId(Long ad){ + String query = "SELECT * FROM ads WHERE id = ? LIMIT 1"; + try{ + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, ad); + ResultSet rs = stmt.executeQuery(); + if (! rs.next()) { + return null; + } + return extractAd(rs); + } catch(SQLException e) { + throw new RuntimeException("Error finding Ad ID", 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 a349685741..980698ba1a 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -4,6 +4,7 @@ import com.mysql.cj.jdbc.Driver; + import java.sql.*; public class MySQLUsersDao implements Users { diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 6f4371f0bb..a0326d2909 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -20,5 +20,13 @@ +
+ +
+<%--
--%> +<%-- --%> +<%-- --%> +<%--
--%> + diff --git a/src/main/webapp/WEB-INF/partials/search.jsp b/src/main/webapp/WEB-INF/partials/search.jsp new file mode 100644 index 0000000000..97b7b0c987 --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/search.jsp @@ -0,0 +1,4 @@ +
+ + +
diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 68cf346ec9..f7a03c46cb 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -11,5 +11,15 @@

Welcome to the Adlister!

+ +
+ +
+ +<%--
--%> +<%-- --%> +<%-- --%> +<%--
--%> + From 478dd7d7df955f14c2cd33adc8f80e03bb728c95 Mon Sep 17 00:00:00 2001 From: Paul Wagner Date: Tue, 14 Feb 2023 10:19:45 -0600 Subject: [PATCH 04/24] added register link to navbar and added redirect to register page if user does not exist from login --- src/main/java/com/codeup/adlister/controllers/LoginServlet.java | 2 +- src/main/webapp/WEB-INF/partials/navbar.jsp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java index 255df74a34..cd45f5c847 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -27,7 +27,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) User user = DaoFactory.getUsersDao().findByUsername(username); if (user == null) { - response.sendRedirect("/login");// this needs to be changed to the register page + response.sendRedirect("/register");// this needs to be changed to the register page return; } diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index be1e84d3c7..12e8e8ea54 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -10,6 +10,7 @@ <% User user = (User) session.getAttribute("user"); if (user == null) { %> +
  • ">Register
  • ">Login
  • <% }else{ @@ -19,7 +20,6 @@ <% } %> - From b8cf4e10753e5aedba3154b9146c0e0dd449c0fc Mon Sep 17 00:00:00 2001 From: Paul Wagner Date: Tue, 14 Feb 2023 10:50:56 -0600 Subject: [PATCH 05/24] adding UNIQUE to username and email fields on the users table --- database_files/migration.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database_files/migration.sql b/database_files/migration.sql index 08e994b55b..6bcd04d3ee 100644 --- a/database_files/migration.sql +++ b/database_files/migration.sql @@ -7,8 +7,8 @@ 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, + username VARCHAR(240) NOT NULL UNIQUE, + email VARCHAR(240) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); From 51d02fe33819ba44ade7360b8c484cd4455ad64d Mon Sep 17 00:00:00 2001 From: Paul Wagner Date: Tue, 14 Feb 2023 10:59:02 -0600 Subject: [PATCH 06/24] adding unique feature to usernames and emails in the migration database file --- database_files/migration.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database_files/migration.sql b/database_files/migration.sql index 6bcd04d3ee..a358a5370e 100644 --- a/database_files/migration.sql +++ b/database_files/migration.sql @@ -7,8 +7,8 @@ DROP TABLE IF EXISTS users; CREATE TABLE users ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, - username VARCHAR(240) NOT NULL UNIQUE, - email VARCHAR(240) NOT NULL UNIQUE, + username VARCHAR(240) NOT NULL UNIQUE , + email VARCHAR(240) NOT NULL UNIQUE , password VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); From 5281909b12c05bf6933d631679c15de3d0af8ce9 Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Tue, 14 Feb 2023 14:14:36 -0600 Subject: [PATCH 07/24] adding user update --- database_files/migration.sql | 4 +- .../controllers/UpdateInfoServlet.java | 60 +++++++++++++++++++ .../codeup/adlister/dao/MySQLUsersDao.java | 19 ++++++ .../java/com/codeup/adlister/dao/Users.java | 5 +- src/main/webapp/WEB-INF/profile.jsp | 15 ++--- src/main/webapp/WEB-INF/updateinfo.jsp | 42 +++++++++++++ 6 files changed, 130 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java create mode 100644 src/main/webapp/WEB-INF/updateinfo.jsp diff --git a/database_files/migration.sql b/database_files/migration.sql index 08e994b55b..6bcd04d3ee 100644 --- a/database_files/migration.sql +++ b/database_files/migration.sql @@ -7,8 +7,8 @@ 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, + username VARCHAR(240) NOT NULL UNIQUE, + email VARCHAR(240) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java new file mode 100644 index 0000000000..9dca67ce37 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java @@ -0,0 +1,60 @@ +package com.codeup.adlister.controllers; + +import com.codeup.adlister.dao.Config; +import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.models.User; +import com.mysql.cj.jdbc.Driver; + +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; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +@WebServlet(name = "UpdateInfoServlet", urlPatterns = "/updateinfo") +public class UpdateInfoServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.getRequestDispatcher("/WEB-INF/updateinfo.jsp").forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + if (request.getSession().getAttribute("user") == null) { + response.sendRedirect("/login"); + return; + + } else { + + if (request.getParameter("editButton") != null) { + + // Edit Process + User editUser = (User) request.getSession().getAttribute("user"); + Long userId = (long) editUser.getId(); + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String password = request.getParameter("password"); + String passwordConfirmation = request.getParameter("confirm_password"); + + // Process Edit Action + boolean inputHasErrors = (! password.equals(passwordConfirmation)); + + if (inputHasErrors) { + request.setAttribute("inputHasErrors", true); + request.getRequestDispatcher("/WEB-INF/updateinfo.jsp").forward(request, response); + } else { + editUser.setUsername(username); + editUser.setEmail(email); + editUser.setPassword(password); + DaoFactory.getUsersDao().update(editUser); + } + + } + response.sendRedirect("/profile"); + } + + } +} diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 980698ba1a..c931f5ad7a 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -53,6 +53,22 @@ public Long insert(User user) { } } + @Override + public boolean update(User user) { + String query = "UPDATE users SET email =?, password =? WHERE id =?"; + try{ + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, user.getEmail()); + stmt.setString(2, user.getPassword()); + stmt.setLong(3, user.getId()); + return stmt.executeUpdate() > 0; + } catch (SQLException e) { + throw new RuntimeException("Error updating a user", e); + } + + } + + private User extractUser(ResultSet rs) throws SQLException { if (! rs.next()) { return null; @@ -65,4 +81,7 @@ 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 62da74d20b..0cc89c89bd 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -2,9 +2,10 @@ import com.codeup.adlister.models.User; -import java.util.List; - public interface Users { User findByUsername(String username); + Long insert(User user); + + boolean update(User editUser); } diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index fca463ccc8..9462a0bf9d 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -7,20 +7,13 @@ +

    Welcome, ${sessionScope.user.username}!

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

    Username: ${sessionScope.user.username}

    +

    Email: ${sessionScope.user.email}

    + Update Info
    diff --git a/src/main/webapp/WEB-INF/updateinfo.jsp b/src/main/webapp/WEB-INF/updateinfo.jsp new file mode 100644 index 0000000000..649712cbc6 --- /dev/null +++ b/src/main/webapp/WEB-INF/updateinfo.jsp @@ -0,0 +1,42 @@ + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Update Info + + + + +
    +

    Update Info :

    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    +<%--
    --%> +<%-- --%> +<%-- Sorry, that username is already taken.--%> +<%-- --%> +<%-- --%> +<%-- Please make sure your password and password confirmation are the same.--%> +<%-- --%> +<%--
    --%> +
    + + From 9f4ad42f86bd8c9ded400c6b6688f4e469ce6a0b Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Tue, 14 Feb 2023 15:06:57 -0600 Subject: [PATCH 08/24] fixing edit username in MySQLusers dao --- .../java/com/codeup/adlister/dao/MySQLUsersDao.java | 13 +++++++------ src/main/java/com/codeup/adlister/dao/Users.java | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index c931f5ad7a..05acb766cc 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -54,14 +54,15 @@ public Long insert(User user) { } @Override - public boolean update(User user) { - String query = "UPDATE users SET email =?, password =? WHERE id =?"; + public void update(User user) { + String query = "UPDATE users SET username = ?,email =?, password =? WHERE id =?"; try{ PreparedStatement stmt = connection.prepareStatement(query); - stmt.setString(1, user.getEmail()); - stmt.setString(2, user.getPassword()); - stmt.setLong(3, user.getId()); - return stmt.executeUpdate() > 0; + stmt.setString(1,user.getUsername()); + stmt.setString(2, user.getEmail()); + stmt.setString(3, user.getPassword()); + stmt.setLong(4, user.getId()); + stmt.executeUpdate(); } catch (SQLException e) { throw new RuntimeException("Error updating a user", e); } diff --git a/src/main/java/com/codeup/adlister/dao/Users.java b/src/main/java/com/codeup/adlister/dao/Users.java index 0cc89c89bd..075a70c706 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -7,5 +7,5 @@ public interface Users { Long insert(User user); - boolean update(User editUser); + void update(User editUser); } From 27da1b7a9317878d2bae1f1a53e0e641371d3068 Mon Sep 17 00:00:00 2001 From: Paul Wagner Date: Tue, 14 Feb 2023 16:03:13 -0600 Subject: [PATCH 09/24] adding user ads to profile page --- .../controllers/ViewProfileServlet.java | 12 ++++++++++ .../java/com/codeup/adlister/dao/Ads.java | 3 +++ .../com/codeup/adlister/dao/MySQLAdsDao.java | 23 +++++++++++++++++++ src/main/webapp/WEB-INF/profile.jsp | 11 +++++++++ 4 files changed, 49 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..b385b3c347 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java @@ -1,11 +1,16 @@ 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; +import java.util.List; @WebServlet(name = "controllers.ViewProfileServlet", urlPatterns = "/profile") public class ViewProfileServlet extends HttpServlet { @@ -14,6 +19,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t response.sendRedirect("/login"); return; } + + User user =(User) request.getSession().getAttribute("user"); + Long userId = user.getId(); + + List userAds = DaoFactory.getAdsDao().getUserAds(userId); + request.setAttribute("ads", userAds); + 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 1edc276ad9..e69259960a 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -14,4 +14,7 @@ public interface Ads { List searchAds(String searchString) throws SQLException; Ad findUniqueAdId(Long ad); + + List getUserAds(long id); + } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 126bb4517a..168f007010 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -85,6 +85,29 @@ public Ad findUniqueAdId(Long ad){ } } + @Override + public List getUserAds(long id) { + List userAds = new ArrayList<>(); + + try{ + PreparedStatement stmt = connection.prepareStatement("SELECT * FROM ads WHERE user_id = ?"); + stmt.setLong(1, id); + ResultSet rs = stmt.executeQuery(); + + while (rs.next()){ + userAds.add(new Ad( + rs.getLong("id"), + rs.getLong("user_id"), + rs.getString("title"), + rs.getString("description") + )); + } + }catch(SQLException e) { + throw new RuntimeException("Error retrieving ads from database"); + } + return userAds; + } + private Ad extractAd(ResultSet rs) throws SQLException { return new Ad( rs.getLong("id"), diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 9462a0bf9d..21c07fc8f6 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.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,6 +15,16 @@

    Username: ${sessionScope.user.username}

    Email: ${sessionScope.user.email}

    Update Info + + +
    + + +
    +

    ${ad.title}

    +

    ${ad.description}

    +
    +
    From 90ae03625c0712dd2700e2ddf9c948a06a247b8f Mon Sep 17 00:00:00 2001 From: Matthew Stanley Date: Wed, 15 Feb 2023 09:05:00 -0700 Subject: [PATCH 10/24] adding broken view adpage --- .../adlister/controllers/ViewAdServlet.java | 30 +++++++++++++++++++ .../codeup/adlister/dao/MySQLUsersDao.java | 19 ++++++++++++ .../java/com/codeup/adlister/dao/Users.java | 2 ++ src/main/webapp/WEB-INF/adpage.jsp | 20 +++++++++++++ src/main/webapp/WEB-INF/ads/index.jsp | 5 ++-- src/main/webapp/WEB-INF/login.jsp | 1 + src/main/webapp/WEB-INF/profile.jsp | 5 ++-- 7 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java create mode 100644 src/main/webapp/WEB-INF/adpage.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java new file mode 100644 index 0000000000..97aef667a5 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/ViewAdServlet.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; +import java.util.List; + +@WebServlet(name = "controllers.ViewAdServlet", urlPatterns = "/adpage") +public class ViewAdServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (request.getSession().getAttribute("ad") == null) { + response.sendRedirect("/ads"); + return; + } + + long adId = Long.parseLong(request.getParameter("adId")); + Ad ad = DaoFactory.getAdsDao().findUniqueAdId(adId); + User user = DaoFactory.getUsersDao().getUserByAd(adId); + request.setAttribute("ad", ad); + request.setAttribute("user", user); + request.getRequestDispatcher("/WEB-INF/adpage.jsp").forward(request, response); + response.sendRedirect("/adpage"); + } +} diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 05acb766cc..5a5ef0e791 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -53,6 +53,25 @@ public Long insert(User user) { } } + @Override + public User getUserByAd(long id) { + PreparedStatement stmt = null; + try { + stmt = connection.prepareStatement("SELECT * FROM users u JOIN ads a ON a.user_id = u.id WHERE a.id = ?"); + stmt.setLong(1, id); + ResultSet rs = stmt.executeQuery(); + rs.next(); + return new User( + rs.getLong("id"), + rs.getString("username"), + rs.getString("email"), + rs.getString("password") + ); + } catch (SQLException e) { + throw new RuntimeException("Error finding user.", e); + } + } + @Override public void update(User user) { String query = "UPDATE users SET username = ?,email =?, password =? WHERE id =?"; diff --git a/src/main/java/com/codeup/adlister/dao/Users.java b/src/main/java/com/codeup/adlister/dao/Users.java index 075a70c706..53011f8dd4 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -7,5 +7,7 @@ public interface Users { Long insert(User user); + User getUserByAd(long id); + void update(User editUser); } diff --git a/src/main/webapp/WEB-INF/adpage.jsp b/src/main/webapp/WEB-INF/adpage.jsp new file mode 100644 index 0000000000..de7a936ff5 --- /dev/null +++ b/src/main/webapp/WEB-INF/adpage.jsp @@ -0,0 +1,20 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + + + + +
    +

    ${ad.title}

    +

    ${ad.description}

    +

    Ad created by: ${user.username}

    +
    + + + diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index a0326d2909..447b4bd06a 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -14,8 +14,9 @@
    -

    ${ad.title}

    -

    ${ad.description}

    + "> +

    ${ad.title}

    +
    diff --git a/src/main/webapp/WEB-INF/login.jsp b/src/main/webapp/WEB-INF/login.jsp index 83ce2d0a1f..ba8104476e 100644 --- a/src/main/webapp/WEB-INF/login.jsp +++ b/src/main/webapp/WEB-INF/login.jsp @@ -20,6 +20,7 @@ + diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 21c07fc8f6..bcf51d4137 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -21,8 +21,9 @@
    -

    ${ad.title}

    -

    ${ad.description}

    + "> +

    ${ad.title}

    +
    From 3a39cbd330256f36ff39aa8b13403f059752af11 Mon Sep 17 00:00:00 2001 From: Matthew Stanley Date: Wed, 15 Feb 2023 10:11:06 -0700 Subject: [PATCH 11/24] adding fixed view adpage --- .../java/com/codeup/adlister/controllers/ViewAdServlet.java | 6 +----- src/main/webapp/WEB-INF/ads/index.jsp | 2 +- src/main/webapp/WEB-INF/profile.jsp | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java index 97aef667a5..1448c5d58f 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java @@ -13,11 +13,8 @@ @WebServlet(name = "controllers.ViewAdServlet", urlPatterns = "/adpage") public class ViewAdServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - if (request.getSession().getAttribute("ad") == null) { - response.sendRedirect("/ads"); - return; - } long adId = Long.parseLong(request.getParameter("adId")); Ad ad = DaoFactory.getAdsDao().findUniqueAdId(adId); @@ -25,6 +22,5 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t request.setAttribute("ad", ad); request.setAttribute("user", user); request.getRequestDispatcher("/WEB-INF/adpage.jsp").forward(request, response); - response.sendRedirect("/adpage"); } } diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 447b4bd06a..85da8fc99e 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -14,7 +14,7 @@ diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index bcf51d4137..273193eb7d 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -20,8 +20,8 @@
    -
    - "> + From ccafe930581cfc704b8e8616ede150420d838ce5 Mon Sep 17 00:00:00 2001 From: Matthew Stanley Date: Wed, 15 Feb 2023 10:23:55 -0700 Subject: [PATCH 12/24] adding link for create ad/moved search bar --- src/main/webapp/WEB-INF/adpage.jsp | 1 - src/main/webapp/WEB-INF/ads/index.jsp | 5 ++--- src/main/webapp/WEB-INF/partials/navbar.jsp | 3 +++ src/main/webapp/WEB-INF/profile.jsp | 1 - src/main/webapp/index.jsp | 3 --- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/webapp/WEB-INF/adpage.jsp b/src/main/webapp/WEB-INF/adpage.jsp index de7a936ff5..ba0ddefc06 100644 --- a/src/main/webapp/WEB-INF/adpage.jsp +++ b/src/main/webapp/WEB-INF/adpage.jsp @@ -8,7 +8,6 @@ -

    ${ad.title}

    diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 85da8fc99e..c00b0ab5f9 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -9,6 +9,7 @@ +

    Here Are all the ads!

    @@ -21,9 +22,7 @@
    -
    - -
    + <%--
    --%> <%-- --%> <%-- --%> diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 12e8e8ea54..a1aa550ff2 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -5,16 +5,19 @@
    +
    + + +
    <%--
    --%> <%-- --%> <%-- Sorry, that username is already taken.--%> From 7058b6eb0e2856e84a2b2a33a19f97816dae336a Mon Sep 17 00:00:00 2001 From: Matthew Stanley Date: Wed, 15 Feb 2023 13:07:25 -0700 Subject: [PATCH 14/24] adding flow for editingn ads --- .../adlister/controllers/UpdateAdServlet.java | 46 +++++++++++++++++++ .../java/com/codeup/adlister/dao/Ads.java | 1 + .../com/codeup/adlister/dao/MySQLAdsDao.java | 15 ++++++ src/main/webapp/WEB-INF/adpage.jsp | 20 ++++++++ src/main/webapp/WEB-INF/ads/update.jsp | 32 +++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java create mode 100644 src/main/webapp/WEB-INF/ads/update.jsp 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..65f7b92cd1 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -0,0 +1,46 @@ +package com.codeup.adlister.controllers; + +import com.codeup.adlister.dao.Config; +import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; +import com.mysql.cj.jdbc.Driver; + +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; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +@WebServlet(name = "controllers.UpdateAdServlet", urlPatterns = "/ads/update") +public class UpdateAdServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + long adId = Long.parseLong(request.getParameter("adId")); + Ad ad = DaoFactory.getAdsDao().findUniqueAdId(adId); + request.setAttribute("ad", ad); + request.getRequestDispatcher("/WEB-INF/ads/update.jsp").forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + if (request.getParameter("editButton") != null) { + + // Edit Process + long adId = Long.parseLong(request.getParameter("adId")); + Ad editAd = DaoFactory.getAdsDao().findUniqueAdId(adId); + String title = request.getParameter("title"); + String description = request.getParameter("description"); + editAd.setTitle(title); + editAd.setDescription(description); + DaoFactory.getAdsDao().update(editAd); + + } + 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 e69259960a..42f3e45ab7 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -17,4 +17,5 @@ public interface Ads { List getUserAds(long id); + void update(Ad editAd); } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 168f007010..873cd01079 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -124,4 +124,19 @@ private List createAdsFromResults(ResultSet rs) throws SQLException { } return ads; } + + @Override + public void update(Ad ad) { + String query = "UPDATE ads SET title = ?, description =? WHERE id =?"; + try{ + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, ad.getTitle()); + stmt.setString(2, ad.getDescription()); + stmt.setLong(3, ad.getId()); + stmt.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException("Error updating ad", e); + } + + } } diff --git a/src/main/webapp/WEB-INF/adpage.jsp b/src/main/webapp/WEB-INF/adpage.jsp index ba0ddefc06..0eb6a4547d 100644 --- a/src/main/webapp/WEB-INF/adpage.jsp +++ b/src/main/webapp/WEB-INF/adpage.jsp @@ -1,3 +1,6 @@ +<%@ page import="com.codeup.adlister.models.User" %> +<%@ page import="com.codeup.adlister.models.Ad" %> +<%@ page import="com.codeup.adlister.dao.DaoFactory" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> @@ -13,6 +16,23 @@

    ${ad.title}

    ${ad.description}

    Ad created by: ${user.username}

    + <% User user =(User) request.getSession().getAttribute("user"); + + if (user == null) { + %> +

    Own this ad? Login to update or delete this ad.

    + <% + } else { + Long currentUser = user.getId(); + long adId = Long.parseLong(request.getParameter("adId")); + User adUser = DaoFactory.getUsersDao().getUserByAd(adId); + Long adUserId = adUser.getId(); + if (currentUser == adUserId) { + %> Update Ad + <% + } + } + %>
    diff --git a/src/main/webapp/WEB-INF/ads/update.jsp b/src/main/webapp/WEB-INF/ads/update.jsp new file mode 100644 index 0000000000..91244a6133 --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/update.jsp @@ -0,0 +1,32 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page import="com.codeup.adlister.models.User" %> +<%@ page import="com.codeup.adlister.models.Ad" %> +<%@ page import="com.codeup.adlister.dao.DaoFactory" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Update Ad + + + + +
    +

    Update Ad

    +
    +
    + + +
    +
    + + +
    + + +
    +
    + + \ No newline at end of file From d1d9841c972f51eee4122d6ee2a885130b44d9ed Mon Sep 17 00:00:00 2001 From: Paul Wagner Date: Wed, 15 Feb 2023 15:35:28 -0600 Subject: [PATCH 15/24] adding styling --- src/main/webapp/WEB-INF/ads/index.jsp | 31 ++++-- src/main/webapp/WEB-INF/partials/head.jsp | 2 +- src/main/webapp/WEB-INF/partials/navbar.jsp | 104 +++++++++++++++----- src/main/webapp/index.jsp | 6 +- 4 files changed, 106 insertions(+), 37 deletions(-) diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index c00b0ab5f9..bc5bf48b60 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -6,20 +6,33 @@
    - + -
    -

    Here Are all the ads!

    - +
    +

    Here Are all the ads!

    +
    +<%-- --%> +<%--
    --%> +<%-- --%> +<%--

    ${ad.title}

    --%> +<%--
    --%> +<%--
    --%> +<%--
    --%> + diff --git a/src/main/webapp/WEB-INF/partials/head.jsp b/src/main/webapp/WEB-INF/partials/head.jsp index a33443d65c..9fa9545f60 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} - + diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index a1aa550ff2..4a13c110d3 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -1,31 +1,87 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="com.codeup.adlister.models.User" %> -
    --%> +<%----%> + +
    + +<%--Bootstrap JS--%> + <%--Fontawesome JS--%> diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 65355b6884..b2e8a6e9cc 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -6,10 +6,10 @@ - + -
    -

    Welcome to the Adlister!

    + From 6d3c4f730117f4c8cfd2a1e63ac81f87a13d8cd6 Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Wed, 15 Feb 2023 16:52:53 -0600 Subject: [PATCH 16/24] adding pop for mismatch passwords in updateInfoServlet --- .../codeup/adlister/controllers/UpdateInfoServlet.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java index 466e2c43fd..98282450cb 100644 --- a/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java @@ -10,6 +10,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.swing.*; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; @@ -45,8 +46,12 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) boolean inputHasErrors = (!password.equals(passwordConfirmation)); if (inputHasErrors) { - request.setAttribute("inputHasErrors", true); - request.getRequestDispatcher("/WEB-INF/updateinfo.jsp").forward(request, response); + if (inputHasErrors) { + JOptionPane.showMessageDialog(null,"Passwords do not match"); + request.setAttribute("inputHasErrors", true); + String message = "Passwords did not match"; + request.setAttribute("message", message); + request.getRequestDispatcher("/WEB-INF/updateinfo.jsp").forward(request, response); } else { editUser.setUsername(username); editUser.setEmail(email); From 8f1b2b440694e3b1bb0c45888b7711614008fa63 Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Wed, 15 Feb 2023 16:55:49 -0600 Subject: [PATCH 17/24] fixing error in updateinfo servlet --- .../java/com/codeup/adlister/controllers/UpdateInfoServlet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java index 98282450cb..b22c4e3edc 100644 --- a/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/UpdateInfoServlet.java @@ -45,7 +45,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // Process Edit Action boolean inputHasErrors = (!password.equals(passwordConfirmation)); - if (inputHasErrors) { + if (inputHasErrors) { JOptionPane.showMessageDialog(null,"Passwords do not match"); request.setAttribute("inputHasErrors", true); From a9a569dc156cd77deeedcb94d57a94c22284597b Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Thu, 16 Feb 2023 10:05:01 -0600 Subject: [PATCH 18/24] adding username validation to register servlet --- .../adlister/controllers/RegisterServlet.java | 27 ++++++++++++++----- 1 file changed, 21 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 e1e997c17a..e2057b5872 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -8,6 +8,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.swing.*; import java.io.IOException; @WebServlet(name = "controllers.RegisterServlet", urlPatterns = "/register") @@ -23,19 +24,33 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String passwordConfirmation = request.getParameter("confirm_password"); // validate input + boolean userNameExists = (!username.equals(request.getParameter(username))); + boolean inputHasErrors = username.isEmpty() || email.isEmpty() || password.isEmpty() || (! password.equals(passwordConfirmation)); - if (inputHasErrors) { + if (userNameExists){ + JOptionPane.showMessageDialog(null,"Please choose a new username that one exists already"); + request.setAttribute("userNameExists", true); + response.sendRedirect("/register"); + + }else if (inputHasErrors) { + JOptionPane.showMessageDialog(null,"Passwords do not match"); + request.setAttribute("inputHasErrors", true); + String message = "Passwords did not match"; + request.setAttribute("message", message); response.sendRedirect("/register"); return; - } - // create and save a new user - User user = new User(username, email, password); - DaoFactory.getUsersDao().insert(user); - response.sendRedirect("/login"); + }else{ + 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"); } } From 2344de2e76da088a034cb81ee99b4d67bfbc1fcc Mon Sep 17 00:00:00 2001 From: Joshua Ramos Date: Thu, 16 Feb 2023 11:03:05 -0600 Subject: [PATCH 19/24] adding username validation --- .../java/com/codeup/adlister/controllers/RegisterServlet.java | 2 +- 1 file changed, 1 insertion(+), 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 e2057b5872..dfc418f5c5 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -42,7 +42,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String message = "Passwords did not match"; request.setAttribute("message", message); response.sendRedirect("/register"); - return; +// return; }else{ User user = new User(username, email, password); From 08e31b6b8b6deb32efa22bd977330987b879eddf Mon Sep 17 00:00:00 2001 From: Matthew Stanley Date: Thu, 16 Feb 2023 13:05:00 -0700 Subject: [PATCH 20/24] adding flow for deleting an ad --- .../adlister/controllers/UpdateAdServlet.java | 7 +++++++ src/main/java/com/codeup/adlister/dao/Ads.java | 2 ++ .../java/com/codeup/adlister/dao/MySQLAdsDao.java | 13 +++++++++++++ src/main/webapp/WEB-INF/ads/update.jsp | 9 +++++++++ 4 files changed, 31 insertions(+) diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java index 65f7b92cd1..7ff034ea3a 100644 --- a/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -39,6 +39,13 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) DaoFactory.getAdsDao().update(editAd); } + if (request.getParameter("delete-ad") != null) { + + // Edit Process + long adId = Long.parseLong(request.getParameter("adId")); + Ad deleteAd = DaoFactory.getAdsDao().findUniqueAdId(adId); + DaoFactory.getAdsDao().delete(deleteAd); + } 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 42f3e45ab7..1e5cd96c85 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -18,4 +18,6 @@ public interface Ads { List getUserAds(long id); void update(Ad editAd); + + void delete(Ad deleteAd); } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 873cd01079..fdf62e4c45 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -139,4 +139,17 @@ public void update(Ad ad) { } } + + @Override + public void delete(Ad ad) { + String query = "DELETE FROM ads WHERE id=?"; + try{ + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, ad.getId()); + stmt.executeUpdate(); + }catch(SQLException e){ + throw new RuntimeException("Error deleting ad", e); + + } + } } diff --git a/src/main/webapp/WEB-INF/ads/update.jsp b/src/main/webapp/WEB-INF/ads/update.jsp index 91244a6133..2b57f1e8a9 100644 --- a/src/main/webapp/WEB-INF/ads/update.jsp +++ b/src/main/webapp/WEB-INF/ads/update.jsp @@ -27,6 +27,15 @@
    + +
    + + + +
    \ No newline at end of file From ad68541e13ece640f47406f4f1e20325e706664f Mon Sep 17 00:00:00 2001 From: Paul Wagner Date: Thu, 16 Feb 2023 14:15:22 -0600 Subject: [PATCH 21/24] adding styling to landing page, nav bar and ads/index --- src/main/webapp/WEB-INF/ads/index.jsp | 38 ++++++++-- src/main/webapp/WEB-INF/partials/head.jsp | 2 + src/main/webapp/WEB-INF/partials/navbar.jsp | 27 ++++--- src/main/webapp/css/landingPg.css | 69 ++++++++++++++++++ ..._2023-02-16_at_12_48_53_PM-transformed.png | Bin 0 -> 202621 bytes src/main/webapp/imgs/Wave.jpeg | Bin 0 -> 496333 bytes src/main/webapp/imgs/adlister_bg.png | Bin 0 -> 1313880 bytes src/main/webapp/imgs/images.png | Bin 0 -> 1813 bytes src/main/webapp/index.jsp | 14 +++- 9 files changed, 128 insertions(+), 22 deletions(-) create mode 100644 src/main/webapp/css/landingPg.css create mode 100644 src/main/webapp/imgs/Screen_Shot_2023-02-16_at_12_48_53_PM-transformed.png create mode 100644 src/main/webapp/imgs/Wave.jpeg create mode 100644 src/main/webapp/imgs/adlister_bg.png create mode 100644 src/main/webapp/imgs/images.png diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index bc5bf48b60..149e814342 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -11,7 +11,7 @@
    -

    Here Are all the ads!

    +

    Here Are all the ads!

    <%-- --%> <%--
    --%> @@ -20,20 +20,42 @@ <%-- --%> <%--
    --%> <%--
    --%> -
    +
    + + +<%--
    --%> +<%-- ...--%> +<%--
    --%> +<%--
    ${ad.title}
    --%> +<%--

    Some quick example text to build on the card title and make up the bulk of the card's content.

    --%> +<%-- View Ad--%> +<%--
    --%> + + + - + + + + +
    + -
    <%--
    --%> diff --git a/src/main/webapp/WEB-INF/partials/head.jsp b/src/main/webapp/WEB-INF/partials/head.jsp index 9fa9545f60..dc85d9724f 100644 --- a/src/main/webapp/WEB-INF/partials/head.jsp +++ b/src/main/webapp/WEB-INF/partials/head.jsp @@ -1,2 +1,4 @@ ${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 4a13c110d3..e61b43adcc 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -36,31 +36,36 @@ <%--
    --%> <%----%> -