Commit ec21643a by Rex Zhou

admin services

parent 801dac0a
Showing with 345 additions and 281 deletions
......@@ -33,25 +33,25 @@ public class Application {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner run(ApplicationContext appContext) {
return args -> {
ItemController itemController = appContext.getBean(ItemController.class);
for (int i=0; i<5; i++) {
Item item = new Item(
"title" + i,
"desc" + i,
(long) i,
5.0,
500.0,
"https://www.sprint.com/content/dam/sprint/commerce/devices/apple/iphone_xr/red/devicenb_650x900.png/jcr:content/renditions/cq5dam.thumbnail.290.370.png",
(long) i
);
itemController.addItem(item);
System.out.println(i);
}
};
}
// @Bean
// public CommandLineRunner run(ApplicationContext appContext) {
// return args -> {
// ItemController itemController = appContext.getBean(ItemController.class);
// for (int i=0; i<5; i++) {
// Item item = new Item(
// "title" + i,
// "desc" + i,
// (long) i,
// 5.0,
// 500.0,
// "https://www.sprint.com/content/dam/sprint/commerce/devices/apple/iphone_xr/red/devicenb_650x900.png/jcr:content/renditions/cq5dam.thumbnail.290.370.png",
// (long) i
// );
// itemController.addItem(item);
// System.out.println(i);
// }
// };
// }
@Bean
public WebMvcConfigurer corsConfigurer() {
......
......@@ -2,6 +2,8 @@ package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
import edu.uchicago.mpcs.topics.auction.Listing;
import org.hibernate.query.Query;
import java.util.List;
......@@ -9,3 +11,4 @@ public interface SearchController {
List<Listing> search(Query query);
List<Listing> search(ItemCategory itemCategory);
}
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.*;
/**
* Created by Rex on 2018-11-19
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* Register new User.
*/
@PostMapping("/add")
public void register(@RequestBody User user) throws UserAlreadyExistException{
userService.register(user);
}
/**
* User Login.
*/
@PostMapping("/add")
public void login(@RequestBody User user) throws UserNotFoundException {
userService.login(user);
}
}
//package edu.uchicago.mpcs.topics.controller;
//
//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.web.bind.annotation.*;
//
//
///**
// * Created by Rex on 2018-11-19
// */
//
//@RestController
//@RequestMapping("/user")
//public class UserController {
//
// @Autowired
// private UserService userService;
//
// /**
// * Register new User.
// */
// @PostMapping("/add")
// public void register(@RequestBody User user) throws UserAlreadyExistException{
// userService.register(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.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.auction.Item;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.data.repository.CrudRepository;
public interface UserDB extends CrudRepository<User, String>
{
}
\ No newline at end of file
package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.data.repository.CrudRepository;
import java.util.Optional;
/**
* Modified by Rex on 2018-11-19
*/
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.db;
//import edu.uchicago.mpcs.topics.user.User;
//
//import org.springframework.data.repository.CrudRepository;
//
//import java.util.Optional;
//
///**
// * Modified by Rex on 2018-11-19
// */
//
//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.service;
import edu.uchicago.mpcs.topics.db.UserRepository;
import edu.uchicago.mpcs.topics.db.UserRepository;
import edu.uchicago.mpcs.topics.db.UserDB;
import edu.uchicago.mpcs.topics.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -25,7 +24,7 @@ public class AdminService {
// List<Listing> viewInProgressItems();
// List<Listing> viewClosed(Query query);
@Autowired
private UserRepository userDB;
private UserDB userDB;
public List<User> getAllUsers()
{
......
......@@ -2,6 +2,7 @@ package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.ItemCategory;
import edu.uchicago.mpcs.topics.auction.Listing;
import org.hibernate.query.Query;
import java.util.List;
......
package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException;
import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException;
import edu.uchicago.mpcs.topics.user.User;
/**
* Created by Rex on 2018-11-19
*/
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;
//
//import edu.uchicago.mpcs.topics.exceptions.UserAlreadyExistException;
//import edu.uchicago.mpcs.topics.exceptions.UserNotFoundException;
//import edu.uchicago.mpcs.topics.user.User;
//
//
///**
// * Created by Rex on 2018-11-19
// */
//
//
//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.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;
//import lombok.extern.slf4j.Slf4j;
//
//
///**
// * Created by Rex on 2018-11-20
// */
//
//@Service
//@Slf4j
//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;
// }
//}
......@@ -5,8 +5,8 @@ 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 javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Optional;
......@@ -19,12 +19,32 @@ import java.util.Optional;
public class User {
@Id
private String userId;
@Column(name = "USER_ID")
@GenericGenerator(strategy = "uuid2", name = "uuid")
@GeneratedValue(generator = "uuid") private String userId;
@Column(name = "PASSWORD", nullable = false)
private String password;
@Column(name = "FIRST_NAME", nullable = false)
private String firstName;
@Column(name = "LAST_NAME", nullable = false)
private String lastName;
@Column(name = "EMAIL", nullable = false, unique = true)
private String email;
private Boolean isAdmin;
@Column(name = "ADMIN", nullable = false)
private boolean isAdmin;
// @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
// private Set<Sale> sales;
//
// @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
// private Set<Bid> bids;
public User() {}
public User(String userId, String password, String firstName, String lastName, String email, boolean isAdmin)
{
......
spring.data.rest.base-path=/api
spring.h2.console.enabled=true
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
table {
border-collapse: collapse;
}
td, th {
border: 1px solid #999;
padding: 0.5rem;
text-align: left;
}
\ No newline at end of file
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en">
<meta charset="UTF-8"/>
<title>ReactJS + Spring Data REST</title>
<link rel="stylesheet" href="/main.css" />
</head>
<body>
<div id="react"></div>
<script src="built/bundle.js"></script>
</body>
</html>
\ No newline at end of file
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