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;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
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.service.AdminService;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
public interface AdminController {
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);
List<Email> viewCustomerEmails();
/**
* Created by Rex on 2018-11-19
*/
@RestController
@RequestMapping("/user")
public class AdminController {
@Autowired
private AdminService adminService;
@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;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.auction.Query;
import java.util.List;
......
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.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Created by Rex on 2018-11-19
......@@ -18,28 +22,20 @@ public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public List<User> getAllUsers()
{
return userService.getAllUsers();
}
/**
* Register new User.
*/
@PostMapping("/add")
public void addUser(@RequestBody User user)
{
userService.addUser(user);
}
public void register(@RequestBody User user) throws UserAlreadyExistException{
userService.register(user);
}
@DeleteMapping("/remove")
public void removeUser(@RequestBody User user) //or change to item ID
{
userService.deleteUser(user.getUserId());
}
@PutMapping("/update")
public void updateUser(@RequestBody User user)
{
userService.updateUser(user);
/**
* User Login.
*/
@PostMapping("/add")
public void login(@RequestBody User user) throws UserNotFoundException {
userService.login(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;
import edu.uchicago.mpcs.topics.user.User;
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;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
import edu.uchicago.mpcs.topics.auction.Listing;
import edu.uchicago.mpcs.topics.auction.Query;
import java.util.List;
......
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 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 {
// 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 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);
}
}
public interface UserService {
void register(User user) throws UserAlreadyExistException;
User login(User user) throws UserNotFoundException;
}
\ No newline at end of file
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;
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.Id;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Optional;
/**
* Modified by Rex on 2018-11-18.
......@@ -63,10 +71,10 @@ public class User {
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 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