Commit 8ec7a88f by Hao-Hsiang Song

Merge branch 'master' of mit.cs.uchicago.edu:haohsiang/topics-auction

parents 6637494b 45e2ef7c
package edu.uchicago.mpcs.topics.auction;
import java.util.List;
public class Query {
private List<String> keywords;
}
package edu.uchicago.mpcs.topics.controller; package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.ItemCategory; import edu.uchicago.mpcs.topics.service.AdminService;
import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.auction.Query;
import edu.uchicago.mpcs.topics.support.Email;
import edu.uchicago.mpcs.topics.user.User; import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
public interface AdminController { /**
void block(User user); * Created by Rex on 2018-11-19
void remove(User user); */
void suspend(User user);
void addCategory(ItemCategory itemCategory); @RestController
void modifyCategory(ItemCategory itemCategory); @RequestMapping("/user")
void removeCategory(ItemCategory itemCategory); public class AdminController {
void stopAuction(Listing listing, User user);
List<Listing> viewFlaggedItems(); @Autowired
List<Listing> viewInProgressItems(); private AdminService adminService;
List<Listing> viewClosed(Query query);
List<Email> viewCustomerEmails(); @GetMapping("/list")
public List<User> getAllUsers()
{
return adminService.getAllUsers();
}
@PostMapping("/add")
public void addUser(@RequestBody User user)
{
adminService.addUser(user);
}
@DeleteMapping("/remove")
public void removeUser(@RequestBody User user) //or change to item ID
{
adminService.deleteUser(user.getUserId());
}
@PutMapping("/update")
public void updateUser(@RequestBody User user)
{
adminService.updateUser(user);
}
} }
...@@ -2,7 +2,6 @@ package edu.uchicago.mpcs.topics.controller; ...@@ -2,7 +2,6 @@ package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.ItemCategory; import edu.uchicago.mpcs.topics.auction.ItemCategory;
import edu.uchicago.mpcs.topics.auction.Listing; import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.auction.Query;
import java.util.List; import java.util.List;
......
package edu.uchicago.mpcs.topics.controller; package edu.uchicago.mpcs.topics.controller;
<<<<<<< HEAD
import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException;
import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException;
=======
>>>>>>> master
import edu.uchicago.mpcs.topics.service.UserService; import edu.uchicago.mpcs.topics.service.UserService;
import edu.uchicago.mpcs.topics.user.User; import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* Created by Rex on 2018-11-19 * Created by Rex on 2018-11-19
...@@ -18,28 +22,20 @@ public class UserController { ...@@ -18,28 +22,20 @@ public class UserController {
@Autowired @Autowired
private UserService userService; private UserService userService;
@GetMapping("/list") /**
public List<User> getAllUsers() * Register new User.
{ */
return userService.getAllUsers();
}
@PostMapping("/add") @PostMapping("/add")
public void addUser(@RequestBody User user) public void register(@RequestBody User user) throws UserAlreadyExistException{
{ userService.register(user);
userService.addUser(user); }
}
@DeleteMapping("/remove") /**
public void removeUser(@RequestBody User user) //or change to item ID * User Login.
{ */
userService.deleteUser(user.getUserId()); @PostMapping("/add")
} public void login(@RequestBody User user) throws UserNotFoundException {
userService.login(user);
@PutMapping("/update")
public void updateUser(@RequestBody User user)
{
userService.updateUser(user);
} }
} }
package edu.uchicago.mpcs.topics.db.Impl;
import edu.uchicago.mpcs.topics.db.UserRepository;
import edu.uchicago.mpcs.topics.query.UserQuery;
import edu.uchicago.mpcs.topics.user.User;
import org.hibernate.query.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Optional;
/**
* Created by Rex on 2018-11-20
*/
@Repository
public class UserRepositoryImpl implements UserRepository {
@Autowired
private SessionFactory sessionFactory;
@Override
public User register(User user) {
Serializable userId = sessionFactory.getCurrentSession().save(user);
return user;
}
@Override
public User login(String email, String password) {
Query query = sessionFactory.getCurrentSession().createQuery(UserQuery.IS_AUTHENTICATED);
query.setParameter("email", email);
query.setParameter("password", password);
User userFetched = (User) query.uniqueResult();
return userFetched;
}
@Override
public boolean isUserAlreadyExist(String email) {
Query query = sessionFactory.getCurrentSession().createQuery(UserQuery.IS_USER_ID_EXIST);
query.setParameter("email", email);
BigInteger count = (BigInteger) query.uniqueResult();
if (count.intValue() > 0) {
return true;
}
return false;
}
@Override
public Optional<User> getUserByEmail(String email) {
Query query = sessionFactory.getCurrentSession().createQuery(UserQuery.USER_BY_EMAIL);
query.setParameter("email", email);
User user = (User) query.uniqueResult();
return Optional.ofNullable(user);
}
@Override
public <S extends User> S save(S s) {
return null;
}
@Override
public <S extends User> Iterable<S> saveAll(Iterable<S> iterable) {
return null;
}
@Override
public Optional<User> findById(String s) {
return Optional.empty();
}
@Override
public boolean existsById(String s) {
return false;
}
@Override
public Iterable<User> findAll() {
return null;
}
@Override
public Iterable<User> findAllById(Iterable<String> iterable) {
return null;
}
@Override
public long count() {
return 0;
}
@Override
public void deleteById(String s) {
}
@Override
public void delete(User user) {
}
@Override
public void deleteAll(Iterable<? extends User> iterable) {
}
@Override
public void deleteAll() {
}
}
\ No newline at end of file
package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.user.Admin;
import edu.uchicago.mpcs.topics.user.Buyer;
import edu.uchicago.mpcs.topics.user.Seller;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.data.repository.CrudRepository;
/**
* Modified by Rex on 2018-11-19
*/
public interface UserDB extends CrudRepository<User, String>{
// void create(Admin admin);
// void create(Seller seller);
// void create(Buyer buyer);
//
// void block(Admin admin);
// void block(Seller seller);
// void block(Buyer buyer);
}
package edu.uchicago.mpcs.topics.db; package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.user.User; import edu.uchicago.mpcs.topics.user.User;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import java.util.Optional;
/** /**
* Created by Bright on 2018-11-18. * Modified by Rex on 2018-11-19
*/ */
public interface UserRepository extends CrudRepository<User, Long>
{
public interface UserRepository extends CrudRepository<User, String>{
User register(User user);
User login(String email, String password);
boolean isUserAlreadyExist(String userId);
Optional<User> getUserByEmail(String email);
} }
package edu.uchicago.mpcs.topics.exceptions;
/**
* Created by Rex on 2018-11-19
*
* Referenced from https://github.com/lovababu/auction-site/tree/master/monolith/src/main/java/com/sapient/auction/user/exception
*/
public class UserAlreadyExistException extends Exception {
private int statusCode;
private String message;
public UserAlreadyExistException() {
super();
}
public UserAlreadyExistException(String message) {
super(message);
this.message = message;
}
public UserAlreadyExistException(int statusCode, String message) {
super();
this.statusCode = statusCode;
this.message = message;
}
public UserAlreadyExistException(String message, Throwable t) {
super(message, t);
}
}
package edu.uchicago.mpcs.topics.exceptions;
import lombok.Getter;
/**
* Created by Rex on 2018-11-19.
* Referenced from https://github.com/lovababu/auction-site/tree/master/monolith/src/main/java/com/sapient/auction/user/exception
*/
@Getter
public class UserNotFoundException extends Exception{
private int statusCode;
private String message;
public UserNotFoundException() {
super();
}
public UserNotFoundException(String message) {
super(message);
this.message = message;
}
public UserNotFoundException(int statusCode, String message) {
super();
this.statusCode = statusCode;
this.message = message;
}
public UserNotFoundException(String message, Throwable t) {
super(message, t);
}
}
\ No newline at end of file
package edu.uchicago.mpcs.topics.query;
/**
* Created by Rex on 2018-11-20
*/
public final class UserQuery {
public static final String IS_USER_ID_EXIST = "select count(ID) from user where email = :email";
public static final String IS_AUTHENTICATED = "from User where email = :email and password = :password";
public static final String USER_BY_EMAIL = "from User where email = :email";
}
package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.db.UserRepository;
import edu.uchicago.mpcs.topics.db.UserRepository;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.ArrayList;
/**
* Modified by Rex on 2018-11-19
*/
@Service
public class AdminService {
// void block(User user);
// void remove(User user);
// void suspend(User user);
// void addCategory(ItemCategory itemCategory);
// void modifyCategory(ItemCategory itemCategory);
// void removeCategory(ItemCategory itemCategory);
// void stopAuction(Listing listing, User user);
// List<Listing> viewFlaggedItems();
// List<Listing> viewInProgressItems();
// List<Listing> viewClosed(Query query);
@Autowired
private UserRepository userDB;
public List<User> getAllUsers()
{
List<User> users = new ArrayList<>();
userDB.findAll().forEach(users::add);
return users;
}
public void addUser(User user)
{
userDB.save(user);
}
public void deleteUser(String userId)
{
userDB.deleteById(userId);
}
public void updateUser(User user)
{
userDB.save(user);
}
}
...@@ -2,7 +2,6 @@ package edu.uchicago.mpcs.topics.service; ...@@ -2,7 +2,6 @@ package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.ItemCategory; import edu.uchicago.mpcs.topics.auction.ItemCategory;
import edu.uchicago.mpcs.topics.auction.Listing; import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.auction.Query;
import java.util.List; import java.util.List;
......
package edu.uchicago.mpcs.topics.service; package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.db.UserDB; import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException;
import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException;
import edu.uchicago.mpcs.topics.user.User; import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.ArrayList;
/** /**
* Modified by Rex on 2018-11-19 * Created by Rex on 2018-11-19
*/ */
@Service
public class UserService { public interface UserService {
// void block(User user);
// void remove(User user); void register(User user) throws UserAlreadyExistException;
// void suspend(User user);
// void addCategory(ItemCategory itemCategory); User login(User user) throws UserNotFoundException;
// void modifyCategory(ItemCategory itemCategory);
// void removeCategory(ItemCategory itemCategory); }
// void stopAuction(Listing listing, User user); \ No newline at end of file
// List<Listing> viewFlaggedItems();
// List<Listing> viewInProgressItems();
// List<Listing> viewClosed(Query query);
@Autowired
private UserDB userDB;
public List<User> getAllUsers()
{
List<User> users = new ArrayList<>();
userDB.findAll().forEach(users::add);
return users;
}
public void addUser(User user)
{
userDB.save(user);
}
public void deleteUser(String userId)
{
userDB.deleteById(userId);
}
public void updateUser(User user)
{
userDB.save(user);
}
}
package edu.uchicago.mpcs.topics.service.impl;
import edu.uchicago.mpcs.topics.db.UserRepository;
import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException;
import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException;
import edu.uchicago.mpcs.topics.service.UserService;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by Rex on 2018-11-20
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
/**
* Register user.
*
* @param user
* @throws UserAlreadyExistException
*/
@Override
public void register(User user) throws UserAlreadyExistException {
String email = user.getEmail();
String password = user.getPassword();
boolean isAdmin = user.getIsAdmin();
if (!userRepository.isUserAlreadyExist(email)) {
user.setPassword(password);
user.setEmail(email);
user.setIsAdmin(isAdmin);
userRepository.register(user);
} else {
throw new UserAlreadyExistException("user id being used, please try with other.");
}
}
/**
* User login.
*
* @param user
* @return
* @throws UserNotFoundException
*/
@Override
public User login(User user) throws UserNotFoundException {
String email = user.getEmail();
String password = user.getPassword();
user = userRepository.login(email, password);
if (user == null) {
throw new UserNotFoundException(String.format("User not found %s", email));
}
return user;
}
}
package edu.uchicago.mpcs.topics.user; package edu.uchicago.mpcs.topics.user;
import edu.uchicago.mpcs.topics.query.UserQuery;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Id; import javax.persistence.Id;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Optional;
/** /**
* Modified by Rex on 2018-11-18. * Modified by Rex on 2018-11-18.
...@@ -63,10 +71,10 @@ public class User { ...@@ -63,10 +71,10 @@ public class User {
public String getEmail() { return email; } public String getEmail() { return email; }
public void setEmail() { this.email = email; } public void setEmail(String email) { this.email = email; }
public boolean getIsAdmin() { return isAdmin; } public boolean getIsAdmin() { return isAdmin; }
public void setIsAdmin() { this.isAdmin = isAdmin; } public void setIsAdmin(boolean isAdmin) { this.isAdmin = isAdmin; }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment