Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
8b9f992
initial commit
joshuamramos32 Feb 13, 2023
62e3ff5
adding navbar and partially completed profile page
joshuamramos32 Feb 13, 2023
cdeeb1c
adding search functionality
SnapKraklePaul Feb 13, 2023
2e0d78b
Merge pull request #1 from SWR-Adlister/paul-wagner
paul-wagner1120 Feb 13, 2023
1b36920
Merge branch 'master' into joshua-ramos
paul-wagner1120 Feb 13, 2023
24cb5f2
Merge pull request #2 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 13, 2023
478dd7d
added register link to navbar and added redirect to register page if …
SnapKraklePaul Feb 14, 2023
5332c34
Merge pull request #3 from SWR-Adlister/paul-wagner
joshuamramos32 Feb 14, 2023
b8cf4e1
adding UNIQUE to username and email fields on the users table
SnapKraklePaul Feb 14, 2023
51d02fe
adding unique feature to usernames and emails in the migration databa…
SnapKraklePaul Feb 14, 2023
5281909
adding user update
joshuamramos32 Feb 14, 2023
1b249ce
Merge pull request #4 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 14, 2023
e7cf576
fixing migration file
SnapKraklePaul Feb 14, 2023
9f4ad42
fixing edit username in MySQLusers dao
joshuamramos32 Feb 14, 2023
7047b8f
Merge pull request #6 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 14, 2023
aeb944d
Merge pull request #5 from SWR-Adlister/paul-wagner
paul-wagner1120 Feb 14, 2023
99ecf34
Merge branch 'master' of github.com:SWR-Adlister/java-adlister into p…
SnapKraklePaul Feb 14, 2023
27da1b7
adding user ads to profile page
SnapKraklePaul Feb 14, 2023
d7426cd
Merge pull request #7 from SWR-Adlister/paul-wagner
paul-wagner1120 Feb 14, 2023
90ae036
adding broken view adpage
matthew-stanley-35t Feb 15, 2023
323555e
Merge pull request #8 from SWR-Adlister/matthew-stanley
paul-wagner1120 Feb 15, 2023
cedf92b
Merge branch 'master' of github.com:SWR-Adlister/java-adlister into p…
SnapKraklePaul Feb 15, 2023
3a39cbd
adding fixed view adpage
matthew-stanley-35t Feb 15, 2023
12f9104
Merge pull request #9 from SWR-Adlister/matthew-stanley
paul-wagner1120 Feb 15, 2023
9996d80
Merge branch 'master' of github.com:SWR-Adlister/java-adlister into p…
SnapKraklePaul Feb 15, 2023
ccafe93
adding link for create ad/moved search bar
matthew-stanley-35t Feb 15, 2023
2de8547
Merge pull request #10 from SWR-Adlister/matthew-stanley
joshuamramos32 Feb 15, 2023
a5df3a4
Merge branch 'master' of github.com:SWR-Adlister/java-adlister into p…
SnapKraklePaul Feb 15, 2023
16b7b48
adding delete profile
joshuamramos32 Feb 15, 2023
08ebae4
Merge pull request #11 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 15, 2023
7058b6e
adding flow for editingn ads
matthew-stanley-35t Feb 15, 2023
9a397bf
Merge pull request #12 from SWR-Adlister/matthew-stanley
joshuamramos32 Feb 15, 2023
4a6aac3
Merge branch 'master' of github.com:SWR-Adlister/java-adlister into p…
SnapKraklePaul Feb 15, 2023
d1d9841
adding styling
SnapKraklePaul Feb 15, 2023
6d3c4f7
adding pop for mismatch passwords in updateInfoServlet
joshuamramos32 Feb 15, 2023
75952c8
Merge pull request #13 from SWR-Adlister/paul-wagner
paul-wagner1120 Feb 15, 2023
4abe949
Merge pull request #14 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 15, 2023
8f1b2b4
fixing error in updateinfo servlet
joshuamramos32 Feb 15, 2023
8bcf8d9
Merge pull request #15 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 15, 2023
6dac9be
Merge branch 'master' of github.com:SWR-Adlister/java-adlister into p…
SnapKraklePaul Feb 15, 2023
a9a569d
adding username validation to register servlet
joshuamramos32 Feb 16, 2023
2344de2
adding username validation
joshuamramos32 Feb 16, 2023
91a20e8
Merge pull request #16 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 16, 2023
08e31b6
adding flow for deleting an ad
matthew-stanley-35t Feb 16, 2023
031e848
Merge pull request #17 from SWR-Adlister/matthew-stanley
joshuamramos32 Feb 16, 2023
ad68541
adding styling to landing page, nav bar and ads/index
SnapKraklePaul Feb 16, 2023
00e177d
Merge pull request #18 from SWR-Adlister/paul-wagner
joshuamramos32 Feb 16, 2023
b82f743
Merge branch 'master' of github.com:SWR-Adlister/java-adlister into p…
SnapKraklePaul Feb 16, 2023
a901ebd
finishing styling
SnapKraklePaul Feb 16, 2023
d64587e
Merge pull request #19 from SWR-Adlister/paul-wagner
joshuamramos32 Feb 16, 2023
416eae6
adding proper redirects
joshuamramos32 Feb 16, 2023
46d1d4c
Merge pull request #20 from SWR-Adlister/joshua-ramos
paul-wagner1120 Feb 16, 2023
e194f11
adding error messages for username or password at login page
joshuamramos32 Feb 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions migration.sql → database_files/migration.sql
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
CREATE DATABASE IF NOT EXISTS adlister_db;

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,
username VARCHAR(240) NOT NULL UNIQUE ,
email VARCHAR(240) NOT NULL UNIQUE ,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
Expand Down
Empty file added database_files/seeder.sql
Empty file.
4 changes: 3 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.5</version>

<version>8.0.23</version>

</dependency>
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
public class CreateAdServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getSession().getAttribute("user") == null) {
request.getSession().setAttribute("redirectUrl", request.getRequestURI());
response.sendRedirect("/login");
return;
}
Expand Down
15 changes: 14 additions & 1 deletion src/main/java/com/codeup/adlister/controllers/LoginServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.User;
import com.codeup.adlister.util.Password;
import org.apache.taglibs.standard.tag.el.core.IfTag;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.io.IOException;

@WebServlet(name = "controllers.LoginServlet", urlPatterns = "/login")
Expand All @@ -27,16 +29,27 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
User user = DaoFactory.getUsersDao().findByUsername(username);

if (user == null) {
JOptionPane.showMessageDialog(null,"Username not found. Please try again.");
request.setAttribute("userNameExists", true);
response.sendRedirect("/login");
return;
}

boolean validAttempt = Password.check(password, user.getPassword());



if (validAttempt) {
request.getSession().setAttribute("user", user);
response.sendRedirect("/profile");
String redirectUrl = (String) request.getSession().getAttribute("redirectUrl");
if (redirectUrl != null) {
response.sendRedirect(redirectUrl);
} else {
response.sendRedirect("/profile");
}
} else {
JOptionPane.showMessageDialog(null,"Invalid password. Please try again.");
request.setAttribute("validAttempt", true);
response.sendRedirect("/login");
}
}
Expand Down
25 changes: 19 additions & 6 deletions src/main/java/com/codeup/adlister/controllers/RegisterServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.io.IOException;

@WebServlet(name = "controllers.RegisterServlet", urlPatterns = "/register")
Expand All @@ -23,19 +24,31 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
String passwordConfirmation = request.getParameter("confirm_password");

// validate input
boolean userNameExists = DaoFactory.getUsersDao().findByUsername(username) != null;
boolean inputHasErrors = username.isEmpty()
|| email.isEmpty()
|| password.isEmpty()
|| (! password.equals(passwordConfirmation));

if (inputHasErrors) {
if (userNameExists){
JOptionPane.showMessageDialog(null,"Please choose a new username that one exists already");
request.setAttribute("userNameExists", true);
response.sendRedirect("/register");
return;

}else if (inputHasErrors) {
JOptionPane.showMessageDialog(null,"Passwords do not match");
request.setAttribute("inputHasErrors", true);
String message = "Passwords did not match";
request.setAttribute("message", message);
response.sendRedirect("/register");


}else{
User user = new User(username, email, password);
DaoFactory.getUsersDao().insert(user);
request.getSession().setAttribute("user", user);
response.sendRedirect("/profile");
}

// create and save a new user
User user = new User(username, email, password);
DaoFactory.getUsersDao().insert(user);
response.sendRedirect("/login");
}
}
32 changes: 32 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/SearchServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.Ad;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;


@WebServlet(name = "SearchServlet", urlPatterns = "/ads/search")
public class SearchServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String searchString = req.getParameter("s");

try{
List<Ad> adlist =DaoFactory.getAdsDao().searchAds(searchString);
req.setAttribute("ads", adlist);
} catch (SQLException e){
throw new RuntimeException("Error");
}

req.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(req, resp);
}
}
53 changes: 53 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.Config;
import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.Ad;
import com.codeup.adlister.models.User;
import com.mysql.cj.jdbc.Driver;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

@WebServlet(name = "controllers.UpdateAdServlet", urlPatterns = "/ads/update")
public class UpdateAdServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
long adId = Long.parseLong(request.getParameter("adId"));
Ad ad = DaoFactory.getAdsDao().findUniqueAdId(adId);
request.setAttribute("ad", ad);
request.getRequestDispatcher("/WEB-INF/ads/update.jsp").forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
if (request.getParameter("editButton") != null) {

// Edit Process
long adId = Long.parseLong(request.getParameter("adId"));
Ad editAd = DaoFactory.getAdsDao().findUniqueAdId(adId);
String title = request.getParameter("title");
String description = request.getParameter("description");
editAd.setTitle(title);
editAd.setDescription(description);
DaoFactory.getAdsDao().update(editAd);

}
if (request.getParameter("delete-ad") != null) {

// Edit Process
long adId = Long.parseLong(request.getParameter("adId"));
Ad deleteAd = DaoFactory.getAdsDao().findUniqueAdId(adId);
DaoFactory.getAdsDao().delete(deleteAd);
}
response.sendRedirect("/ads");
}

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.Config;
import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.User;
import com.mysql.cj.jdbc.Driver;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import static java.lang.Long.parseLong;

@WebServlet(name = "UpdateInfoServlet", urlPatterns = "/updateinfo")
public class UpdateInfoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/updateinfo.jsp").forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
if (request.getSession().getAttribute("user") == null) {
response.sendRedirect("/login");
return;

} else {

if (request.getParameter("editButton") != null) {

// Edit Process
User editUser = (User) request.getSession().getAttribute("user");
Long userId = (long) editUser.getId();
String username = request.getParameter("username");
String email = request.getParameter("email");
String password = request.getParameter("password");
String passwordConfirmation = request.getParameter("confirm_password");

// Process Edit Action
boolean inputHasErrors = (!password.equals(passwordConfirmation));


if (inputHasErrors) {
JOptionPane.showMessageDialog(null,"Passwords do not match");
request.setAttribute("inputHasErrors", true);
String message = "Passwords did not match";
request.setAttribute("message", message);
request.getRequestDispatcher("/WEB-INF/updateinfo.jsp").forward(request, response);
} else {
editUser.setUsername(username);
editUser.setEmail(email);
editUser.setPassword(password);
DaoFactory.getUsersDao().update(editUser);
}

}
response.sendRedirect("/profile");
}
if (request.getParameter("delete-account") != null) {

// Edit Process
User user = (User) request.getSession().getAttribute("user");
DaoFactory.getUsersDao().delete(user);
request.getSession().invalidate();
}

}

}

26 changes: 26 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/ViewAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.codeup.adlister.controllers;
import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.Ad;
import com.codeup.adlister.models.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "controllers.ViewAdServlet", urlPatterns = "/adpage")
public class ViewAdServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

long adId = Long.parseLong(request.getParameter("adId"));
Ad ad = DaoFactory.getAdsDao().findUniqueAdId(adId);
User user = DaoFactory.getUsersDao().getUserByAd(adId);
request.setAttribute("ad", ad);
request.setAttribute("user", user);
request.getRequestDispatcher("/WEB-INF/adpage.jsp").forward(request, response);
}
}
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -14,6 +19,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
response.sendRedirect("/login");
return;
}

User user =(User) request.getSession().getAttribute("user");
Long userId = user.getId();

List<Ad> userAds = DaoFactory.getAdsDao().getUserAds(userId);
request.setAttribute("ads", userAds);

request.getRequestDispatcher("/WEB-INF/profile.jsp").forward(request, response);
}
}
11 changes: 11 additions & 0 deletions src/main/java/com/codeup/adlister/dao/Ads.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,22 @@

import com.codeup.adlister.models.Ad;

import java.sql.SQLException;
import java.util.List;

public interface Ads {
// get a list of all the ads
List<Ad> all();
// insert a new ad and return the new ad's id
Long insert(Ad ad);

List<Ad> searchAds(String searchString) throws SQLException;

Ad findUniqueAdId(Long ad);

List<Ad> getUserAds(long id);

void update(Ad editAd);

void delete(Ad deleteAd);
}
Loading