diff --git a/migration.sql b/migration.sql index a70d2eab38..b70107032d 100644 --- a/migration.sql +++ b/migration.sql @@ -5,8 +5,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) ); @@ -20,3 +20,4 @@ CREATE TABLE ads ( FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); + diff --git a/pom.xml b/pom.xml index 22a2e9c039..2d94e02be9 100644 --- a/pom.xml +++ b/pom.xml @@ -27,12 +27,12 @@ org.mindrot jbcrypt - 0.3m + 0.4 javax.servlet javax.servlet-api - 3.0.1 + 4.0.1 jstl @@ -42,8 +42,9 @@ mysql mysql-connector-java - 6.0.5 + 8.0.31 + \ No newline at end of file diff --git a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java index 1763081228..2e08a088ef 100644 --- a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java @@ -15,4 +15,10 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t request.setAttribute("ads", DaoFactory.getAdsDao().all()); request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response); } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + long id = Long.parseLong(req.getParameter("id")); + resp.sendRedirect("/ads/update?id=" + id); + } } diff --git a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java index 38775bc6f7..4e0960ef2d 100644 --- a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java @@ -22,14 +22,26 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t .forward(request, response); } - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 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"); + boolean invalidAdInput = title.isEmpty() || description.isEmpty(); + if (invalidAdInput) + { + request.setAttribute("inputIsNull", true); + request.getRequestDispatcher("/WEB-INF/ads/create.jsp").forward(request, response); + } 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/DeleteAdServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteAdServlet.java new file mode 100644 index 0000000000..ac0f2cc2f7 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/DeleteAdServlet.java @@ -0,0 +1,25 @@ +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 = "DeleteAdServlet", urlPatterns = "/ads/delete") +public class DeleteAdServlet extends HttpServlet { + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + if (req.getSession().getAttribute("user") != null) { + long adId = Long.parseLong(req.getParameter("id")); + DaoFactory.getAdsDao().delete(adId); + resp.sendRedirect("/profile"); + } else { + resp.sendRedirect("/login"); + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/codeup/adlister/controllers/DeleteUserServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteUserServlet.java new file mode 100644 index 0000000000..beac9c2375 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/DeleteUserServlet.java @@ -0,0 +1,23 @@ +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 = "DeleteUserServlet", urlPatterns = "/profile/delete") +public class DeleteUserServlet extends HttpServlet { + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + Long userId = Long.valueOf(request.getParameter("userId")); + DaoFactory.getUsersDao().deleteUser(userId); + if (request.getSession().getAttribute("user") == null) { + response.sendRedirect("/login"); + } + } +} diff --git a/src/main/java/com/codeup/adlister/controllers/HelloWorldServlet.java b/src/main/java/com/codeup/adlister/controllers/HelloWorldServlet.java index 4ab9b9da70..2a5e83d5cd 100644 --- a/src/main/java/com/codeup/adlister/controllers/HelloWorldServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/HelloWorldServlet.java @@ -6,9 +6,10 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "controllers.HelloWorldServlet", urlPatterns = "/") +@WebServlet(name = "HelloWorldServlet", urlPatterns = "/hello") public class HelloWorldServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.getWriter().println("

Hello, World!

"); + return; } } 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..3e66ff8bf1 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/IndividualAdServlet.java @@ -0,0 +1,24 @@ +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; + +@WebServlet(name = "controllers.IndividualAdServlet", urlPatterns = "/ad") +public class IndividualAdServlet extends HttpServlet +{ + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException + { + long id = Long.parseLong(req.getParameter("id")); + Ad ad = DaoFactory.getAdsDao().findById(id); + req.setAttribute("singleAd", ad); + req.getRequestDispatcher("/WEB-INF/ad.jsp").forward(req, resp); + } +} diff --git a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java index e5c52723a2..c2edc74d69 100644 --- a/src/main/java/com/codeup/adlister/controllers/LoginServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/LoginServlet.java @@ -18,20 +18,31 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t response.sendRedirect("/profile"); return; } + + + request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); } - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String username = request.getParameter("username"); String password = request.getParameter("password"); User user = DaoFactory.getUsersDao().findByUsername(username); - if (user == null) { - response.sendRedirect("/login"); + boolean validAttempt = Password.check(password, user.getPassword()); + + boolean notCorrectPassword = !Password.check(password, user.getPassword()); + + + + + if(notCorrectPassword) { + request.setAttribute("password", true); + request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); return; } - boolean validAttempt = Password.check(password, user.getPassword()); + if (validAttempt) { request.getSession().setAttribute("user", user); diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java index e1e997c17a..f02cf7cffc 100644 --- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java @@ -13,10 +13,12 @@ @WebServlet(name = "controllers.RegisterServlet", urlPatterns = "/register") public class RegisterServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); } - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String username = request.getParameter("username"); String email = request.getParameter("email"); String password = request.getParameter("password"); @@ -24,18 +26,19 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // validate input boolean inputHasErrors = username.isEmpty() - || email.isEmpty() - || password.isEmpty() - || (! password.equals(passwordConfirmation)); + || email.isEmpty() + || password.isEmpty() + || (!password.equals(passwordConfirmation)); + if (inputHasErrors) { - response.sendRedirect("/register"); - return; + request.setAttribute("inputHasErrors", true); + request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response); + } else { + // create and save a new user + User user = new User(username, email, password); + DaoFactory.getUsersDao().insert(user); + response.sendRedirect("/login"); } - - // create and save a new user - User user = new User(username, email, password); - DaoFactory.getUsersDao().insert(user); - response.sendRedirect("/login"); } -} +} \ No newline at end of file diff --git a/src/main/java/com/codeup/adlister/controllers/SearchAdServlet.java b/src/main/java/com/codeup/adlister/controllers/SearchAdServlet.java new file mode 100644 index 0000000000..cef0b1f6a6 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/SearchAdServlet.java @@ -0,0 +1,23 @@ +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 = "SearchAdServlet", urlPatterns = "/ads/search") +public class SearchAdServlet extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + List ads = DaoFactory.getAdsDao().search(request.getParameter("title")); + request.setAttribute("ads", ads); + request.getRequestDispatcher("/WEB-INF/ads/result.jsp").forward(request, response); + + } +} 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..d74cacb2f8 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java @@ -0,0 +1,42 @@ +package com.codeup.adlister.controllers; + +import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.models.Ad; +import com.codeup.adlister.models.User; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "controllers.UpdateAdServlet", urlPatterns = "/ads/update") +public class UpdateAdServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (request.getSession().getAttribute("user") == null) { + response.sendRedirect("/login"); + return; + } + + request.setAttribute("adId", request.getParameter("id")); + request.getRequestDispatcher("/WEB-INF/ads/update.jsp").forward(request, response); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + // Storing user input values from update form. + String title = request.getParameter("title"); + String description = request.getParameter("description"); + Long id = Long.valueOf(request.getParameter("adId")); + + + // Using DAO factory to access our update method. + DaoFactory.getAdsDao().updateAd(id, title, description); + + // Redirecting user to ads page after submitting update form. + response.sendRedirect("/ads"); + } +} diff --git a/src/main/java/com/codeup/adlister/controllers/UpdateProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/UpdateProfileServlet.java new file mode 100644 index 0000000000..96f86e3737 --- /dev/null +++ b/src/main/java/com/codeup/adlister/controllers/UpdateProfileServlet.java @@ -0,0 +1,49 @@ +package com.codeup.adlister.controllers; + +import com.codeup.adlister.dao.DaoFactory; +import com.codeup.adlister.util.Password; + +import javax.servlet.Servlet; +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 = "UpdateProfileServlet", urlPatterns = "/profile/update") +public class UpdateProfileServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + // Setting attribute with the value of userId in url string query. + request.setAttribute("userId", request.getParameter("userId")); + request.getRequestDispatcher("/WEB-INF/update-profile.jsp").forward(request, response); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // Storing user input values from update profile form. + Long id = Long.valueOf(request.getParameter("userId")); + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String password = request.getParameter("password"); + + password = Password.hash(password); + + boolean invalidInput = username.isEmpty() || email.isEmpty() || password.isEmpty(); + if (invalidInput) + { + request.setAttribute("inputIsNull", true); + request.getRequestDispatcher("/WEB-INF/profile/update.jsp").forward(request, response); + } else + { +// Accessing DAO to implement update users method. + DaoFactory.getUsersDao().updateUser(id, username, email, password); + // Redirecting them to login again. + response.sendRedirect("/login"); + } + + } +} diff --git a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java index e1b8941067..ce10e9424c 100644 --- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java +++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java @@ -1,19 +1,38 @@ 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 { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + User user = (User) request.getSession().getAttribute("user"); + Long userId = user.getId(); + System.out.println(user.getId()); + List ads = DaoFactory.getAdsDao().findPostByUserId(userId); + + request.setAttribute("ads", ads); + + + + if (request.getSession().getAttribute("user") == null) { response.sendRedirect("/login"); return; + + } 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..88250d2b17 100644 --- a/src/main/java/com/codeup/adlister/dao/Ads.java +++ b/src/main/java/com/codeup/adlister/dao/Ads.java @@ -4,9 +4,26 @@ import java.util.List; -public interface Ads { +public interface Ads +{ // get a list of all the ads List all(); + // insert a new ad and return the new ad's id Long insert(Ad ad); + + // update exisiting ad + void updateAd(Long id, String title, String description); + + + void delete(long id); + + + //method for finding posts by userid + List findPostByUserId(Long userId); + + Ad findById(long id); + + + List search(String title); } diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java index 8d3baaa369..5e7886046c 100644 --- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java @@ -27,31 +27,57 @@ public Long insert(Ad ad) { return ad.getId(); } + @Override + public void updateAd(Long id, String title, String description) { + + } + + public void delete(long id) { + if (ads == null) { + ads = generateAds(); + } + } + + public List findPostByUserId(Long userId) { + return null; + } + + @Override + public Ad findById(long id) { + return null; + } + + @Override + public List search(String title) { + return null; + } + + private List generateAds() { List ads = new ArrayList<>(); ads.add(new Ad( - 1, - 1, - "playstation for sale", - "This is a slightly used playstation" + 1, + 1, + "playstation for sale", + "This is a slightly used playstation" )); ads.add(new Ad( - 2, - 1, - "Super Nintendo", - "Get your game on with this old-school classic!" + 2, + 1, + "Super Nintendo", + "Get your game on with this old-school classic!" )); ads.add(new Ad( - 3, - 2, - "Junior Java Developer Position", - "Minimum 7 years of experience required. You will be working in the scripting language for Java, JavaScript" + 3, + 2, + "Junior Java Developer Position", + "Minimum 7 years of experience required. You will be working in the scripting language for Java, JavaScript" )); ads.add(new Ad( - 4, - 2, - "JavaScript Developer needed", - "Must have strong Java skills" + 4, + 2, + "JavaScript Developer needed", + "Must have strong Java skills" )); return ads; } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java index d58c45f985..ee10cc3311 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java @@ -2,7 +2,7 @@ import com.codeup.adlister.models.Ad; import com.mysql.cj.jdbc.Driver; - +import javax.management.RuntimeErrorException; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; @@ -26,6 +26,7 @@ public MySQLAdsDao(Config config) { } } + @Override public List all() { PreparedStatement stmt = null; @@ -38,6 +39,8 @@ public List all() { } } + + @Override public Long insert(Ad ad) { try { @@ -55,12 +58,88 @@ public Long insert(Ad ad) { } } - private Ad extractAd(ResultSet rs) throws SQLException { + @Override + public void updateAd(Long id, String title, String description) { + // Storing update query in string. + String updateAdQuery = "UPDATE ads SET title = ?, description = ? WHERE id = ?"; + try { + // Preparing SQL statement. + PreparedStatement statement = connection.prepareStatement(updateAdQuery); + + // Setting update query values in "updateAdQuery". + statement.setString(1, title); + statement.setString(2, description); + statement.setLong(3, id); + + // Execute update query. + statement.executeUpdate(); + + } catch (SQLException e) { + throw new RuntimeException("Error updating current ad."); + } + } + + + public void delete(long id) { + try { + String query = "DELETE FROM ads WHERE id = ?"; + PreparedStatement ps = connection.prepareStatement(query); + ps.setLong(1, id); + ps.executeUpdate(); + + } catch (SQLException e) { + throw new RuntimeException("Error deleting ad."); + } + } + + @Override + public List search(String title){ + try { + String searchQuery = "SELECT * FROM ads WHERE title LIKE CONCAT('%',?,'%')"; + PreparedStatement stmt = connection.prepareStatement(searchQuery); + stmt.setString(1, title); + return createAdsFromResults(stmt.executeQuery()); + }catch (SQLException e){ + throw new RuntimeException("Error finding results for that title.", e); + } + } + + + + @Override + public List findPostByUserId (Long userId){ + try { + String findQuery = "SELECT * FROM ads WHERE user_id = ?"; + PreparedStatement stmt1 = connection.prepareStatement(findQuery); + stmt1.setLong(1, userId); + return createAdsFromResults(stmt1.executeQuery()); + } catch (SQLException e) { + throw new RuntimeException("Error creating a new ad.", e); + } + + } + + @Override + public Ad findById ( long id){ + String query = String.format("SELECT * FROM ads WHERE id = %d", id); + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(query); + if (rs.next()) { + return extractAd(rs); + } + return null; + } catch (SQLException e) { + throw new RuntimeException("Error retrieving all ads.", e); + } + } + + private Ad extractAd (ResultSet rs) throws SQLException { return new Ad( - rs.getLong("id"), - rs.getLong("user_id"), - rs.getString("title"), - rs.getString("description") + rs.getLong("id"), + rs.getLong("user_id"), + rs.getString("title"), + rs.getString("description") ); } @@ -71,4 +150,7 @@ private List createAdsFromResults(ResultSet rs) throws SQLException { } return ads; } + + + } diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java index 4e69e57044..73adcdd4c3 100644 --- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java +++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java @@ -51,6 +51,43 @@ public Long insert(User user) { } } + @Override + public void updateUser(Long id, String username, String email, String password) { + // Storing update query in string. + String updateUserQuery = "UPDATE users SET username = ?, email = ?, password = ? WHERE id = ?"; + try { + PreparedStatement statement = connection.prepareStatement(updateUserQuery); + + // Setting values of "?" in update user query. + statement.setString(1, username); + statement.setString(2, email); + statement.setString(3, password); + statement.setLong(4, id); + + // Execute update query. + statement.executeUpdate(); + + } catch (SQLException e) { + throw new RuntimeException("Error updating user information."); + } + } + + @Override + public void deleteUser(Long id) { + String deleteUserQuery = "DELETE FROM users WHERE id = ?"; + try { + PreparedStatement statement = connection.prepareStatement(deleteUserQuery); + + // Setting value of question mark in SQL query to the id that's being passed in as parameter. + statement.setLong(1, id); + + // Executing delete user query. + statement.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException("Error deleting user."); + } + } + 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..f90bf864c9 100644 --- a/src/main/java/com/codeup/adlister/dao/Users.java +++ b/src/main/java/com/codeup/adlister/dao/Users.java @@ -7,4 +7,6 @@ public interface Users { User findByUsername(String username); Long insert(User user); + void updateUser(Long id, String username, String email, String password); + void deleteUser(Long id); } diff --git a/src/main/webapp/WEB-INF/ad.jsp b/src/main/webapp/WEB-INF/ad.jsp new file mode 100644 index 0000000000..cbecfd94ae --- /dev/null +++ b/src/main/webapp/WEB-INF/ad.jsp @@ -0,0 +1,23 @@ +<%-- + Created by IntelliJ IDEA. + User: casanovageary + Date: 11/14/22 + Time: 3:32 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" %> + + + ad + + + + +
+

${singleAd.title}

+

${singleAd.description}

+
+ + diff --git a/src/main/webapp/WEB-INF/ads/create.jsp b/src/main/webapp/WEB-INF/ads/create.jsp index f6332692f7..28e28dfd79 100644 --- a/src/main/webapp/WEB-INF/ads/create.jsp +++ b/src/main/webapp/WEB-INF/ads/create.jsp @@ -1,22 +1,30 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> + +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + create ad +
-

Create a new Ad

+

create a new ad

- - + +
- - + +
+ + Title cannot be blank. Please enter the name for your ad. +
diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp index 6f4371f0bb..f9ccd6d046 100644 --- a/src/main/webapp/WEB-INF/ads/index.jsp +++ b/src/main/webapp/WEB-INF/ads/index.jsp @@ -5,20 +5,20 @@ + ad - +

Here Are all the ads!

-

${ad.title}

+

${ad.title}

${ad.description}

- diff --git a/src/main/webapp/WEB-INF/ads/result.jsp b/src/main/webapp/WEB-INF/ads/result.jsp new file mode 100644 index 0000000000..f5002228e6 --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/result.jsp @@ -0,0 +1,24 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + ad + + + + +
+

Here is the ad you are looking for!

+ + +
+

${ad.title}

+

${ad.description}

+
+
+
+ + 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..c4c3ad32bd --- /dev/null +++ b/src/main/webapp/WEB-INF/ads/update.jsp @@ -0,0 +1,33 @@ +<%-- + Created by IntelliJ IDEA. + User: vicente + Date: 11/14/22 + Time: 11:09 AM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + + +
+

Edit Your Ad

+
+ +
+ + +
+
+ + +
+ +
+
+ + diff --git a/src/main/webapp/WEB-INF/delete-profile.jsp b/src/main/webapp/WEB-INF/delete-profile.jsp new file mode 100644 index 0000000000..20385bd429 --- /dev/null +++ b/src/main/webapp/WEB-INF/delete-profile.jsp @@ -0,0 +1,23 @@ +<%-- + Created by IntelliJ IDEA. + User: localdev + Date: 11/16/22 + Time: 9:52 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + + +

Delete Your Profile

+
+ + +
+ + diff --git a/src/main/webapp/WEB-INF/login.jsp b/src/main/webapp/WEB-INF/login.jsp index 83ce2d0a1f..72a1725539 100644 --- a/src/main/webapp/WEB-INF/login.jsp +++ b/src/main/webapp/WEB-INF/login.jsp @@ -1,23 +1,30 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + <%@ page contentType="text/html;charset=UTF-8" language="java" %> + login
-

Please Log In

+

Please log In

+
+ + Incorrect Password +
diff --git a/src/main/webapp/WEB-INF/partials/navbar-ads-index.jsp b/src/main/webapp/WEB-INF/partials/navbar-ads-index.jsp new file mode 100644 index 0000000000..c5e762687a --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-ads-index.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%-- + Created by IntelliJ IDEA. + User: casanovageary + Date: 11/14/22 + Time: 3:08 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + diff --git a/src/main/webapp/WEB-INF/partials/navbar-create-ad.jsp b/src/main/webapp/WEB-INF/partials/navbar-create-ad.jsp new file mode 100644 index 0000000000..2c5a2c772f --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-create-ad.jsp @@ -0,0 +1,29 @@ +<%-- + Created by IntelliJ IDEA. + User: casanovageary + Date: 11/14/22 + Time: 2:24 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" %> + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/partials/navbar-logged-in.jsp b/src/main/webapp/WEB-INF/partials/navbar-logged-in.jsp new file mode 100644 index 0000000000..ea52aa875a --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-logged-in.jsp @@ -0,0 +1,29 @@ +<%-- + Created by IntelliJ IDEA. + User: casanovageary + Date: 11/14/22 + Time: 10:45 AM + 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" %> + + diff --git a/src/main/webapp/WEB-INF/partials/navbar-register.jsp b/src/main/webapp/WEB-INF/partials/navbar-register.jsp new file mode 100644 index 0000000000..40e06548b0 --- /dev/null +++ b/src/main/webapp/WEB-INF/partials/navbar-register.jsp @@ -0,0 +1,20 @@ +<%-- + Created by IntelliJ IDEA. + User: casanovageary + Date: 11/14/22 + Time: 2:43 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp index 8e1f98f662..0389a37bf5 100644 --- a/src/main/webapp/WEB-INF/partials/navbar.jsp +++ b/src/main/webapp/WEB-INF/partials/navbar.jsp @@ -1,3 +1,5 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + diff --git a/src/main/webapp/WEB-INF/profile.jsp b/src/main/webapp/WEB-INF/profile.jsp index 05e3fa7a91..8815bab48d 100644 --- a/src/main/webapp/WEB-INF/profile.jsp +++ b/src/main/webapp/WEB-INF/profile.jsp @@ -1,15 +1,44 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> + my profile - +

Welcome, ${sessionScope.user.username}!

+ + + + +
+ + +
+ +

${sessionScope.ads}

+ + +
+

${ad.title}

+

${ad.description}

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

Please fill in your information.

@@ -18,6 +20,7 @@
+
@@ -26,6 +29,9 @@
+ + No fields left blank. + diff --git a/src/main/webapp/WEB-INF/update-profile.jsp b/src/main/webapp/WEB-INF/update-profile.jsp new file mode 100644 index 0000000000..a441df146d --- /dev/null +++ b/src/main/webapp/WEB-INF/update-profile.jsp @@ -0,0 +1,39 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%-- + Created by IntelliJ IDEA. + User: vicente + Date: 11/16/22 + Time: 2:09 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + Title + + +

Edit Your Profile

+
+ +
+ + +
+
+ + +
+
+ + +
+ + No fields left blank. + + +
+ + diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 68cf346ec9..b47ff042c9 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -1,15 +1,18 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + <%@ page contentType="text/html;charset=UTF-8" language="java" %> + welcome to adlister
-

Welcome to the Adlister!

+

welcome to adlister!

+ ">