diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000..2f7e633a57
Binary files /dev/null and b/.DS_Store differ
diff --git a/migration.sql b/migration.sql
index a70d2eab38..e2e07da10e 100644
--- a/migration.sql
+++ b/migration.sql
@@ -1,22 +1,56 @@
USE adlister_db;
-
-DROP TABLE IF EXISTS ads;
DROP TABLE IF EXISTS users;
-
-CREATE TABLE users (
- id INT UNSIGNED NOT NULL AUTO_INCREMENT,
- username VARCHAR(240) NOT NULL,
- email VARCHAR(240) NOT NULL,
+CREATE TABLE users
+(
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ username VARCHAR(240) NOT NULL UNIQUE,
+ email VARCHAR(240) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
- PRIMARY KEY (id)
+ PRIMARY KEY (id) # added these ND
+ # maybe only dateCreated could be added
+ # UNIQUE is identified in username/email above
+ # will comment out until okayed by team
+ # dateCreated VARCHAR (50) NOT NULL
+ # UNIQUE (username),
+ # UNIQUE (email)
+
);
-CREATE TABLE ads (
- id INT UNSIGNED NOT NULL AUTO_INCREMENT,
- user_id INT UNSIGNED NOT NULL,
- title VARCHAR(240) NOT NULL,
- description TEXT NOT NULL,
+DROP TABLE IF EXISTS ads;
+CREATE TABLE ads
+(
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ user_id INT UNSIGNED NOT NULL,
+ title VARCHAR(240) NOT NULL,
+ description VARCHAR(400) NOT NULL,
PRIMARY KEY (id),
- FOREIGN KEY (user_id) REFERENCES users(id)
+ FOREIGN KEY (user_id) REFERENCES users (id)
ON DELETE CASCADE
+
+-- # added these ND
+
+ # commenting out the below,
+ # don't believe is needed
+ # will discuss with team
+ # dateCreated VARCHAR (50) NOT NULL,
+ # categoryName VARCHAR(255) NOT NULL,
+ # UNIQUE (user_id, title, description)
+);
+
+DROP TABLE IF EXISTS categories;
+CREATE TABLE categories
+(
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ categoryName VARCHAR(240) NOT NULL,
+ PRIMARY KEY (id)
+);
+
+DROP TABLE IF EXISTS ad_category;
+CREATE TABLE ad_category
+(
+ category_id INT UNSIGNED NOT NULL,
+ ad_id INT UNSIGNED NOT NULL,
+ FOREIGN KEY (ad_id) REFERENCES ads (id)
+ ON DELETE CASCADE,
+ FOREIGN KEY (category_id) REFERENCES categories (id)
);
diff --git a/pom.xml b/pom.xml
index 22a2e9c039..3608498c21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,22 +27,23 @@
org.mindrot
jbcrypt
- 0.3m
+ 0.4
javax.servlet
javax.servlet-api
- 3.0.1
+ 4.0.1
jstl
jstl
1.2
+
mysql
mysql-connector-java
- 6.0.5
+ 8.0.23
diff --git a/seeder.sql b/seeder.sql
new file mode 100644
index 0000000000..22ceed8c5f
--- /dev/null
+++ b/seeder.sql
@@ -0,0 +1,13 @@
+USE adlister_db;
+
+-- # TRUNCATE categories;
+
+INSERT INTO categories (categoryName)
+VALUES ('For Sale'),
+ ('Auto'),
+ ('Housing'),
+ ('Jobs'),
+ ('Community');
+
+SELECT * FROM categories;
+
diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000000..82a8397492
Binary files /dev/null and b/src/.DS_Store differ
diff --git a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java
index 1763081228..e573affaf7 100644
--- a/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java
+++ b/src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java
@@ -13,6 +13,21 @@
public class AdsIndexServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("ads", DaoFactory.getAdsDao().all());
+
+// if (request.getSession().getAttribute("vp") != null) {
+// request.getSession().removeAttribute("vp");
+// }
+// request.getSession().setAttribute("vi", "hi");
request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response);
+
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
}
}
+
+// urlPattern does not work; get a 500 error code stating
+// Error retrieving all ads
+// Root Cause: Unknown database 'ads'
\ No newline at end of file
diff --git a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java
index 38775bc6f7..be1628d522 100644
--- a/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java
+++ b/src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java
@@ -30,6 +30,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
request.getParameter("description")
);
DaoFactory.getAdsDao().insert(ad);
+ // consider changing redirect to /profile until adIndex is setup
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..6219a31e43
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/controllers/DeleteAdServlet.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("/ads/delete")
+public class DeleteAdServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+// String idQuery = req.getParameter("id");
+// Ad ad = DaoFactory.getAdsDao().findByStringId(idQuery);
+// User user = (User) req.getSession().getAttribute("user");
+// if (ad.getUserId() != user.getId()) {
+// resp.sendRedirect("/profile");
+// } else {
+// req.getSession().setAttribute("ad", ad);
+// }
+ req.getRequestDispatcher("/WEB-INF/ads/delete.jsp").forward(req, resp);
+ }
+
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ Long id = Long.parseLong(req.getParameter("ad_id"));
+ Ad ad = DaoFactory.getAdsDao().findById(id);
+ DaoFactory.getAdsDao().delete(ad);
+ if (req.getSession().getAttribute("vp") == null){
+ resp.sendRedirect("/ads");
+ } else {
+ resp.sendRedirect("/profile");
+ }
+ }
+}
diff --git a/src/main/java/com/codeup/adlister/controllers/DeleteProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/DeleteProfileServlet.java
new file mode 100644
index 0000000000..071edffc74
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/controllers/DeleteProfileServlet.java
@@ -0,0 +1,36 @@
+package com.codeup.adlister.controllers;
+
+
+import com.codeup.adlister.dao.DaoFactory;
+import com.codeup.adlister.models.User;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@WebServlet("/profile/delete")
+public class DeleteProfileServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ if (req.getSession().getAttribute("user") == null) {
+ resp.sendRedirect("/login");
+ return;
+ }
+ req.getRequestDispatcher("/WEB-INF/profile/delete.jsp").forward(req,resp);
+ }
+
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ User user = (User) req.getSession().getAttribute("user");
+ DaoFactory.getUsersDao().delete(user.getUsername());
+ req.getSession().removeAttribute("user");
+ req.getSession().invalidate();
+ resp.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..7370de77c0 100644
--- a/src/main/java/com/codeup/adlister/controllers/HelloWorldServlet.java
+++ b/src/main/java/com/codeup/adlister/controllers/HelloWorldServlet.java
@@ -1,14 +1,14 @@
-package com.codeup.adlister.controllers;
-
-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.HelloWorldServlet", urlPatterns = "/")
-public class HelloWorldServlet extends HttpServlet {
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
- response.getWriter().println("
Hello, World!
");
- }
-}
+//package com.codeup.adlister.controllers;
+//
+//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.HelloWorldServlet", urlPatterns = "/")
+//public class HelloWorldServlet extends HttpServlet {
+// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
+// response.getWriter().println("Hello, World!
");
+// }
+//}
diff --git a/src/main/java/com/codeup/adlister/controllers/PickAdServlet.java b/src/main/java/com/codeup/adlister/controllers/PickAdServlet.java
new file mode 100644
index 0000000000..b8f19faab2
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/controllers/PickAdServlet.java
@@ -0,0 +1,22 @@
+package com.codeup.adlister.controllers;
+
+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("/pickad")
+public class PickAdServlet extends HttpServlet {
+
+ protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ req.getRequestDispatcher("/WEB-INF/profile/profile.jsp").forward(req, res);
+ }
+
+ protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ String selectAd = req.getParameter("id");
+ req.setAttribute("ad", selectAd);
+ res.sendRedirect("/ad?id=" + selectAd);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java
index e1e997c17a..77c7a0f649 100644
--- a/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java
+++ b/src/main/java/com/codeup/adlister/controllers/RegisterServlet.java
@@ -9,10 +9,13 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.sql.SQLException;
-@WebServlet(name = "controllers.RegisterServlet", urlPatterns = "/register")
+@WebServlet(name = "RegisterServlet", urlPatterns = "/register")
public class RegisterServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ String errorMessage = request.getParameter("errorMessage");
+ request.setAttribute("errorMessage", errorMessage);
request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);
}
@@ -24,9 +27,9 @@ 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");
@@ -35,7 +38,42 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
// create and save a new user
User user = new User(username, email, password);
- DaoFactory.getUsersDao().insert(user);
- response.sendRedirect("/login");
+
+ try {
+ boolean usernameAndEmailNotValid = DaoFactory.getUsersDao().validateUsername(username) &&
+ DaoFactory.getUsersDao().validateEmail(email);
+ boolean usernameNotValid = DaoFactory.getUsersDao().validateUsername(username);
+ boolean userEmailNotValid = DaoFactory.getUsersDao().validateEmail(email);
+
+ if (usernameAndEmailNotValid) {
+ request.setAttribute("bothTaken", true);
+ request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);
+ } else if (usernameNotValid) {
+ request.setAttribute("usernameTaken", true);
+ request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);
+ } else if (userEmailNotValid) {
+ request.setAttribute("emailTRaken", true);
+ request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (ServletException e) {
+ e.printStackTrace();
+ }
+ try {
+ user = new User(username, email, password);
+ request.getSession().setAttribute("user", user);
+ DaoFactory.getUsersDao().insert(user);
+ response.sendRedirect("/profile");
+// } catch (SQLException e) {
+// e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+// request.getSession().setAttribute("username", null);
+// request.getSession().setAttribute("email", null);
+// DaoFactory.getUsersDao().insert(user);
+// response.sendRedirect("/login");
}
-}
+}
\ No newline at end of file
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..e0c4a4b5c5
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/controllers/SearchAdsServlet.java
@@ -0,0 +1,48 @@
+package com.codeup.adlister.controllers;
+
+
+import com.codeup.adlister.dao.DaoFactory;
+import com.codeup.adlister.models.Ad;
+
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+
+@WebServlet(name="controllers.SearchAdsServlet", urlPatterns="/searchAds")
+public class SearchAdsServlet extends HttpServlet {
+// public void doGet(HttpServletRequest request, HttpServletResponse response)
+// throws IOException{
+//
+// }
+protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
+ String keyword = request.getParameter("keyword");
+ if(keyword.isEmpty()) {
+ response.sendRedirect("/ads");
+ return;
+ }
+ try{
+ List keywordAds = DaoFactory.getAdsDao().findAdByKeyword(keyword);
+ request.setAttribute("ads", keywordAds);
+ request.getRequestDispatcher("/WEB-INF/ads/keywordAds.jsp").forward(request, response);
+ if (keywordAds.size() == 0) {
+ request.setAttribute("zeroResults", true);
+ } else {
+ request.setAttribute("zeroResults", false);
+ }
+ request.setAttribute("keyword", keyword.toLowerCase());
+ request.setAttribute("ads", keywordAds);
+ request.getRequestDispatcher("/WEB-INF/ads/showAd.jsp").forward(request, response);
+ for (Ad ad : keywordAds) {
+ System.out.println(ad.getTitle());
+ }
+ }catch(SQLException e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/com/codeup/adlister/controllers/ShowAdServlet.java b/src/main/java/com/codeup/adlister/controllers/ShowAdServlet.java
new file mode 100644
index 0000000000..1e358c4606
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/controllers/ShowAdServlet.java
@@ -0,0 +1,98 @@
+package com.codeup.adlister.controllers;
+
+import com.codeup.adlister.dao.DaoFactory;
+import com.codeup.adlister.models.Ad;
+import com.codeup.adlister.models.AdCategory;
+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.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+@WebServlet(name="controllers.SearchAdsServlet", urlPatterns="/Categories/category")
+public class ShowAdServlet extends HttpServlet {
+ protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ String category = req.getParameter("category");
+ String searchCategory = getCategory(category);
+ req.setAttribute("category", searchCategory);
+
+ List categories = DaoFactory.getAdsDao().getAdsFromCategory(searchCategory);
+ req.setAttribute("ads", category);
+ req.getRequestDispatcher("/WEB-INF/ads/category.jsp").forward(req, res);
+ }
+
+ protected String getCategory(String category) {
+ String actualCategory = "";
+ if (category.equals("For Sale")) {
+ actualCategory = "For Sale";
+ } else if (category.equals("Automotive")) {
+ actualCategory = "Automotive";
+ } else if (category.equals("Jobs")) {
+ actualCategory = "Jobs";
+ } else if (category.equals("Community")) {
+ actualCategory = "Community";
+// } else if (category.equals("")) {
+// actualCategory = "";
+ }
+ return actualCategory;
+ }
+}
+// @WebServlet("/ad")
+// public class ShowAdServlet extends HttpServlet {
+// protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+// long id = Long.parseLong(req.getParameter("id"));
+// try {
+// Ad ad = DaoFactory.getAdsDao().findOne(id);
+// req.setAttribute("ad", ad);
+// User user = DaoFactory.getUsersDao().findById(ad.getUserId());
+// req.setAttribute("adUser", user);
+// } catch (SQLException e) {
+// e.printStackTrace();
+// }
+// req.getRequestDispatcher("/WEB-INF/ads/showAd.jsp").forward(req, res);
+// }
+//
+// public static void main(String[] args) {
+//
+// }
+//early version ND
+// long id = Long.parseLong(req.getParameter("id"));
+// String adId = req.getParameter("id");
+// req.setAttribute("ad", adId);
+// if(adId != null){
+//
+// }
+
+// need to get id of ad
+// here we will bring in DaoFactory here to getAdById()
+// need to set id of ad to "ad"
+// req.setAttribute("ad", id)
+// req.getRequestDispatcher("/WEB-INF/ads/search.jsp").forward(req, res);
+// }
+//
+// public static void main(String[] args) {
+//
+// @WebServlet("/ad")
+// public class ShowAdServlet extends HttpServlet {
+// protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+// long id = Long.parseLong(req.getParameter("id"));
+// try {
+// Ad ad = DaoFactory.getAdsDao().findOne(id);
+// req.setAttribute("ad", ad);
+// User user = DaoFactory.getUsersDao().findById(ad.getUserId());
+// req.setAttribute("adUser", user);
+// } catch (SQLException e) {
+// e.printStackTrace();
+// }
+// req.getRequestDispatcher("/WEB-INF/ads/showAd.jsp").forward(req, res);
+// }
+//
+// public static void main(String[] args) {
+//
+// }
+//}
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..76383d6a8e
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.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("/ads/update")
+public class UpdateAdServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+// String idQuery = req.getParameter("id");
+// Ad ad = DaoFactory.getAdsDao().findByStringId(idQuery);
+// User user = (User) req.getSession().getAttribute("user");
+// if (ad.getUserId() != user.getId()) {
+// resp.sendRedirect("/profile");
+// } else {
+// req.getSession().setAttribute("ad", ad);
+// }
+
+
+ Long id = Long.parseLong(req.getParameter("ad_id"));
+ Ad ad = DaoFactory.getAdsDao().findById(id);
+ req.getSession().setAttribute("ad", ad);
+ req.getRequestDispatcher("/WEB-INF/ads/update.jsp").forward(req,resp);
+ }
+
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ String title = req.getParameter("title");
+ String description = req.getParameter("description");
+
+ boolean inputHasErrors = title.isEmpty() || description.isEmpty();
+
+ if (inputHasErrors) {
+ resp.sendRedirect("/ads/update");
+ }
+
+ Ad ad = (Ad) req.getSession().getAttribute("ad");
+ ad.setTitle(title);
+ ad.setDescription(description);
+
+ DaoFactory.getAdsDao().update(ad);
+ if (req.getSession().getAttribute("vp") == null){
+ resp.sendRedirect("/ads");
+ } else {
+ resp.sendRedirect("/profile");
+ }
+
+ }
+}
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..426b18c946
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/controllers/UpdateProfileServlet.java
@@ -0,0 +1,47 @@
+package com.codeup.adlister.controllers;
+
+import com.codeup.adlister.dao.DaoFactory;
+import com.codeup.adlister.models.User;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@WebServlet("/profile/update")
+public class UpdateProfileServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ if (req.getSession().getAttribute("user") == null) {
+ resp.sendRedirect("/login");
+ return;
+ }
+ req.getRequestDispatcher("/WEB-INF/profile/update.jsp").forward(req,resp);
+ }
+
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ String username = req.getParameter("username");
+ String email = req.getParameter("email");
+
+ boolean inputHasErrors = username.isEmpty() || email.isEmpty();
+
+ if (inputHasErrors) {
+ resp.sendRedirect("/profile/update");
+ return;
+ }
+
+ User user = (User) req.getSession().getAttribute("user");
+
+ user.setUsername(username);
+ user.setEmail(email);
+
+ DaoFactory.getUsersDao().update(user);
+ req.getSession().setAttribute("user", user);
+ resp.sendRedirect("/profile");
+
+ }
+}
diff --git a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java
index e1b8941067..d68f8a2f21 100644
--- a/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java
+++ b/src/main/java/com/codeup/adlister/controllers/ViewProfileServlet.java
@@ -1,11 +1,16 @@
package com.codeup.adlister.controllers;
+import com.codeup.adlister.dao.DaoFactory;
+import com.codeup.adlister.models.Ad;
+import com.codeup.adlister.models.User;
+
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.util.List;
@WebServlet(name = "controllers.ViewProfileServlet", urlPatterns = "/profile")
public class ViewProfileServlet extends HttpServlet {
@@ -14,6 +19,19 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
response.sendRedirect("/login");
return;
}
+
+ if (request.getSession().getAttribute("vi") != null) {
+ request.getSession().removeAttribute("vi");
+ }
+ request.getSession().setAttribute("vp", "hi");
+
+ //shows all of the current users ads in the profile by userid
+
+ User user = (User)request.getSession().getAttribute("user");
+ long userId = user.getId();
+
+ List results = DaoFactory.getAdsDao().allAdsByUserId(userId);
+ request.setAttribute("ads", results);
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..c7b1ef3f9d 100644
--- a/src/main/java/com/codeup/adlister/dao/Ads.java
+++ b/src/main/java/com/codeup/adlister/dao/Ads.java
@@ -1,7 +1,9 @@
package com.codeup.adlister.dao;
import com.codeup.adlister.models.Ad;
+import com.codeup.adlister.models.AdCategory;
+import java.sql.SQLException;
import java.util.List;
public interface Ads {
@@ -9,4 +11,33 @@ public interface Ads {
List all();
// insert a new ad and return the new ad's id
Long insert(Ad ad);
+ // get single ad
+ Ad findOne(long id) throws SQLException;
+ // from reading should add all CRUD methods to DAO
+ void update(Ad ad);
+ void delete(Ad ad);
+
+ //added by ND
+ List findAdByKeyword(String keyword) throws SQLException;
+ List search(String keyword);
+
+ //show all ads on profile
+ List allAdsByUserId(long userId);
+
+ Ad findByStringId(String id);
+ Ad findById(long id);
+
+ Ad findById(Long id);
+
+ List getAdsFromCategory(String searchCategory);
+
+ List keywordAds(String keyword);
+
+
+// have these methods here just in case***********************
+// List getAdsFromCategory(String category);
+// void removeCategories(Long ad_id);
+// void addCategory(Long ad_id, Long category_id);
+
}
+
diff --git a/src/main/java/com/codeup/adlister/dao/Categories.java b/src/main/java/com/codeup/adlister/dao/Categories.java
new file mode 100644
index 0000000000..ec2bf85bcc
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/dao/Categories.java
@@ -0,0 +1,19 @@
+package com.codeup.adlister.dao;
+
+import com.codeup.adlister.models.Ad;
+import com.codeup.adlister.models.Category;
+
+import java.util.List;
+
+public interface Categories {
+ // get all categories
+ List all();
+ // insert a new Category
+ Long insert(Category category);
+
+// ND
+// made these just in case
+ void addCategory(Long ad_id, Long category_id);
+ void removeCategories(Long ad_id);
+ List getAdsFromCategory(String category);
+}
diff --git a/src/main/java/com/codeup/adlister/dao/DaoFactory.java b/src/main/java/com/codeup/adlister/dao/DaoFactory.java
index e002140f85..d7f7bc2097 100644
--- a/src/main/java/com/codeup/adlister/dao/DaoFactory.java
+++ b/src/main/java/com/codeup/adlister/dao/DaoFactory.java
@@ -3,7 +3,7 @@
public class DaoFactory {
private static Ads adsDao;
private static Users usersDao;
- private static Config config = new Config();
+ private static final Config config = new Config();
public static Ads getAdsDao() {
if (adsDao == null) {
@@ -18,4 +18,11 @@ public static Users getUsersDao() {
}
return usersDao;
}
+//
+// public static Categories getCategoriesDao() {
+// if (categoriesDao == null) {
+// categoriesDao = new Categories(config);
+// }
+// return categoriesDao;
+// }
}
diff --git a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java b/src/main/java/com/codeup/adlister/dao/ListAdsDao.java
deleted file mode 100644
index 8d3baaa369..0000000000
--- a/src/main/java/com/codeup/adlister/dao/ListAdsDao.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.codeup.adlister.dao;
-
-import com.codeup.adlister.models.Ad;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ListAdsDao implements Ads {
- private List ads;
-
- public List all() {
- if (ads == null) {
- ads = generateAds();
- }
- return ads;
- }
-
- public Long insert(Ad ad) {
- // make sure we have ads
- if (ads == null) {
- ads = generateAds();
- }
- // we'll assign an "id" here based on the size of the ads list
- // really the dao would handle this
- ad.setId((long) ads.size());
- ads.add(ad);
- return ad.getId();
- }
-
- private List generateAds() {
- List ads = new ArrayList<>();
- ads.add(new Ad(
- 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!"
- ));
- 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"
- ));
- ads.add(new Ad(
- 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..95feb8ecf5 100644
--- a/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java
+++ b/src/main/java/com/codeup/adlister/dao/MySQLAdsDao.java
@@ -1,11 +1,9 @@
package com.codeup.adlister.dao;
-
+import com.codeup.adlister.dao.Config;
import com.codeup.adlister.models.Ad;
+import com.codeup.adlister.models.AdCategory;
import com.mysql.cj.jdbc.Driver;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
@@ -17,16 +15,15 @@ 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);
}
}
- @Override
public List all() {
PreparedStatement stmt = null;
try {
@@ -38,7 +35,31 @@ public List all() {
}
}
- @Override
+ public void delete(Ad ad) {
+ String query = "DELETE FROM ads WHERE id = ?";
+ try {
+ PreparedStatement stmt = connection.prepareStatement(query);
+ stmt.setLong(1, ad.getId());
+ stmt.executeUpdate();
+ } catch (SQLException e) {
+ throw new RuntimeException("Error deleting an ad by id", e);
+ }
+ }
+
+ 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 the existing ad", e);
+ }
+ }
+
+
public Long insert(Ad ad) {
try {
String insertQuery = "INSERT INTO ads(user_id, title, description) VALUES (?, ?, ?)";
@@ -55,12 +76,33 @@ public Long insert(Ad ad) {
}
}
+ @Override
+ public Ad findOne(long id) throws SQLException {
+ return null;
+ }
+
+
+// @Override
+// public List findAdByKeyword(String keyword) throws SQLException {
+// return null;
+// }
+
+ //need to add arraylist methods, etc. ND
+// @Override
+// public List findAdByKeyword(String keyword) throws SQLException {
+// String query = "SELECT *, users.userName FROM ads\n + ";
+//
+//// prepped statement
+// //while(rs.nets())
+// return null;
+// }
+
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 +113,105 @@ private List createAdsFromResults(ResultSet rs) throws SQLException {
}
return ads;
}
+
+ //need to add arraylist methods, etc. ND
+ @Override
+ public List findAdByKeyword(String keyword) throws SQLException {
+ String query = "SELECT *, users.userName FROM ads" +
+ "JOIN users" + "ON users.id = ads.user_id" +
+ "WHERE ads.title LIKE ?";
+
+ PreparedStatement pstmt = connection.prepareStatement(query);
+ pstmt.setString(1, "%" + keyword + "%");
+ ResultSet rs = pstmt.executeQuery();
+ List keywordAds = new ArrayList<>();
+ while (rs.next()) {
+// name of the columns of list? Check on changes as needed. i.e. categories, etc.
+ Ad newAd = new Ad(
+ rs.getLong("id"),
+ rs.getString("user_id"),
+ rs.getString("username"),
+ rs.getString("title"),
+ rs.getString("description"),
+ rs.getString("category")
+ );
+// check on method for keywordAds//nvm-i need .add for adding to the list.
+ keywordAds.add(newAd);
+ }
+ return keywordAds;
+ }
+
+
+ //shows all of the current users ads in the profile by userid
+//@Override
+ public List allAdsByUserId(long userId) {
+ String query = "SELECT * FROM ads WHERE user_id = ?";
+ try {
+ PreparedStatement stmt = connection.prepareStatement(query);
+ stmt.setLong(1, userId);
+ ResultSet rs = stmt.executeQuery();
+ return createAdsFromResults(rs);
+ } catch (SQLException e) {
+ throw new RuntimeException("Error: cannot retrieve ads", e);
+ }
+ }
+
+ public Ad findByStringId(String id) {
+ String findquery = "SELECT * FROM ads WHERE id like (?)";
+ try{
+ PreparedStatement stmt = connection.prepareStatement(findquery);
+ stmt.setString(1, id);
+ ResultSet rs =stmt.executeQuery();
+ rs.next();
+ return extractAd(rs);
+ } catch (SQLException e) {
+ throw new RuntimeException("Error finding the ad by string id");
+ }
+ }
+
+ @Override
+ public Ad findById(long id) {
+ return null;
+ }
+
+ @Override
+ public Ad findById(Long id) {
+ return null;
+ }
+
+
+ @Override
+ public List getAdsFromCategory(String searchCategory) {
+ return null;
+ }
+//the "SEARCH"
+ @Override
+ public List keywordAds(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);
+ }
+ }
+
+ @Override
+ public List search(String keyword) {
+ String query = "SELECT * FROM ads WHERE title LIKE ? OR description LIKE ?";
+ try{
+ PreparedStatement pstmt = connection.prepareStatement(query);
+ pstmt.setString(1, '%' + keyword + '%');
+ pstmt.setString(2, '%' + keyword + '%');
+ ResultSet rs = pstmt.executeQuery();
+ return createAdsFromResults(rs);
+ }catch (SQLException e) {
+ throw new RuntimeException("Error find the ad", e);
+ }
+ }
+
+
}
diff --git a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java
index 4e69e57044..e926e87969 100644
--- a/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java
+++ b/src/main/java/com/codeup/adlister/dao/MySQLUsersDao.java
@@ -1,5 +1,5 @@
package com.codeup.adlister.dao;
-
+import com.codeup.adlister.util.Password;
import com.codeup.adlister.models.User;
import com.mysql.cj.jdbc.Driver;
@@ -7,14 +7,15 @@
public class MySQLUsersDao implements Users {
private Connection connection;
+ private Config config = new Config();
public MySQLUsersDao(Config config) {
try {
DriverManager.registerDriver(new Driver());
connection = DriverManager.getConnection(
- config.getUrl(),
- config.getUser(),
- config.getPassword()
+ config.getUrl(),
+ config.getUser(),
+ config.getPassword()
);
} catch (SQLException e) {
throw new RuntimeException("Error connecting to the database!", e);
@@ -34,6 +35,101 @@ public User findByUsername(String username) {
}
}
+ // findByid needed in order to grab from 1:n relation with ads
+ @Override
+ public User findById(long id){
+ String query = "SELECT * FROM users WHERE id = ?";
+ 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 id", e);
+ }
+ }
+
+ @Override
+ public boolean validateEmail(String email) throws SQLException {
+ boolean emailExist = false;
+ DriverManager.registerDriver(new Driver());
+ connection = DriverManager.getConnection(
+ config.getUrl(),
+ config.getUser(),
+ config.getPassword()
+ );
+ String query =" SELECT * FROM users WHERE email = ?";
+ PreparedStatement pstmt = connection.prepareStatement(query);
+ pstmt.setString(1, email);
+ ResultSet rs = pstmt.executeQuery();
+ while (rs.next()) {
+ if(rs.getString("email").equals(email)){
+ emailExist = true;
+ }
+ }
+ return emailExist;
+}
+ @Override
+ public boolean validateUsername(String username) throws SQLException {
+ boolean usernameExist = false;
+ DriverManager.registerDriver(new Driver());
+ connection = DriverManager.getConnection(
+ config.getUrl(),
+ config.getUser(),
+ config.getPassword()
+ );
+ String query =" SELECT * FROM users WHERE username = ?";
+ PreparedStatement pstmt = connection.prepareStatement(query);
+ pstmt.setString(1, username);
+ ResultSet rs = pstmt.executeQuery();
+ while (rs.next()) {
+ if(rs.getString("username").equals(username)){
+ usernameExist = true;
+ }
+ }
+ return usernameExist;
+ }
+
+ @Override
+ public boolean validatePassword(String password) throws SQLException {
+ boolean passwordCorrect = false;
+
+ String query = " SELECT * FROM users WHERE password = ?";
+ PreparedStatement pstmt = connection.prepareStatement(query);
+ pstmt.setString(1, password);
+ ResultSet rs = pstmt.executeQuery();
+ while (rs.next()) {
+ if (rs.getString("password").equals(password)) {
+ passwordCorrect = true;
+ }
+ }
+ return passwordCorrect;
+ }
+
+ public void delete(String username) {
+ String query = "DELETE FROM users WHERE username = ?";
+ try {
+ PreparedStatement stmt = connection.prepareStatement(query);
+ stmt.setString(1, username);
+ stmt.executeUpdate();
+ } catch (SQLException e) {
+ throw new RuntimeException("Error deleting a user by username", e);
+ }
+ }
+
+ public void update(User user) {
+ String query = "UPDATE users SET username = (?), email = (?), password = (?) WHERE id = (?)";
+ try{
+ PreparedStatement stmt = connection.prepareStatement(query);
+ stmt.setString(1, user.getUsername());
+ stmt.setString(2, user.getEmail());
+ stmt.setString(3, user.getPassword());
+ stmt.setLong(4, user.getId());
+ stmt.executeUpdate();
+ } catch (SQLException e) {
+ throw new RuntimeException("Error updating the existing user", e);
+ }
+ }
+
@Override
public Long insert(User user) {
String query = "INSERT INTO users(username, email, password) VALUES (?, ?, ?)";
@@ -51,16 +147,17 @@ public Long insert(User user) {
}
}
+
private User extractUser(ResultSet rs) throws SQLException {
- if (! rs.next()) {
+ if (!rs.next()) {
return null;
}
return new User(
- rs.getLong("id"),
- rs.getString("username"),
- rs.getString("email"),
- rs.getString("password")
+ rs.getLong("id"),
+ rs.getString("username"),
+ rs.getString("email"),
+ rs.getString("password")
);
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/codeup/adlister/dao/Users.java b/src/main/java/com/codeup/adlister/dao/Users.java
index 62da74d20b..de1ad17055 100644
--- a/src/main/java/com/codeup/adlister/dao/Users.java
+++ b/src/main/java/com/codeup/adlister/dao/Users.java
@@ -2,9 +2,19 @@
import com.codeup.adlister.models.User;
+import java.sql.SQLException;
import java.util.List;
public interface Users {
User findByUsername(String username);
Long insert(User user);
-}
+
+ void delete(String user);
+ void update(User user);
+ // findByid needed in order to grab from 1:n relation with ads
+ User findById(long id);
+
+ boolean validateEmail(String username) throws SQLException;
+ boolean validateUsername(String username) throws SQLException;
+ boolean validatePassword(String password) throws SQLException;
+}
\ No newline at end of file
diff --git a/src/main/java/com/codeup/adlister/models/Ad.java b/src/main/java/com/codeup/adlister/models/Ad.java
index 9e9e02d87e..24a472ddb2 100644
--- a/src/main/java/com/codeup/adlister/models/Ad.java
+++ b/src/main/java/com/codeup/adlister/models/Ad.java
@@ -2,10 +2,25 @@
public class Ad {
private long id;
+ //ND
+ private String dateCreated;
+ private String username;
+ private String category;
+
private long userId;
+ private long categoryId;
private String title;
private String description;
+ // CONSTRUCTORS
+ public Ad(){}
+
+ public Ad(long userId, String title, String description) {
+ this.userId = userId;
+ this.title = title;
+ this.description = description;
+ }
+
public Ad(long id, long userId, String title, String description) {
this.id = id;
this.userId = userId;
@@ -13,41 +28,80 @@ public Ad(long id, long userId, String title, String description) {
this.description = description;
}
- public Ad(long userId, String title, String description) {
+ public Ad(long id, long userId, long categoryId, String title, String description) {
+ this.categoryId = categoryId;
+ this.id = id;
this.userId = userId;
this.title = title;
this.description = description;
}
+ //ND
+ public Ad(long id, String username, String title, String description, String category, String dateCreated){
+ this.id = id;
+ this.username = username;
+ this.title = title;
+ this.description = description;
+ this.category = category;
+ this.dateCreated = dateCreated;
+ }
+ // waiting for changes.
+
+ public String getDateCreated() {
+ return dateCreated;
+ }
+
+ public void setDateCreated(String dateCreated) {
+ this.dateCreated = dateCreated;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+
+
+ // GETTERS/SETTERS
public long getId() {
return id;
}
-
public void setId(long id) {
this.id = id;
}
-
public long getUserId() {
return userId;
}
-
public void setUserId(long userId) {
this.userId = userId;
}
-
public String getTitle() {
return title;
}
-
public void setTitle(String title) {
this.title = title;
}
-
public String getDescription() {
return description;
}
-
public void setDescription(String description) {
this.description = description;
}
-}
+ public long getCategoryId() {
+ return categoryId;
+ }
+ public void setCategoryId(long categoryId) {
+ this.categoryId = categoryId;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/codeup/adlister/models/AdCategory.java b/src/main/java/com/codeup/adlister/models/AdCategory.java
new file mode 100644
index 0000000000..f0c6845ed1
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/models/AdCategory.java
@@ -0,0 +1,31 @@
+package com.codeup.adlister.models;
+
+public class AdCategory {
+ private long categoryId;
+ private long adId;
+
+ // CONSTRUCTORS
+ public AdCategory(){}
+
+ public AdCategory(long categoryId, long adId){
+ this.categoryId = categoryId;
+ this.adId = adId;
+ }
+
+ // GETTERS/SETTERS
+ public long getCategoryId() {
+ return categoryId;
+ }
+ public void setCategoryId(long categoryId) {
+ this.categoryId = categoryId;
+ }
+ public long getAdId() {
+ return adId;
+ }
+ public void setAdId(long adId) {
+ this.adId = adId;
+ }
+
+}
+
+
diff --git a/src/main/java/com/codeup/adlister/models/Category.java b/src/main/java/com/codeup/adlister/models/Category.java
new file mode 100644
index 0000000000..311ec3b3a7
--- /dev/null
+++ b/src/main/java/com/codeup/adlister/models/Category.java
@@ -0,0 +1,35 @@
+package com.codeup.adlister.models;
+
+
+
+public class Category {
+ private long id;
+ private String name;
+
+ // CONSTRUCTORS
+ public Category(){}
+
+ public Category(String name){
+ this.name = name;
+ }
+
+ public Category(long id, String name){
+ this.id = id;
+ this.name = name;
+ }
+
+
+ // GETTERS/SETTERS
+ public long getId() {
+ return id;
+ }
+ public void setId(long id) {
+ this.id = id;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/codeup/adlister/models/User.java b/src/main/java/com/codeup/adlister/models/User.java
index e43bc0dc81..9b092d5cf5 100644
--- a/src/main/java/com/codeup/adlister/models/User.java
+++ b/src/main/java/com/codeup/adlister/models/User.java
@@ -7,6 +7,7 @@ public class User {
private String username;
private String email;
private String password;
+ private String date;
public User() {}
@@ -23,6 +24,13 @@ public User(long id, String username, String email, String password) {
this.password = password;
}
+ public User(String username, String email, String password, String date) {
+ this.username = username;
+ this.email = email;
+ setPassword(password);
+ this.date = date;
+ }
+
public long getId() {
return id;
}
diff --git a/src/main/webapp/WEB-INF/ads/category.jsp b/src/main/webapp/WEB-INF/ads/category.jsp
new file mode 100644
index 0000000000..65d2c7128a
--- /dev/null
+++ b/src/main/webapp/WEB-INF/ads/category.jsp
@@ -0,0 +1,16 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: nicholasdiazjr
+ Date: 2/18/22
+ Time: 1:33 PM
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/ads/delete.jsp b/src/main/webapp/WEB-INF/ads/delete.jsp
new file mode 100644
index 0000000000..03968cc5dd
--- /dev/null
+++ b/src/main/webapp/WEB-INF/ads/delete.jsp
@@ -0,0 +1,25 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%--
+ Created by IntelliJ IDEA.
+ User: eloysbook
+ Date: 2/17/22
+ Time: 3:59 PM
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/ads/deletedAd.jsp b/src/main/webapp/WEB-INF/ads/deletedAd.jsp
new file mode 100644
index 0000000000..44a3644d23
--- /dev/null
+++ b/src/main/webapp/WEB-INF/ads/deletedAd.jsp
@@ -0,0 +1,16 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: nicholasdiazjr
+ Date: 2/18/22
+ Time: 1:33 PM
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ delete Ad
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/ads/index.jsp b/src/main/webapp/WEB-INF/ads/index.jsp
index 6f4371f0bb..7a9ce1d973 100644
--- a/src/main/webapp/WEB-INF/ads/index.jsp
+++ b/src/main/webapp/WEB-INF/ads/index.jsp
@@ -3,22 +3,62 @@
-
+
-
+
+
diff --git a/src/main/webapp/WEB-INF/ads/keywordAds.jsp b/src/main/webapp/WEB-INF/ads/keywordAds.jsp
new file mode 100644
index 0000000000..1afe05b0a6
--- /dev/null
+++ b/src/main/webapp/WEB-INF/ads/keywordAds.jsp
@@ -0,0 +1,67 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%--
+ Created by IntelliJ IDEA.
+ User: nicholasdiazjr
+ Date: 2/14/22
+ Time: 4:31 PM
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+
+
+
+ <%-- needed this for css stylesheet!! --%>
+
+
+
+
+ Search
+
+
+
+
+
+ <%-- //add a sticky?--%>
+
+ <%-- add side image?? --%>
+
+
+
+<%-- Do we need/want a footer?--%>
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/ads/showAd.jsp b/src/main/webapp/WEB-INF/ads/showAd.jsp
new file mode 100644
index 0000000000..e47424b6de
--- /dev/null
+++ b/src/main/webapp/WEB-INF/ads/showAd.jsp
@@ -0,0 +1,59 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%--
+ Created by IntelliJ IDEA.
+ User: julianmartinez
+ Date: 2/14/22
+ Time: 14:54
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+<%-- added by ND--%>
+
+
+
+
+ Title
+
+
+
+
+
+
+
+<%--added back button--%>
+Back to Ads
+
+<%-- Your Ad Title:
--%>
+<%-- ${ad.description}
--%>
+<%-- ${ad.user_id.getName()}
--%>
+<%-- ${ad.user_id.getEmail()}
--%>
+
+
<
+
Ad Title
+
${ad.description}
+
+
Contact Info
+
User: ${user.username}
+
Email: ${user.email}
+
+
ad.user_id.getName()
+
ad.user_id.getEmail()
+
Categories
+ <%--FOR LOOP to display all categories an ad belongs to ad.category_id.getName()--%>
+
+ - Jobs
+ - Housing
+ - For Sale
+ - Community
+
+
+
+
+
+
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..4acb6241a0
--- /dev/null
+++ b/src/main/webapp/WEB-INF/ads/update.jsp
@@ -0,0 +1,26 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: eloysbook
+ Date: 2/17/22
+ Time: 2:15 PM
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/login.jsp b/src/main/webapp/WEB-INF/login.jsp
index 83ce2d0a1f..23be6eb192 100644
--- a/src/main/webapp/WEB-INF/login.jsp
+++ b/src/main/webapp/WEB-INF/login.jsp
@@ -4,21 +4,28 @@
+ Login
+
+
+
diff --git a/src/main/webapp/WEB-INF/partials/head.jsp b/src/main/webapp/WEB-INF/partials/head.jsp
index a33443d65c..a70b310338 100644
--- a/src/main/webapp/WEB-INF/partials/head.jsp
+++ b/src/main/webapp/WEB-INF/partials/head.jsp
@@ -1,2 +1,7 @@
${param.title}
-
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/partials/navbar.jsp b/src/main/webapp/WEB-INF/partials/navbar.jsp
index 8e1f98f662..0c5c49260c 100644
--- a/src/main/webapp/WEB-INF/partials/navbar.jsp
+++ b/src/main/webapp/WEB-INF/partials/navbar.jsp
@@ -1,13 +1,102 @@
-