From d25d1a7255532b42ce68b65b6b8727a3adfef56c Mon Sep 17 00:00:00 2001 From: Jose Diaz Date: Mon, 14 Feb 2022 12:28:51 -0600 Subject: [PATCH 01/58] updated pom.xml file --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 22a2e9c039..9bfc99d890 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ org.mindrot jbcrypt - 0.3m + 0.4 javax.servlet @@ -42,7 +42,7 @@ mysql mysql-connector-java - 6.0.5 + 8.0.23 From 976cc3fee0120d499ea8a37390e728016f1c8f29 Mon Sep 17 00:00:00 2001 From: aidaj gutierrez Date: Mon, 14 Feb 2022 17:03:37 -0600 Subject: [PATCH 02/58] adde search servlet - search jsp --- .../controllers/SearchAdsServlet.java | 37 +++++++++++++++++++ .../java/com/codeup/adlister/dao/Ads.java | 4 ++ .../com/codeup/adlister/dao/ListAdsDao.java | 5 +++ .../com/codeup/adlister/dao/MySQLAdsDao.java | 16 ++++++++ src/main/webapp/WEB-INF/ads/search.jsp | 33 +++++++++++++++++ src/main/webapp/WEB-INF/ads/searchresult.jsp | 16 ++++++++ src/main/webapp/WEB-INF/partials/navbar.jsp | 7 ++++ 7 files changed, 118 insertions(+) create mode 100644 src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java create mode 100644 src/main/webapp/WEB-INF/ads/search.jsp create mode 100644 src/main/webapp/WEB-INF/ads/searchresult.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java b/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java new file mode 100644 index 0000000000..2c6649906e --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java @@ -0,0 +1,37 @@ +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.util.List; + +@WebServlet("/ads/search") +public class SearchAdsServlet extends HttpServlet { + + protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String keyword = request.getParameter("keyword"); + + + boolean inputHasErrors = keyword.isEmpty(); + + + if (inputHasErrors){ + response.sendRedirect("/ads");// needs the page to be redirected + return; + } + + List ads = DaoFactory.getAdsDao().search(keyword); + request.setAttribute("ads", ads); + System.out.println(ads); + request.getRequestDispatcher("/WEB-INF/ads/search.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 79dc59f484..f7abb6802d 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); + + + // search for ads---- + List search(String keyword); } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 8d3baaa369..3c35f9680a 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -27,6 +27,11 @@ public Long insert(Ad ad) { return ad.getId(); } + @Override + public List search(String keyword) { + 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 d58c45f985..45bd662626 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -54,6 +54,22 @@ public Long insert(Ad ad) { throw new RuntimeException("Error creating a new ad.", e); } } +//Method for search ads--------------------------- + @Override + public List search(String keyword) { + String query = "SELECT * FROM ads WHERE title LIKE ? OR description LIKE ?"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, keyword ); + stmt.setString(2, keyword); + ResultSet rs= stmt.executeQuery(); + return createAdsFromResults(rs); + }catch(SQLException e){ + throw new RuntimeException("Error finding ad", e); + } + } + + // --------------------------- private Ad extractAd(ResultSet rs) throws SQLException { return new Ad( diff --git a/src/main/webapp/WEB-INF/ads/search.jsp b/src/main/webapp/WEB-INF/ads/search.jsp new file mode 100644 index 0000000000..550359f6bb --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/search.jsp @@ -0,0 +1,33 @@ +<%-- + Created by IntelliJ IDEA. + User: aidajimenez + Date: 2/14/22 + Time: 3:07 PM + To change this template use File | Settings | File Templates. +--%> + +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + Search + + + +
+

You Search Results ${sessionScope.user.username}!

+ +
+

${ad.title}

+

${ad.description}

+
+
+ +
+ + + diff --git a/src/main/webapp/WEB-INF/ads/searchresult.jsp b/src/main/webapp/WEB-INF/ads/searchresult.jsp new file mode 100644 index 0000000000..096771eebf --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/searchresult.jsp @@ -0,0 +1,16 @@ +<%-- + Created by IntelliJ IDEA. + User: aidajimenez + Date: 2/14/22 + Time: 4:52 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Searched Ads + + + + + diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 8e1f98f662..d8b11e8452 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -6,7 +6,14 @@ From 067dbb013156b77ff1a3f40e49234d871136dbe4 Mon Sep 17 00:00:00 2001 From: Sabastain Wakoyi Date: Tue, 15 Feb 2022 09:11:17 -0600 Subject: [PATCH 03/58] users and ads section edited --- .../com/codeup/adlister/dao/ListAdsDao.java | 2 + .../com/codeup/adlister/dao/MySQLAdsDao.java | 116 +++++++++++++++++- .../codeup/adlister/dao/MySQLUsersDao.java | 79 ++++++++++++ .../java/com/codeup/adlister/dao/Users.java | 5 + 4 files changed, 201 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 8d3baaa369..05b5dba864 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -15,6 +15,7 @@ public List all() { return ads; } + public Long insert(Ad ad) { // make sure we have ads if (ads == null) { @@ -27,6 +28,7 @@ public Long insert(Ad ad) { return ad.getId(); } + 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 d58c45f985..bbb91bc1cd 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -71,4 +71,118 @@ private List createAdsFromResults(ResultSet rs) throws SQLException { } return ads; } -} + + + + + + + //this is for ViewAdServlet + + + //It makes a SQL query that searches by ID, (which cannot be the same unlike a title) + public Ad findByID(Long id) { + String query = "SELECT * FROM ads WHERE id = ? LIMIT 1"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, id); + // testng the expected messages. + System.out.println(stmt); + System.out.println(stmt.executeQuery()); + ResultSet rs = stmt.executeQuery(); + // We store the results from the query inside of a resultSet + rs.next(); + return extractAd(rs); + } catch (SQLException e) { + throw new RuntimeException("Error finding an Ad by ID", e); + } + } + + + public List searchByTitle(String title) { + String query = "SELECT * FROM ads WHERE title LIKE ?"; + String searchWildCards = "%" + title + "%"; + PreparedStatement stmt = null; + try { + stmt = connection.prepareStatement(query); + stmt.setString(1, searchWildCards); + ResultSet rs = stmt.executeQuery(); + rs.next(); + return createAdsFromResults(rs); + } catch (SQLException e) { + throw new RuntimeException("Error finding an Ad by Title", e); + } + + } + + + public List findByUserID(Long userId) { + String query = "SELECT * FROM ads WHERE user_id = ?"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, userId); + System.out.println(stmt); + System.out.println(stmt.executeQuery()); + ResultSet rs = stmt.executeQuery(); + // We store the results from the query insides of a resultSet variable, + // so we can iterate over the results, and grab the Ad + // rs.next(); + return createAdsFromResults(rs); + } catch (SQLException e) { + throw new RuntimeException("Error finding Ads by user id.", e); + } + } + + public void deleteByID(Long id) { + String query = "DELETE FROM ads WHERE id = ? LIMIT 1"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, id); + // System.out.println(stmt); + // System.out.println(stmt.executeQuery()); + stmt.execute(); + } catch (SQLException e) { + throw new RuntimeException("Error deleting an Ad by ID", e); + } + } + + public void editByID(Long id, String newTitle, String newDesc) { + + String queryTitle = "UPDATE ads set title = ? where id = ?"; + String queryDesc = "UPDATE ads set description = ? where id = ?"; + try { + PreparedStatement stmtTitle = connection.prepareStatement(queryTitle); + PreparedStatement stmtDesc = connection.prepareStatement(queryDesc); + stmtTitle.setString(1, newTitle); + stmtDesc.setString(1, newDesc); + stmtTitle.setLong(2, id); + stmtDesc.setLong(2, id); + // System.out.println(stmt); + // System.out.println(stmt.executeQuery()); + stmtTitle.executeUpdate(); + stmtDesc.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException("Error Editing an Ad by ID", e); + } + } + + + public List listByCatID(Long catID) { + // ? will be replaced with the ID that was clicked. + String query = "SELECT * FROM ads WHERE id IN (SELECT ad_id FROM ad_cat WHERE cat_id = ?);"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, catID); + System.out.println(stmt); + // System.out.println(stmt.executeQuery()); + ResultSet rs = stmt.executeQuery(); + // rs.next(); + return createAdsFromResults(rs); + } catch (SQLException e) { + throw new RuntimeException("Error listing ads by cat ID.", e); + } + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 4e69e57044..880306e966 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -51,6 +51,85 @@ public Long insert(User user) { } } + @Override + public User findByUserID(long id) { + String query = "SELECT * FROM users WHERE id = ? LIMIT 1"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, id); + return extractUser(stmt.executeQuery()); + } catch (SQLException e) { + throw new RuntimeException("Error finding a user by username", e); + } + } + + @Override + public void updateUserPassword(long id, String hashPassword) { + // ? will be replaced with the ID that wants to be deleted. + String updateSql = "UPDATE users set password = ? where id = ?"; + try { + PreparedStatement stmt = connection.prepareStatement(updateSql); + stmt.setString(1, hashPassword); + stmt.setLong(2, id); + // testing for the expected messages. + System.out.println(stmt); + System.out.println(stmt.executeQuery()); + stmt.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException("Error Editing an Ad by ID", e); + } + + } + + @Override + public void updateUserEmail(long id, String email) { + // ? will be replaced with the ID that is to be deleted + String updateSql = "UPDATE users set email = ? where id = ?"; + + try { + PreparedStatement stmt = connection.prepareStatement(updateSql); + stmt.setString(1, email); + stmt.setLong(2, id); + // testing for expected messages. + System.out.println(stmt); + System.out.println(stmt.executeQuery()); + // This executes a query + stmt.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException("Error Editing an Ad by ID", e); + } + } + + + + @Override + public User findByUserEmail(String email) { + String query = "SELECT * FROM users WHERE email = ? LIMIT 1"; + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, email); + return extractUser(stmt.executeQuery()); + } catch (SQLException e) { + throw new RuntimeException("Error finding a user by email", e); + } + + } + + @Override + public void deleteByID(long id) { + String query = "DELETE FROM users WHERE id = ? LIMIT 1";//? will be replaced by the ID to be deleted + try { + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setLong(1, id); + System.out.println(stmt); + System.out.println(stmt.executeQuery()); + stmt.execute();// EXECUTES A QUERY + } catch (SQLException e){ + throw new RuntimeException("Error deleting a User by ID, e"); + } + + } + private User extractUser(ResultSet rs) throws SQLException { if (! rs.next()) { return null; diff --git a/src/main/java/com/codeup/adlister/dao/Users.java b/src/main/java/com/codeup/adlister/dao/Users.java index 62da74d20b..c0dcabce75 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -7,4 +7,9 @@ public interface Users { User findByUsername(String username); Long insert(User user); + User findByUserID(long id); + void updateUserPassword(long id, String hashPassword); + void updateUserEmail(long id, String email); + User findByUserEmail(String email); + void deleteByID(long id); } From 2b1f604828e8e58da3c43176c897034f28b5cf13 Mon Sep 17 00:00:00 2001 From: Jose Diaz Date: Tue, 15 Feb 2022 09:20:22 -0600 Subject: [PATCH 04/58] working on show individual ad --- migration.sql | 20 +++++++++++++- .../controllers/IndividualAdServlet.java | 27 +++++++++++++++++++ .../java/com/codeup/adlister/dao/Ads.java | 3 +++ .../com/codeup/adlister/dao/ListAdsDao.java | 2 +- .../com/codeup/adlister/dao/MySQLAdsDao.java | 16 +++++++++++ src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp | 27 +++++++++++++++++++ 6 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java create mode 100644 src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp diff --git a/migration.sql b/migration.sql index a70d2eab38..efa7027e7f 100644 --- a/migration.sql +++ b/migration.sql @@ -2,10 +2,12 @@ USE adlister_db; DROP TABLE IF EXISTS ads; DROP TABLE IF EXISTS users; +DROP TABLE IF EXISTS categories; +DROP TABLE IF EXISTS ads_categories; CREATE TABLE users ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, - username VARCHAR(240) NOT NULL, + username VARCHAR(240) NOT NULL UNIQUE, email VARCHAR(240) NOT NULL, password VARCHAR(255) NOT NULL, PRIMARY KEY (id) @@ -20,3 +22,19 @@ CREATE TABLE ads ( FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); +# table to store category names being created +CREATE TABLE categories ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + category VARCHAR(240) UNIQUE NOT NULL, + PRIMARY KEY (id) +); +# table for the categories each add can fit into +CREATE TABLE ads_categories ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + ads_id INT UNSIGNED NOT NULL, + category_id INT UNSIGNED NOT NULL, + FOREIGN KEY (ads_id) REFERENCES ads(id), + FOREIGN KEY (category_id) REFERENCES categories(id) +); + + diff --git a/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java new file mode 100644 index 0000000000..22c408ace8 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java @@ -0,0 +1,27 @@ +package com.codeup.adlister.controllers; + +import com.codeup.adlister.dao.DaoFactory; + +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.IndividualAdServlet", urlPatterns = "/ads/individualAd") +public class IndividualAdServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + Long individualAd = Long.parseLong(request.getParameter("loneAd")); + DaoFactory.getAdsDao().individualAd(individualAd); + request.setAttribute("loneAd", DaoFactory.getAdsDao().individualAd(individualAd)); + + + request.getRequestDispatcher("/WEB-INF/ShowIndvAd.jsp").forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + + } +} diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 79dc59f484..a8143a3d7b 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,6 @@ public interface Ads { List all(); // insert a new ad and return the new ad's id Long insert(Ad ad); + // get a single add to return + Ad individualAd(Long 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..7438e6db81 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.List; -public class ListAdsDao implements Ads { +public class ListAdsDao { private List ads; public List all() { diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index d58c45f985..e9d65eb020 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -55,6 +55,22 @@ public Long insert(Ad ad) { } } + @Override + public Ad individualAd(Long ad) { +// selecting all ads from the ads table with the specific id to show it individually + String insertQuery = "SELECT * FROM ads WHERE id = ?"; + try { + PreparedStatement stmt = connection.prepareStatement(insertQuery); + stmt.setLong(1, ad); + stmt.executeUpdate(); + ResultSet rs = stmt.executeQuery(); + rs.next(); + 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/webapp/WEB-INF/ads/ShowIndvAd.jsp b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp new file mode 100644 index 0000000000..adf0161f0b --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp @@ -0,0 +1,27 @@ +<%-- + Created by IntelliJ IDEA. + User: jose + Date: 2/14/22 + Time: 2:03 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + +
+

Your Ad

+

Title: ${sessionScope.ad.title}

+

Description: ${sessionScope.ad.description}

+

User: ${sessionScope.user.username}

+
+ + + From 1c6c272450ff6cf9c29eb464464a0d0e3d51773e Mon Sep 17 00:00:00 2001 From: Jose Diaz Date: Tue, 15 Feb 2022 09:45:40 -0600 Subject: [PATCH 05/58] updated servlet --- migration.sql | 2 +- .../com/codeup/adlister/controllers/IndividualAdServlet.java | 5 +++-- src/main/java/com/codeup/adlister/dao/Ads.java | 2 +- src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/migration.sql b/migration.sql index efa7027e7f..91153e98c1 100644 --- a/migration.sql +++ b/migration.sql @@ -8,7 +8,7 @@ DROP TABLE IF EXISTS ads_categories; CREATE TABLE users ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(240) NOT NULL UNIQUE, - email VARCHAR(240) NOT NULL, + email VARCHAR(240) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); diff --git a/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java index 22c408ace8..432987b8dd 100644 --- a/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java @@ -1,6 +1,7 @@ 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; @@ -14,8 +15,8 @@ public class IndividualAdServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Long individualAd = Long.parseLong(request.getParameter("loneAd")); - DaoFactory.getAdsDao().individualAd(individualAd); - request.setAttribute("loneAd", DaoFactory.getAdsDao().individualAd(individualAd)); + Ad ad = DaoFactory.getAdsDao().findById(individualAd); + request.setAttribute("loneAd", individualAd); request.getRequestDispatcher("/WEB-INF/ShowIndvAd.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 a8143a3d7b..1b5d657d37 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -11,5 +11,5 @@ public interface Ads { // insert a new ad and return the new ad's id Long insert(Ad ad); // get a single add to return - Ad individualAd(Long ad); + Ad findById(Long ad); } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index e9d65eb020..573b36daab 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -56,7 +56,7 @@ public Long insert(Ad ad) { } @Override - public Ad individualAd(Long ad) { + public Ad findById(Long ad) { // selecting all ads from the ads table with the specific id to show it individually String insertQuery = "SELECT * FROM ads WHERE id = ?"; try { From 64cbebe03fcb5a2ca7da27833aa76af466bb2db9 Mon Sep 17 00:00:00 2001 From: Andrawes Batshoun Date: Tue, 15 Feb 2022 09:47:04 -0600 Subject: [PATCH 06/58] view ads in profile, started error messages --- .../adlister/controllers/RegisterServlet.java | 3 +- .../controllers/ViewProfileServlet.java | 5 ++++ .../java/com/codeup/adlister/dao/Ads.java | 4 +++ .../com/codeup/adlister/dao/ListAdsDao.java | 7 +++++ .../com/codeup/adlister/dao/MySQLAdsDao.java | 15 ++++++++++ src/main/webapp/WEB-INF/profile.jsp | 29 +++++++++++++++---- 6 files changed, 57 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..bb3e3375d1 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -29,7 +29,8 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) || (! password.equals(passwordConfirmation)); if (inputHasErrors) { - response.sendRedirect("/register"); + +// response.sendRedirect("/register"); return; } diff --git a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java index e1b8941067..a2541d3eab 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java @@ -1,5 +1,8 @@ package com.codeup.adlister.controllers; +import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.models.User; + import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -14,6 +17,8 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t response.sendRedirect("/login"); return; } + User user = (User) request.getSession().getAttribute("user"); + request.setAttribute("userAd", DaoFactory.getAdsDao().getAd(user)); 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 79dc59f484..e019b34a07 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -1,12 +1,16 @@ package com.codeup.adlister.dao; import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; import java.util.List; public interface Ads { // get a list of all the ads List all(); + //get a list of ads by user id + List getAd(User user); // insert a new ad and return the new ad's id Long insert(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..d92509a52e 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -1,6 +1,7 @@ package com.codeup.adlister.dao; import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; import java.util.ArrayList; import java.util.List; @@ -15,6 +16,12 @@ public List all() { return ads; } + @Override + public List getAd(User user) { + return null; + } + + public Long insert(Ad ad) { // make sure we have ads if (ads == null) { diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index d58c45f985..0cbfa87c44 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -1,6 +1,7 @@ package com.codeup.adlister.dao; import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; import com.mysql.cj.jdbc.Driver; import java.io.FileInputStream; @@ -38,6 +39,20 @@ public List all() { } } + @Override + public List getAd(User user) { + String sql = "SELECT * FROM ads WHERE user_id = " + user.getId() ; + PreparedStatement stmt = null; + try { + stmt = connection.prepareStatement(sql); + ResultSet rs = stmt.executeQuery(); + return createAdsFromResults(rs); + }catch (SQLException e){ + throw new RuntimeException("Error retrieving ads.", e); + } + } + + @Override public Long insert(Ad ad) { try { diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 05e3fa7a91..938a5e1974 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -1,16 +1,35 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - + - + + +
+

Welcome, !

+
+ +
+ + + + + +
+

${ad.title}

+

${ad.description}

+
+ + +
+ + +
-
-

Welcome, ${sessionScope.user.username}!

-
From 9fb661235c41a4e055bd4ab0b0b9ed3fbfdc8908 Mon Sep 17 00:00:00 2001 From: aidaj gutierrez Date: Tue, 15 Feb 2022 10:39:30 -0600 Subject: [PATCH 07/58] somthing changed --- src/main/java/com/codeup/adlister/dao/Ads.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 1b5d657d37..d4da9cc2c7 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -12,4 +12,6 @@ public interface Ads { Long insert(Ad ad); // get a single add to return Ad findById(Long ad); + + } From 232cca0262a2363ec80a6c4b8f70960ec4c2a232 Mon Sep 17 00:00:00 2001 From: Sabastain Wakoyi Date: Tue, 15 Feb 2022 11:22:44 -0600 Subject: [PATCH 08/58] edited ads interface --- src/main/java/com/codeup/adlister/dao/Ads.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 1b5d657d37..f83c5a593b 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -12,4 +12,14 @@ public interface Ads { Long insert(Ad ad); // get a single add to return Ad findById(Long ad); + //find ads by their ids + Ad findByID(Long id); + //Searching ads by title + List searchByTitle(String query); + //listing ads on profile page + List findByUserID(Long userId); + + void deleteByID(Long id); + void editByID(Long id, String newTitle, String newDesc); + List listByCatID(Long catID); } From 413d2725ba8080c9fe4fcfce0ebb576d0ccac6ac Mon Sep 17 00:00:00 2001 From: Jose Diaz Date: Tue, 15 Feb 2022 11:35:22 -0600 Subject: [PATCH 09/58] updated mysqldoa --- migration.sql | 1 + .../com/codeup/adlister/dao/MySQLAdsDao.java | 36 +++++++++---------- src/main/webapp/WEB-INF/ads/index.jsp | 2 +- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/migration.sql b/migration.sql index 91153e98c1..76311d2418 100644 --- a/migration.sql +++ b/migration.sql @@ -33,6 +33,7 @@ CREATE TABLE ads_categories ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, ads_id INT UNSIGNED NOT NULL, category_id INT UNSIGNED NOT NULL, + PRIMARY KEY (id), FOREIGN KEY (ads_id) REFERENCES ads(id), FOREIGN KEY (category_id) REFERENCES categories(id) ); diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 7b66058e0e..3a8a6c357e 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -58,7 +58,7 @@ public Long insert(Ad ad) { @Override public Ad findById(Long ad) { // selecting all ads from the ads table with the specific id to show it individually - String insertQuery = "SELECT * FROM ads WHERE id = ?"; + String insertQuery = "SELECT * FROM ads WHERE id = ? LIMIT 1"; try { PreparedStatement stmt = connection.prepareStatement(insertQuery); stmt.setLong(1, ad); @@ -97,22 +97,22 @@ private List createAdsFromResults(ResultSet rs) throws SQLException { //It makes a SQL query that searches by ID, (which cannot be the same unlike a title) - public Ad findByID(Long id) { - String query = "SELECT * FROM ads WHERE id = ? LIMIT 1"; - try { - PreparedStatement stmt = connection.prepareStatement(query); - stmt.setLong(1, id); - // testng the expected messages. - System.out.println(stmt); - System.out.println(stmt.executeQuery()); - ResultSet rs = stmt.executeQuery(); - // We store the results from the query inside of a resultSet - rs.next(); - return extractAd(rs); - } catch (SQLException e) { - throw new RuntimeException("Error finding an Ad by ID", e); - } - } +// public Ad findByID(Long id) { +// String query = "SELECT * FROM ads WHERE id = ? LIMIT 1"; +// try { +// PreparedStatement stmt = connection.prepareStatement(query); +// stmt.setLong(1, id); +// // testng the expected messages. +// System.out.println(stmt); +// System.out.println(stmt.executeQuery()); +// ResultSet rs = stmt.executeQuery(); +// // We store the results from the query inside of a resultSet +// rs.next(); +// return extractAd(rs); +// } catch (SQLException e) { +// throw new RuntimeException("Error finding an Ad by ID", e); +// } +// } public List searchByTitle(String title) { @@ -185,7 +185,7 @@ public void editByID(Long id, String newTitle, String newDesc) { public List listByCatID(Long catID) { // ? will be replaced with the ID that was clicked. - String query = "SELECT * FROM ads WHERE id IN (SELECT ad_id FROM ad_cat WHERE cat_id = ?);"; + String query = "SELECT * FROM ads WHERE id IN (SELECT ads_id FROM ads_categories WHERE category_id = ?);"; try { PreparedStatement stmt = connection.prepareStatement(query); stmt.setLong(1, catID); diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 6f4371f0bb..08c6ca1fde 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -14,7 +14,7 @@
-

${ad.title}

+

${ad.title}

${ad.description}

From 9a4c3fbdbf00f37c8ece4f9354ac82ce6202b461 Mon Sep 17 00:00:00 2001 From: aidaj gutierrez Date: Tue, 15 Feb 2022 11:35:47 -0600 Subject: [PATCH 10/58] comented objects --- .../java/com/codeup/adlister/dao/Ads.java | 1 + .../com/codeup/adlister/dao/ListAdsDao.java | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 79f25eaaf7..7f55b88d65 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -16,5 +16,6 @@ public interface Ads { // get a single add to return Ad findById(Long ad); + List search(String keyword); } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 7f9a33e865..14ff91041b 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -1,6 +1,7 @@ package com.codeup.adlister.dao; import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; import java.util.ArrayList; import java.util.List; @@ -15,10 +16,12 @@ public List all() { return ads; } - @Override - public List getAd(User user) { - return null; - } +// +// +// @Override +// public List getAd(User user) { +// return null; +// } public Long insert(Ad ad) { @@ -33,10 +36,11 @@ public Long insert(Ad ad) { return ad.getId(); } - @Override - public List search(String keyword) { - return null; - } +// +// @Override +// public List search(String keyword) { +// return null; +// } private List generateAds() { List ads = new ArrayList<>(); From f75e785dc4348d8612c80e0adfb1e8312ed0fd18 Mon Sep 17 00:00:00 2001 From: Andrawes Batshoun Date: Tue, 15 Feb 2022 14:19:34 -0600 Subject: [PATCH 11/58] added alert for empty fields --- .../adlister/controllers/RegisterServlet.java | 18 +++++++++++++++++- .../com/codeup/adlister/dao/ListAdsDao.java | 2 +- src/main/webapp/WEB-INF/register.jsp | 4 ++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index bb3e3375d1..ff29d095f6 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -21,6 +21,22 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String email = request.getParameter("email"); String password = request.getParameter("password"); String passwordConfirmation = request.getParameter("confirm_password"); + String errorMessage = ""; + + if(username.isEmpty()){ + errorMessage += "alert('Username is required for registration');"; + } + if(email.isEmpty()){ + errorMessage += "alert('Email is required for registration');"; + } + if (password.isEmpty()){ + errorMessage += "alert('Password is required for registration');"; + } + if(! password.equals(passwordConfirmation)){ + errorMessage += "alert('Passwords do not match');"; + } + request.getSession().setAttribute("error", errorMessage); + // validate input boolean inputHasErrors = username.isEmpty() @@ -30,7 +46,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) if (inputHasErrors) { -// response.sendRedirect("/register"); + response.sendRedirect("/register"); return; } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index bd17ad33f0..792c02eba3 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -16,7 +16,7 @@ public List all() { return ads; } - @Override + public List getAd(User user) { return null; } diff --git a/src/main/webapp/WEB-INF/register.jsp b/src/main/webapp/WEB-INF/register.jsp index 4b64e10a43..ed81b52ad9 100644 --- a/src/main/webapp/WEB-INF/register.jsp +++ b/src/main/webapp/WEB-INF/register.jsp @@ -29,5 +29,9 @@ + + From f35e1f1b8dd6cfaecd201097cbd148becf70fc5c Mon Sep 17 00:00:00 2001 From: aidaj gutierrez Date: Tue, 15 Feb 2022 15:04:10 -0600 Subject: [PATCH 12/58] search finished and modified navbar --- .../controllers/SearchAdsServlet.java | 8 +- .../java/com/codeup/adlister/dao/Ads.java | 5 +- .../com/codeup/adlister/dao/ListAdsDao.java | 2 +- .../com/codeup/adlister/dao/MySQLAdsDao.java | 253 ++++++++++-------- src/main/webapp/WEB-INF/ads/search.jsp | 23 +- src/main/webapp/WEB-INF/partials/navbar.jsp | 73 +++-- 6 files changed, 218 insertions(+), 146 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java b/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java index 2c6649906e..4aa3a8da46 100644 --- a/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java @@ -12,24 +12,24 @@ import java.io.IOException; import java.util.List; -@WebServlet("/ads/search") +@WebServlet(name = "controllers.SearchAdsServlet", urlPatterns = "/ads/search") public class SearchAdsServlet extends HttpServlet { protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String keyword = request.getParameter("keyword"); - boolean inputHasErrors = keyword.isEmpty(); +// boolean inputHasErrors = keyword.isEmpty(); - if (inputHasErrors){ + if (keyword.isEmpty()){ response.sendRedirect("/ads");// needs the page to be redirected return; } List ads = DaoFactory.getAdsDao().search(keyword); request.setAttribute("ads", ads); - System.out.println(ads); +// System.out.println(ads); request.getRequestDispatcher("/WEB-INF/ads/search.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 ca29c6d067..993742212d 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -13,13 +13,14 @@ public interface Ads { List getAd(User user); // insert a new ad and return the new ad's id Long insert(Ad ad); - // get a single add to return Ad findById(Long ad); - + // search ads List search(String keyword); + + } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 14ff91041b..325b5ff640 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -36,7 +36,7 @@ public Long insert(Ad ad) { return ad.getId(); } -// + // @Override // public List search(String keyword) { // 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 258e800c2f..79790a28ff 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -69,14 +69,17 @@ public Long insert(Ad ad) { throw new RuntimeException("Error creating a new ad.", e); } } -//Method for search ads--------------------------- +//Method for search ads---------------------------AG @Override public List search(String keyword) { - String query = "SELECT * FROM ads WHERE title LIKE ? OR description LIKE ?"; +// String query = "SELECT * FROM ads WHERE title LIKE ? OR description LIKE ?"; + String query = "SELECT * FROM ads WHERE title LIKE ? "; try { PreparedStatement stmt = connection.prepareStatement(query); stmt.setString(1, keyword ); - stmt.setString(2, keyword); + // change above code to : + stmt.setString(1, '%' + keyword + '%'); +// stmt.setString(2, keyword); ResultSet rs= stmt.executeQuery(); return createAdsFromResults(rs); }catch(SQLException e){ @@ -119,116 +122,140 @@ private List createAdsFromResults(ResultSet rs) throws SQLException { return ads; } - - - - - - //this is for ViewAdServlet - - - //It makes a SQL query that searches by ID, (which cannot be the same unlike a title) - public Ad findByID(Long id) { - String query = "SELECT * FROM ads WHERE id = ? LIMIT 1"; - try { - PreparedStatement stmt = connection.prepareStatement(query); - stmt.setLong(1, id); - // testng the expected messages. - System.out.println(stmt); - System.out.println(stmt.executeQuery()); - ResultSet rs = stmt.executeQuery(); - // We store the results from the query inside of a resultSet - rs.next(); - return extractAd(rs); - } catch (SQLException e) { - throw new RuntimeException("Error finding an Ad by ID", e); - } - } - - - public List searchByTitle(String title) { - String query = "SELECT * FROM ads WHERE title LIKE ?"; - String searchWildCards = "%" + title + "%"; - PreparedStatement stmt = null; - try { - stmt = connection.prepareStatement(query); - stmt.setString(1, searchWildCards); - ResultSet rs = stmt.executeQuery(); - rs.next(); - return createAdsFromResults(rs); - } catch (SQLException e) { - throw new RuntimeException("Error finding an Ad by Title", e); - } - - } - - - public List findByUserID(Long userId) { - String query = "SELECT * FROM ads WHERE user_id = ?"; - try { - PreparedStatement stmt = connection.prepareStatement(query); - stmt.setLong(1, userId); - System.out.println(stmt); - System.out.println(stmt.executeQuery()); - ResultSet rs = stmt.executeQuery(); - // We store the results from the query insides of a resultSet variable, - // so we can iterate over the results, and grab the Ad - // rs.next(); - return createAdsFromResults(rs); - } catch (SQLException e) { - throw new RuntimeException("Error finding Ads by user id.", e); - } - } - - public void deleteByID(Long id) { - String query = "DELETE FROM ads WHERE id = ? LIMIT 1"; - try { - PreparedStatement stmt = connection.prepareStatement(query); - stmt.setLong(1, id); - // System.out.println(stmt); - // System.out.println(stmt.executeQuery()); - stmt.execute(); - } catch (SQLException e) { - throw new RuntimeException("Error deleting an Ad by ID", e); - } - } - - public void editByID(Long id, String newTitle, String newDesc) { - - String queryTitle = "UPDATE ads set title = ? where id = ?"; - String queryDesc = "UPDATE ads set description = ? where id = ?"; - try { - PreparedStatement stmtTitle = connection.prepareStatement(queryTitle); - PreparedStatement stmtDesc = connection.prepareStatement(queryDesc); - stmtTitle.setString(1, newTitle); - stmtDesc.setString(1, newDesc); - stmtTitle.setLong(2, id); - stmtDesc.setLong(2, id); - // System.out.println(stmt); - // System.out.println(stmt.executeQuery()); - stmtTitle.executeUpdate(); - stmtDesc.executeUpdate(); - } catch (SQLException e) { - throw new RuntimeException("Error Editing an Ad by ID", e); - } - } - - - public List listByCatID(Long catID) { - // ? will be replaced with the ID that was clicked. - String query = "SELECT * FROM ads WHERE id IN (SELECT ad_id FROM ad_cat WHERE cat_id = ?);"; - try { - PreparedStatement stmt = connection.prepareStatement(query); - stmt.setLong(1, catID); - System.out.println(stmt); - // System.out.println(stmt.executeQuery()); - ResultSet rs = stmt.executeQuery(); - // rs.next(); - return createAdsFromResults(rs); - } catch (SQLException e) { - throw new RuntimeException("Error listing ads by cat ID.", e); - } - } + // findbyId Method - To search by ad id + + // ********** come back and review this -AGutierrez ******** +// @Override +// public Ad findById(long id) { +// try { +// String query = "SELECT * FROM ads WHERE id = ? LIMIT 1"; +// PreparedStatement stmt = connection.prepareStatement(query); +// stmt.setString(1, String.valueOf(id)); +// ResultSet rs = stmt.executeQuery(); +// if (rs.next()) { +// return extractAd(rs); +// } +// return null; +// } catch (SQLException e) { +// throw new RuntimeException("Error finding a Ad by Id", e); +// } +// } +// + + // find ads by category +// public List getAdsFromCategory(String category){} + + +//***************************************************************************** + + + +// +// //this is for ViewAdServlet +// +// +// //It makes a SQL query that searches by ID, (which cannot be the same unlike a title) +// public Ad findByID(Long id) { +// String query = "SELECT * FROM ads WHERE id = ? LIMIT 1"; +// try { +// PreparedStatement stmt = connection.prepareStatement(query); +// stmt.setLong(1, id); +// // testng the expected messages. +// System.out.println(stmt); +// System.out.println(stmt.executeQuery()); +// ResultSet rs = stmt.executeQuery(); +// // We store the results from the query inside of a resultSet +// rs.next(); +// return extractAd(rs); +// } catch (SQLException e) { +// throw new RuntimeException("Error finding an Ad by ID", e); +// } +// } +// +// +// public List searchByTitle(String title) { +// String query = "SELECT * FROM ads WHERE title LIKE ?"; +// String searchWildCards = "%" + title + "%"; +// PreparedStatement stmt = null; +// try { +// stmt = connection.prepareStatement(query); +// stmt.setString(1, searchWildCards); +// ResultSet rs = stmt.executeQuery(); +// rs.next(); +// return createAdsFromResults(rs); +// } catch (SQLException e) { +// throw new RuntimeException("Error finding an Ad by Title", e); +// } +// +// } +// +// +// public List findByUserID(Long userId) { +// String query = "SELECT * FROM ads WHERE user_id = ?"; +// try { +// PreparedStatement stmt = connection.prepareStatement(query); +// stmt.setLong(1, userId); +// System.out.println(stmt); +// System.out.println(stmt.executeQuery()); +// ResultSet rs = stmt.executeQuery(); +// // We store the results from the query insides of a resultSet variable, +// // so we can iterate over the results, and grab the Ad +// // rs.next(); +// return createAdsFromResults(rs); +// } catch (SQLException e) { +// throw new RuntimeException("Error finding Ads by user id.", e); +// } +// } +// +// public void deleteByID(Long id) { +// String query = "DELETE FROM ads WHERE id = ? LIMIT 1"; +// try { +// PreparedStatement stmt = connection.prepareStatement(query); +// stmt.setLong(1, id); +// // System.out.println(stmt); +// // System.out.println(stmt.executeQuery()); +// stmt.execute(); +// } catch (SQLException e) { +// throw new RuntimeException("Error deleting an Ad by ID", e); +// } +// } +// +// public void editByID(Long id, String newTitle, String newDesc) { +// +// String queryTitle = "UPDATE ads set title = ? where id = ?"; +// String queryDesc = "UPDATE ads set description = ? where id = ?"; +// try { +// PreparedStatement stmtTitle = connection.prepareStatement(queryTitle); +// PreparedStatement stmtDesc = connection.prepareStatement(queryDesc); +// stmtTitle.setString(1, newTitle); +// stmtDesc.setString(1, newDesc); +// stmtTitle.setLong(2, id); +// stmtDesc.setLong(2, id); +// // System.out.println(stmt); +// // System.out.println(stmt.executeQuery()); +// stmtTitle.executeUpdate(); +// stmtDesc.executeUpdate(); +// } catch (SQLException e) { +// throw new RuntimeException("Error Editing an Ad by ID", e); +// } +// } +// +// +// public List listByCatID(Long catID) { +// // ? will be replaced with the ID that was clicked. +// String query = "SELECT * FROM ads WHERE id IN (SELECT ad_id FROM ad_cat WHERE cat_id = ?);"; +// try { +// PreparedStatement stmt = connection.prepareStatement(query); +// stmt.setLong(1, catID); +// System.out.println(stmt); +// // System.out.println(stmt.executeQuery()); +// ResultSet rs = stmt.executeQuery(); +// // rs.next(); +// return createAdsFromResults(rs); +// } catch (SQLException e) { +// throw new RuntimeException("Error listing ads by cat ID.", e); +// } +// } diff --git a/src/main/webapp/WEB-INF/ads/search.jsp b/src/main/webapp/WEB-INF/ads/search.jsp index 550359f6bb..b14db12634 100644 --- a/src/main/webapp/WEB-INF/ads/search.jsp +++ b/src/main/webapp/WEB-INF/ads/search.jsp @@ -19,14 +19,25 @@
-

You Search Results ${sessionScope.user.username}!

- -
-

${ad.title}

-

${ad.description}

-
+

You Search Results:

+ +<%--//added some style to show add in a card*** Agutierrez--%> + + +
+
+

${ad.title}

+

${ad.description}

+
+
+
+ + +

No Search Results Found

+
+ Return to all ads
diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index d8b11e8452..0829164796 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -1,20 +1,53 @@ - +<%--addded taglib and JSP Directives--%> + + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + +<%--New Dynamic Navbar--%> + + + + + + + \ No newline at end of file From 3dcfef5604ef29b171815e2f7d007e41421b97ec Mon Sep 17 00:00:00 2001 From: Andrawes Batshoun Date: Tue, 15 Feb 2022 15:19:06 -0600 Subject: [PATCH 13/58] commit work --- .../adlister/controllers/CreateAdServlet.java | 27 ++++++++++++++----- .../adlister/controllers/LoginServlet.java | 13 +++++++++ .../adlister/controllers/RegisterServlet.java | 9 ++++--- .../com/codeup/adlister/dao/ListAdsDao.java | 2 +- src/main/webapp/WEB-INF/ads/create.jsp | 1 + src/main/webapp/WEB-INF/login.jsp | 2 ++ src/main/webapp/WEB-INF/register.jsp | 5 ++-- 7 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java index 38775bc6f7..15e134d57b 100644 --- a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java @@ -24,12 +24,25 @@ 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 = new Ad( - user.getId(), - request.getParameter("title"), - request.getParameter("description") - ); - DaoFactory.getAdsDao().insert(ad); - response.sendRedirect("/ads"); + String title = request.getParameter("title"); + String description = request.getParameter("description"); + + + if(title.isEmpty() || description.isEmpty()){ + String errorMessage = "Missing information."; + request.getSession().setAttribute("createError", errorMessage); + response.sendRedirect("/ads/create"); + }else{ + + 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/LoginServlet.java b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java index e5c52723a2..384006c971 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -25,8 +25,18 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String username = request.getParameter("username"); String password = request.getParameter("password"); User user = DaoFactory.getUsersDao().findByUsername(username); + String errorMessage = ""; + + if(username.isEmpty() || password.isEmpty()){ + errorMessage = "You have entered an invalid username or password"; + request.getSession().setAttribute("loginError", errorMessage); + response.sendRedirect("/login"); + return; + } + if (user == null) { + response.sendRedirect("/login"); return; } @@ -37,7 +47,10 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) request.getSession().setAttribute("user", user); response.sendRedirect("/profile"); } else { + errorMessage = "You have entered an invalid username or password"; + request.getSession().setAttribute("loginError", errorMessage); response.sendRedirect("/login"); } + } } diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index ff29d095f6..1c02861ced 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -23,17 +23,18 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) String passwordConfirmation = request.getParameter("confirm_password"); String errorMessage = ""; + if(username.isEmpty()){ - errorMessage += "alert('Username is required for registration');"; + errorMessage += "Username is required for registration
"; } if(email.isEmpty()){ - errorMessage += "alert('Email is required for registration');"; + errorMessage += "Email is required for registration
"; } if (password.isEmpty()){ - errorMessage += "alert('Password is required for registration');"; + errorMessage += "Password is required for registration
"; } if(! password.equals(passwordConfirmation)){ - errorMessage += "alert('Passwords do not match');"; + errorMessage += "Passwords do not match"; } request.getSession().setAttribute("error", errorMessage); diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 2fb3153f0a..f5bbfe7abd 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -34,7 +34,7 @@ public Long insert(Ad ad) { return ad.getId(); } - @Override + public List search(String keyword) { return null; } diff --git a/src/main/webapp/WEB-INF/ads/create.jsp b/src/main/webapp/WEB-INF/ads/create.jsp index f6332692f7..be46c775e6 100644 --- a/src/main/webapp/WEB-INF/ads/create.jsp +++ b/src/main/webapp/WEB-INF/ads/create.jsp @@ -17,6 +17,7 @@ +

${createError}

diff --git a/src/main/webapp/WEB-INF/login.jsp b/src/main/webapp/WEB-INF/login.jsp index 83ce2d0a1f..a02295e6a9 100644 --- a/src/main/webapp/WEB-INF/login.jsp +++ b/src/main/webapp/WEB-INF/login.jsp @@ -18,8 +18,10 @@ +

${loginError}

+ diff --git a/src/main/webapp/WEB-INF/register.jsp b/src/main/webapp/WEB-INF/register.jsp index ed81b52ad9..5320e142ff 100644 --- a/src/main/webapp/WEB-INF/register.jsp +++ b/src/main/webapp/WEB-INF/register.jsp @@ -26,12 +26,11 @@ +

${error}

- + From 19e7b57b0f95ea308170c83d5dd95d71f27dbd27 Mon Sep 17 00:00:00 2001 From: Jose Diaz Date: Tue, 15 Feb 2022 15:28:59 -0600 Subject: [PATCH 14/58] working on adservlet --- .../adlister/controllers/IndividualAdServlet.java | 12 +++--------- .../java/com/codeup/adlister/dao/ListAdsDao.java | 4 ++-- .../java/com/codeup/adlister/dao/MySQLAdsDao.java | 2 +- src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp | 12 ++++++++---- src/main/webapp/WEB-INF/ads/index.jsp | 2 +- 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java index 432987b8dd..bf6793676c 100644 --- a/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java @@ -10,19 +10,13 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "controllers.IndividualAdServlet", urlPatterns = "/ads/individualAd") +@WebServlet(name = "IndividualAdServlet", urlPatterns = "/ads/individualAd") public class IndividualAdServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Long individualAd = Long.parseLong(request.getParameter("loneAd")); Ad ad = DaoFactory.getAdsDao().findById(individualAd); - request.setAttribute("loneAd", individualAd); - - - request.getRequestDispatcher("/WEB-INF/ShowIndvAd.jsp").forward(request, response); - } - - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { - + request.setAttribute("ad", ad); + request.getRequestDispatcher("/WEB-INF/ads/ShowIndvAd.jsp").forward(request, response); } } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 7837ca22ee..70b830b293 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -16,7 +16,7 @@ public List all() { return ads; } - @Override + //@Override public List getAd(User user) { return null; } @@ -34,7 +34,7 @@ public Long insert(Ad ad) { return ad.getId(); } - @Override + //@Override public List search(String keyword) { 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 72d52da846..94eac24b98 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -93,7 +93,7 @@ public Ad findById(Long ad) { try { PreparedStatement stmt = connection.prepareStatement(insertQuery); stmt.setLong(1, ad); - stmt.executeUpdate(); + //stmt.executeUpdate(); ResultSet rs = stmt.executeQuery(); rs.next(); return extractAd(rs); diff --git a/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp index adf0161f0b..beff87d794 100644 --- a/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp +++ b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp @@ -6,7 +6,7 @@ To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> @@ -18,9 +18,13 @@

Your Ad

-

Title: ${sessionScope.ad.title}

-

Description: ${sessionScope.ad.description}

-

User: ${sessionScope.user.username}

+ +
+

Title: ${ad.title}

+

Description: ${ad.description}

+

User: ${sessionScope.user.username}

+
+
diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 08c6ca1fde..d1f22d2db1 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -14,7 +14,7 @@
-

${ad.title}

+

${ad.id}

${ad.description}

From e07912339cbdaeeb7a7fdec99d74a40435740849 Mon Sep 17 00:00:00 2001 From: Jose Diaz Date: Tue, 15 Feb 2022 16:12:00 -0600 Subject: [PATCH 15/58] updated index.jsp to show single add page --- .../controllers/IndividualAdServlet.java | 9 +++--- .../com/codeup/adlister/dao/MySQLAdsDao.java | 29 +++++++++++-------- src/main/webapp/WEB-INF/ads/index.jsp | 6 +++- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java index bf6793676c..90e5792f47 100644 --- a/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java @@ -9,14 +9,15 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.sql.SQLException; -@WebServlet(name = "IndividualAdServlet", urlPatterns = "/ads/individualAd") +@WebServlet(name = "controllers.IndividualAdServlet", urlPatterns = "/ads/individualAd") public class IndividualAdServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - Long individualAd = Long.parseLong(request.getParameter("loneAd")); - Ad ad = DaoFactory.getAdsDao().findById(individualAd); - request.setAttribute("ad", ad); + long individualAd = Long.parseLong(request.getParameter("ad")); + //Ad ad = DaoFactory.getAdsDao().findById(individualAd); + request.setAttribute("ad", DaoFactory.getAdsDao().findById(individualAd)); request.getRequestDispatcher("/WEB-INF/ads/ShowIndvAd.jsp").forward(request, response); } } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index 87f95b07be..6bf58ed9c3 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -18,9 +18,9 @@ public MySQLAdsDao(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); @@ -41,13 +41,13 @@ public List all() { @Override public List getAd(User user) { - String sql = "SELECT * FROM ads WHERE user_id = " + user.getId() ; + String sql = "SELECT * FROM ads WHERE user_id = " + user.getId(); PreparedStatement stmt = null; try { stmt = connection.prepareStatement(sql); ResultSet rs = stmt.executeQuery(); return createAdsFromResults(rs); - }catch (SQLException e){ + } catch (SQLException e) { throw new RuntimeException("Error retrieving ads.", e); } } @@ -69,25 +69,26 @@ public Long insert(Ad ad) { throw new RuntimeException("Error creating a new ad.", e); } } -//Method for search ads---------------------------AG + + //Method for search ads---------------------------AG @Override public List search(String keyword) { // String query = "SELECT * FROM ads WHERE title LIKE ? OR description LIKE ?"; String query = "SELECT * FROM ads WHERE title LIKE ? "; try { PreparedStatement stmt = connection.prepareStatement(query); - stmt.setString(1, keyword ); + stmt.setString(1, keyword); // change above code to : stmt.setString(1, '%' + keyword + '%'); // stmt.setString(2, keyword); - ResultSet rs= stmt.executeQuery(); + ResultSet rs = stmt.executeQuery(); return createAdsFromResults(rs); - }catch(SQLException e){ + } catch (SQLException e) { throw new RuntimeException("Error finding ad", e); } } - // --------------------------- + // --------------------------- @Override public Ad findById(Long ad) { @@ -98,13 +99,17 @@ public Ad findById(Long ad) { stmt.setLong(1, ad); //stmt.executeUpdate(); ResultSet rs = stmt.executeQuery(); - rs.next(); - return extractAd(rs); + if (rs.next()) { + return extractAd(rs); + } + return null; } 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/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index d1f22d2db1..09e0a72d77 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -14,7 +14,11 @@
-

${ad.id}

+
+<%--

${ad.id}

--%> + + +

${ad.description}

From 9d3c0a2f7cc711b4383b2cb37ee74ee5d5346ac0 Mon Sep 17 00:00:00 2001 From: aidaj gutierrez Date: Wed, 16 Feb 2022 09:05:47 -0600 Subject: [PATCH 16/58] not changes --- src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp index adf0161f0b..332e74e20a 100644 --- a/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp +++ b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp @@ -21,6 +21,7 @@

Title: ${sessionScope.ad.title}

Description: ${sessionScope.ad.description}

User: ${sessionScope.user.username}

+ From 6a8c82e8b46f786399b84c814942242df5a5ddbb Mon Sep 17 00:00:00 2001 From: Jose Diaz Date: Wed, 16 Feb 2022 09:47:44 -0600 Subject: [PATCH 17/58] working on showing individual ad --- src/main/webapp/WEB-INF/ads/index.jsp | 5 ++++- src/main/webapp/WEB-INF/ads/search.jsp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 09e0a72d77..0bb86243bd 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -17,9 +17,12 @@
<%--

${ad.id}

--%> +<%--

${ad.title}

--%> +

${ad.title}

+

${ad.description}

-

${ad.description}

+ diff --git a/src/main/webapp/WEB-INF/ads/search.jsp b/src/main/webapp/WEB-INF/ads/search.jsp index b14db12634..75d4805f62 100644 --- a/src/main/webapp/WEB-INF/ads/search.jsp +++ b/src/main/webapp/WEB-INF/ads/search.jsp @@ -26,7 +26,7 @@
-

${ad.title}

+

${ad.title}

${ad.description}

From 402500483f7b8e7bf6cf8b953e375c2b87f77b45 Mon Sep 17 00:00:00 2001 From: aidaj gutierrez Date: Wed, 16 Feb 2022 10:59:33 -0600 Subject: [PATCH 18/58] navbar change-added links-started update ads --- .../controllers/UpdateAdsServlet.java | 58 +++++++++++++++++++ .../java/com/codeup/adlister/dao/Ads.java | 5 +- .../com/codeup/adlister/dao/MySQLAdsDao.java | 17 ++++++ src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp | 20 ++++--- src/main/webapp/WEB-INF/ads/create.jsp | 2 + src/main/webapp/WEB-INF/ads/index.jsp | 1 + src/main/webapp/WEB-INF/ads/search.jsp | 2 +- src/main/webapp/WEB-INF/ads/updateAds.jsp | 41 +++++++++++++ src/main/webapp/WEB-INF/partials/navbar.jsp | 9 ++- 9 files changed, 140 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/codeup/adlister/controllers/UpdateAdsServlet.java create mode 100644 src/main/webapp/WEB-INF/ads/updateAds.jsp diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateAdsServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateAdsServlet.java new file mode 100644 index 0000000000..db24a00e4d --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdsServlet.java @@ -0,0 +1,58 @@ +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.UpdateAdsServlet", urlPatterns = "/ads/updateads") +public class UpdateAdsServlet extends HttpServlet { + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (request.getSession().getAttribute("user") == null) { + response.sendRedirect("/login"); + return; + } + + String errorMessage = request.getParameter("errorMessage"); + request.setAttribute("errorMessage", errorMessage); + + long ad_id = Long.parseLong(request.getParameter("ad_id")); + Ad ad = DaoFactory.getAdsDao().findById(ad_id); + + request.setAttribute("ad_id", request.getParameter("ad_id")); + request.setAttribute("title", ad.getTitle()); + request.setAttribute("description", ad.getDescription()); + request.getRequestDispatcher("/WEB-INF/ads/updateads.jsp").forward(request, response); + + } + + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String updateTitle = request.getParameter("updateTitle"); + String updateDescription = request.getParameter("updateDescription"); + long updateID = Long.parseLong(request.getParameter("ad_id")); + + if(updateTitle == null || updateTitle.isEmpty()){ + response.sendRedirect("/ads/updateads?ad_id=" + updateID+ "&errorMessage=TitleNull"); + return; + } + + if(updateDescription == null || updateDescription.isEmpty()){ + response.sendRedirect("/ads/updateads?ad_id=" + updateID+ "&errorMessage=DescriptionNull"); + return; + } + + User user = (User) request.getSession().getAttribute("user"); + Ad ad = new Ad(updateID, user.getId(),updateTitle, updateDescription); + DaoFactory.getAdsDao().update(ad); + response.sendRedirect("/profile"); + } +} \ No newline at end of file diff --git a/src/main/java/com/codeup/adlister/dao/Ads.java b/src/main/java/com/codeup/adlister/dao/Ads.java index 993742212d..d4c2b3ade5 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -19,8 +19,5 @@ public interface Ads { List search(String keyword); - - - - + void update(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 6bf58ed9c3..aa8215ae4b 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -88,6 +88,23 @@ public List search(String keyword) { } } + + // method to update 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); + } + } + // --------------------------- @Override diff --git a/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp index 088fafbe6d..81201deaa9 100644 --- a/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp +++ b/src/main/webapp/WEB-INF/ads/ShowIndvAd.jsp @@ -19,18 +19,20 @@

Your Ad

-

Title: ${sessionScope.ad.title}

-

Description: ${sessionScope.ad.description}

+

Title: ${ad.title}

+

Description: ${ad.description}

User: ${sessionScope.user.username}

- -
-

Title: ${ad.title}

-

Description: ${ad.description}

-

User: ${sessionScope.user.username}

-
-
+<%--added link to go back to all ads- AG --%> + +<%-- --%> +<%--
--%> +<%--

Title: ${ad.title}

--%> +<%--

Description: ${ad.description}

--%> +<%--

User: ${sessionScope.user.username}

--%> +<%--
--%> +<%--
--%>
diff --git a/src/main/webapp/WEB-INF/ads/create.jsp b/src/main/webapp/WEB-INF/ads/create.jsp index be46c775e6..147e895b43 100644 --- a/src/main/webapp/WEB-INF/ads/create.jsp +++ b/src/main/webapp/WEB-INF/ads/create.jsp @@ -20,6 +20,8 @@

${createError}

+<%--added link to get back to profile- AG--%> + diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 09e0a72d77..35d9ac1619 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -20,6 +20,7 @@

${ad.description}

+
diff --git a/src/main/webapp/WEB-INF/ads/search.jsp b/src/main/webapp/WEB-INF/ads/search.jsp index b14db12634..75d4805f62 100644 --- a/src/main/webapp/WEB-INF/ads/search.jsp +++ b/src/main/webapp/WEB-INF/ads/search.jsp @@ -26,7 +26,7 @@
-

${ad.title}

+

${ad.title}

${ad.description}

diff --git a/src/main/webapp/WEB-INF/ads/updateAds.jsp b/src/main/webapp/WEB-INF/ads/updateAds.jsp new file mode 100644 index 0000000000..2b275145ff --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/updateAds.jsp @@ -0,0 +1,41 @@ +<%-- + Created by IntelliJ IDEA. + User: aidajimenez + Date: 2/16/22 + Time: 9:27 AM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + + + +
+

Update your Ad

+ + + +
+
+ + + +
+
+ + +
+ +
+ +
+ + + diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 0829164796..b22b79b311 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -5,7 +5,7 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%--New Dynamic Navbar--%> - +<%--on main page--%> + +<%--after user logged in--%> -<%--after user logged in--%> +<%--after user logged in/ on user profile--%> -