diff --git a/pom.xml b/pom.xml
index 8a1ef44..a6ece35 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,7 +69,7 @@
org.hibernate
hibernate-core
- 4.3.0.Final
+ 5.2.17.Final
@@ -81,7 +81,7 @@
org.hibernate
hibernate-entitymanager
- 4.3.0.Final
+ 5.2.17.Final
diff --git a/src/main/java/shell/DAO/RoleDao.java b/src/main/java/shell/DAO/RoleDao.java
new file mode 100644
index 0000000..34aba2c
--- /dev/null
+++ b/src/main/java/shell/DAO/RoleDao.java
@@ -0,0 +1,10 @@
+package shell.DAO;
+
+
+import shell.model.Role;
+
+public interface RoleDao {
+
+ Role getRoleById(Long roleId);
+ Role getRoleUser();
+}
diff --git a/src/main/java/shell/DAO/RoleDaoImpl.java b/src/main/java/shell/DAO/RoleDaoImpl.java
new file mode 100644
index 0000000..b8d4f9a
--- /dev/null
+++ b/src/main/java/shell/DAO/RoleDaoImpl.java
@@ -0,0 +1,38 @@
+package shell.DAO;
+
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import shell.model.Role;
+import shell.util.DBHelper;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.List;
+
+@Component
+public class RoleDaoImpl implements RoleDao {
+
+// private SessionFactory sessionFactory;
+//
+// public RoleDaoImpl() {
+// sessionFactory = DBHelper.getSessionFactory();
+// }
+
+ @Autowired
+ @PersistenceContext
+ private EntityManager entityManager;
+
+ @Override
+ public Role getRoleUser() {
+ return entityManager.find(Role.class, 2L);
+ }
+
+ @Override
+ public Role getRoleById(Long roleId) {
+ return entityManager.find(Role.class, roleId);
+ }
+}
+
diff --git a/src/main/java/shell/DAO/UserDao.java b/src/main/java/shell/DAO/UserDao.java
new file mode 100644
index 0000000..637b0a1
--- /dev/null
+++ b/src/main/java/shell/DAO/UserDao.java
@@ -0,0 +1,17 @@
+package shell.DAO;
+
+import shell.model.User;
+
+import java.util.List;
+
+
+public interface UserDao {
+
+ User getById(Long id);
+ User getByLogin(String username);
+ List getAll();
+ void save(User user);
+ void update(User user, Long id);
+ void delete(Long id);
+
+}
diff --git a/src/main/java/shell/DAO/UserDaoImpl.java b/src/main/java/shell/DAO/UserDaoImpl.java
new file mode 100644
index 0000000..99f7f00
--- /dev/null
+++ b/src/main/java/shell/DAO/UserDaoImpl.java
@@ -0,0 +1,76 @@
+package shell.DAO;
+
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import shell.model.User;
+import shell.util.DBHelper;
+
+import javax.jws.soap.SOAPBinding;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.List;
+
+@Component
+public class UserDaoImpl implements UserDao {
+
+// private SessionFactory sessionFactory;
+//
+// public UserDaoImpl() {
+// sessionFactory = DBHelper.getSessionFactory();
+// }
+
+ @Autowired
+ @PersistenceContext
+ private EntityManager entityManager;
+
+ @Override
+ public User getById(Long id) {
+ return entityManager.find(User.class, id);
+ }
+
+ @Override
+ public User getByLogin(String login) {
+ Query query = (Query) entityManager.createQuery("select e from User e where e.login = :log");
+ query.setParameter("log", login);
+ User user = (User) query.getSingleResult();
+ return user;
+ }
+
+ @Override
+ public List getAll() {
+ List users;
+ Query query = (Query) entityManager.createQuery("select e from User e");
+ users = query.getResultList();
+ return users;
+ }
+
+
+ @Override
+ @Transactional
+ public void save(User user) {
+ entityManager.persist(user);
+ }
+
+ @Override
+ @Transactional
+ public void update(User newUser, Long id) {
+ User user = getById(id);
+ user.setLogin(newUser.getLogin());
+ user.setName(newUser.getName());
+ user.setPassword(newUser.getPassword());
+ user.setRoles(newUser.getRoles());
+ entityManager.merge(user);
+ }
+
+ @Override
+ @Transactional
+ public void delete(Long id) {
+ User user = getById(id);
+ entityManager.remove(user);
+ }
+}
diff --git a/src/main/java/shell/config/JPAConfig.java b/src/main/java/shell/config/JPAConfig.java
index 5821e49..7dce25e 100644
--- a/src/main/java/shell/config/JPAConfig.java
+++ b/src/main/java/shell/config/JPAConfig.java
@@ -18,7 +18,7 @@
@Configuration
@ComponentScan(value = "shell")
-@EnableJpaRepositories(basePackages = "shell.repositories")
+@EnableJpaRepositories(basePackages = "shell")
@EnableTransactionManagement
public class JPAConfig {
diff --git a/src/main/java/shell/controlers/UsersController.java b/src/main/java/shell/controlers/UsersController.java
index 5827060..0fd3e6c 100644
--- a/src/main/java/shell/controlers/UsersController.java
+++ b/src/main/java/shell/controlers/UsersController.java
@@ -7,15 +7,19 @@
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
+import shell.model.Role;
import shell.model.User;
-import shell.repositories.UserRepository;
+
import shell.service.RoleService;
+import shell.service.SignUpServiceImpl;
import shell.service.UserService;
-import shell.service.UserServiceImpl;
+
import javax.servlet.http.HttpServletRequest;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
@Controller
public class UsersController {
@@ -31,7 +35,7 @@ public class UsersController {
@Autowired
private RoleService roleService;
@Autowired
- private UserRepository userRepository;
+ private SignUpServiceImpl service;
public UsersController(UserService userService, RoleService roleService) {
this.roleService = roleService;
@@ -40,7 +44,7 @@ public UsersController(UserService userService, RoleService roleService) {
@RequestMapping(path = "/admin", method = RequestMethod.GET)
public ModelAndView getAllUsers() {
- List users = userService.findAllUser();
+ List users = userService.getAll();
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("mainPage");
modelAndView.addObject("usersFromServer", users);
@@ -49,27 +53,26 @@ public ModelAndView getAllUsers() {
@RequestMapping(value = "/admin/delete/{*}", method = RequestMethod.POST)
public String deleteUser(@PathVariable("*") Long userId) {
- userService.deleteById(userId);
+ userService.delete(userId);
return "redirect:/admin";
}
@RequestMapping(value = "/admin/edit/{*}", method = RequestMethod.GET)
public ModelAndView editPage(@PathVariable("*") long id) { //@PathVariable указывает на то, что данный параметр (int id) получается из адресной строки
- User user = userService.findOneById(id);
+ User user = userService.getById(id);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("editPage");
- user.setId(id);
modelAndView.addObject("user", user);
return modelAndView;
}
@RequestMapping(value = "/admin/edit", method = RequestMethod.POST)
public ModelAndView editUser(@ModelAttribute("user") User user) {
- User userFromDB = userService.findOneById(user.getId());
- userFromDB.setLogin(user.getLogin());
- userFromDB.setName(user.getName());
- userFromDB.setPassword(user.getPassword());
- userRepository.save(userFromDB);
+ Role role = roleService.getRoleById((long) 2);
+ Set setRoles = new HashSet<>();
+ setRoles.add(role);
+ user.setRoles(setRoles);
+ userService.edit(user, user.getId());
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/admin"); //означает, что после выполнения данного метода мы будем перенаправлены на адрес "/"
return modelAndView;
@@ -104,8 +107,11 @@ public String getLoginPage(Authentication authentication) {
@RequestMapping(path = "/admin/save", method = RequestMethod.POST)
public String saveUsers(User user) {
- user.setRoles(roleService.getRoleByName("USER"));
- userService.addUser(user);
+ Role role = roleService.getRoleById((long) 2);
+ Set setRoles = new HashSet<>();
+ setRoles.add(role);
+ String roleStr = setRoles.toString();
+ userService.save(user, roleStr);
return "redirect:/admin";
}
@@ -116,12 +122,7 @@ public String getSignUpPage() {
@PostMapping("/signUp")
public String signUp (User user, String role) {
- if (role.equals("USER")) {
- user.setRoles(roleService.getRoleByName(role));
- } else {
- user.setRoles(roleService.getRoleByName("ADMIN"));
- }
- userRepository.save(user);
+ service.signUp(user, role);
return "redirect:/login";
}
diff --git a/src/main/java/shell/repositories/RoleRepository.java b/src/main/java/shell/repositories/RoleRepository.java
deleted file mode 100644
index f29b123..0000000
--- a/src/main/java/shell/repositories/RoleRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package shell.repositories;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-import shell.model.Role;
-
-import java.util.Set;
-
-
-public interface RoleRepository extends JpaRepository {
-
- Set findByRole(String role);
-}
diff --git a/src/main/java/shell/repositories/UserRepository.java b/src/main/java/shell/repositories/UserRepository.java
deleted file mode 100644
index 69ad8a5..0000000
--- a/src/main/java/shell/repositories/UserRepository.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package shell.repositories;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
-import shell.model.User;
-
-@Repository
-public interface UserRepository extends JpaRepository {
-
- User findOneByLogin(String login);
-
- @Modifying
- @Query("update User u set u.login = ?1, u.name = ?2, u.password = ?3 where u.id = ?3")
- void edit(String login, String name, String password, Long userId);
-}
diff --git a/src/main/java/shell/service/RoleService.java b/src/main/java/shell/service/RoleService.java
index e537866..24003c2 100644
--- a/src/main/java/shell/service/RoleService.java
+++ b/src/main/java/shell/service/RoleService.java
@@ -1,12 +1,25 @@
package shell.service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import shell.DAO.RoleDao;
import shell.model.Role;
-import java.util.Set;
+@Component
+public class RoleService {
-public interface RoleService {
+ private RoleDao roleDAO;
- Set getRole ();
+ @Autowired
+ public RoleService(RoleDao roleDAO) {
+ this.roleDAO = roleDAO;
+ }
- Set getRoleByName (String nameRole);
+ public Role getRoleById(Long roleId) {
+ return roleDAO.getRoleById(roleId);
+ }
+
+ public Role getRoleUser() {
+ return roleDAO.getRoleUser();
+ }
}
diff --git a/src/main/java/shell/service/RoleServiceImpl.java b/src/main/java/shell/service/RoleServiceImpl.java
deleted file mode 100644
index eebf058..0000000
--- a/src/main/java/shell/service/RoleServiceImpl.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package shell.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-//import shell.DAO.RoleDao;
-import org.springframework.stereotype.Service;
-import shell.model.Role;
-import shell.repositories.RoleRepository;
-
-import java.util.HashSet;
-import java.util.Set;
-
-@Service
-public class RoleServiceImpl implements RoleService {
-
- @Autowired
- RoleRepository roleRepository;
-
- public Set getRole () {
- return new HashSet(roleRepository.findAll());
- }
-
- public Set getRoleByName(String nameRole) {
- return roleRepository.findByRole(nameRole);
- }
-
-// private RoleDao roleDAO;
-//
-// @Autowired
-// public RoleServiceImpl(RoleDao roleDAO) {
-// this.roleDAO = roleDAO;
-// }
-//
-// public Role getRoleById(Long roleId) {
-// return roleDAO.getRoleById(roleId);
-// }
-//
-// public Role getRoleUser() {
-// return roleDAO.getRoleUser();
-// }
-}
diff --git a/src/main/java/shell/service/SignUpService.java b/src/main/java/shell/service/SignUpService.java
new file mode 100644
index 0000000..3ae87d4
--- /dev/null
+++ b/src/main/java/shell/service/SignUpService.java
@@ -0,0 +1,8 @@
+package shell.service;
+
+
+import shell.model.User;
+
+public interface SignUpService {
+ void signUp(User user, String role);
+}
diff --git a/src/main/java/shell/service/SignUpServiceImpl.java b/src/main/java/shell/service/SignUpServiceImpl.java
new file mode 100644
index 0000000..600fbdc
--- /dev/null
+++ b/src/main/java/shell/service/SignUpServiceImpl.java
@@ -0,0 +1,23 @@
+package shell.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SignUpServiceImpl implements SignUpService {
+
+
+ private final UserService userService;
+ private final RoleService roleService;
+
+ @Autowired
+ public SignUpServiceImpl (UserService userService, RoleService roleService){
+ this.userService = userService;
+ this.roleService = roleService;
+ }
+
+ @Override
+ public void signUp(shell.model.User user, String role) {
+ userService.save(user, role);
+ }
+}
diff --git a/src/main/java/shell/service/UserDetailsServiceImpl.java b/src/main/java/shell/service/UserDetailsServiceImpl.java
index 5df7c61..bdf5762 100644
--- a/src/main/java/shell/service/UserDetailsServiceImpl.java
+++ b/src/main/java/shell/service/UserDetailsServiceImpl.java
@@ -5,31 +5,17 @@
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
-import shell.model.User;
-import shell.repositories.UserRepository;
-import java.util.Optional;
@Component
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
- private UserRepository repository;
+ private UserService userService;
+
@Override
public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException {
- Optional userCandidate = Optional.ofNullable(repository.findOneByLogin(login));
- if (userCandidate.isPresent()) { //существует ли?
- return userCandidate.get(); //возвращает ЕСЛИ есть
- } else throw new IllegalArgumentException("User not found");
+ return userService.getByLogin(login);
}
-
-// @Autowired
-// private UserServiceImpl userService;
-//
-//
-// @Override
-// public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException {
-// return userService.getByLogin(login);
-// }
}
diff --git a/src/main/java/shell/service/UserService.java b/src/main/java/shell/service/UserService.java
index ae66a37..515fbb6 100644
--- a/src/main/java/shell/service/UserService.java
+++ b/src/main/java/shell/service/UserService.java
@@ -1,22 +1,62 @@
package shell.service;
-
-
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import shell.DAO.*;
+import shell.model.Role;
import shell.model.User;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+
+@Component
+public class UserService {
+
+private UserDao userDAO;
+
+@Autowired
+private RoleService roleService;
+
+ @Autowired
+ public UserService( UserDao userDAO) {
+ this.userDAO = userDAO;
+ }
+
+ public List getAll() {
+ return userDAO.getAll();
+ }
+
+ public User getById(Long id) {
+ return userDAO.getById(id);
+ }
+
+ public void save(User user, String roleUser) {
+ Set role = new HashSet<>();
+ if (roleUser.equals("ADMIN")) {
+ role.add(roleService.getRoleById(1L));
+ user.setRoles(role);
+ userDAO.save(user);
+ } else {
+ role.add(roleService.getRoleById(2L));
+ user.setRoles(role);
+ userDAO.save(user);
+ }
+
+ }
-public interface UserService {
- void addUser(User user);
+ public User getByLogin(String login) {
+ return userDAO.getByLogin(login);
+ }
- User findOneByLogin(String login);
+ public void delete(Long id) {
+ userDAO.delete(id);
+ }
- User findOneById(Long id);
+ public void edit(User user, Long id) {
+ userDAO.update(user, id);
+ }
- void deleteById(Long Id);
- List findAllUser ();
}
diff --git a/src/main/java/shell/service/UserServiceImpl.java b/src/main/java/shell/service/UserServiceImpl.java
deleted file mode 100644
index a79b465..0000000
--- a/src/main/java/shell/service/UserServiceImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package shell.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Component;
-//import shell.DAO.*;
-import org.springframework.stereotype.Service;
-import shell.model.Role;
-import shell.model.User;
-import shell.repositories.UserRepository;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-@Service
-public class UserServiceImpl implements UserService {
-
-
- @Autowired
- UserRepository userRepository;
-
- public void addUser(User user) { userRepository.save(user); }
-
- public User findOneByLogin(String login) {
- return userRepository.findOneByLogin(login);
- }
-
- public User findOneById(Long id) {
- return userRepository.findOne(id);
- }
-
- public void deleteById(Long Id) {
- userRepository.delete(Id);
- }
-
- public List findAllUser () {
- return userRepository.findAll();
- }
-
-//private UserDao userDAO;
-//
-//@Autowired
-//private RoleServiceImpl roleService;
-//
-// @Autowired
-// public UserServiceImpl(UserDao userDAO) {
-// this.userDAO = userDAO;
-// }
-//
-// public List getAll() {
-// return userDAO.getAll();
-// }
-//
-// public User get(Long id) {
-// return userDAO.get(id);
-// }
-//
-// public void save(User user, String roleUser) {
-// Set role = new HashSet<>();
-// if (roleUser.equals("ADMIN")) {
-// role.add(roleService.getRoleById(1L));
-// user.setRoles(role);
-// userDAO.save(user);
-// } else {
-// role.add(roleService.getRoleById(2L));
-// user.setRoles(role);
-// userDAO.save(user);
-// }
-// }
-//
-// public void saveAdmin(User user) {
-// Set role = new HashSet<>();
-// role.add(roleService.getRoleById(2L));
-// user.setRoles(role);
-// userDAO.save(user);
-// }
-//
-// public User getByLogin(String userlogin) {
-// User user = userDAO.getByLogin(userlogin);
-// return user;
-// }
-//
-// public void delete(Long id) {
-// userDAO.delete(id);
-// }
-//
-// public void edit(User user) {
-// userDAO.update(user);
-// }
-//
-
-}
diff --git a/src/main/java/shell/util/DBHelper.java b/src/main/java/shell/util/DBHelper.java
new file mode 100644
index 0000000..83d5cad
--- /dev/null
+++ b/src/main/java/shell/util/DBHelper.java
@@ -0,0 +1,39 @@
+package shell.util;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.service.ServiceRegistry;
+import org.springframework.stereotype.Component;
+import shell.model.Role;
+import shell.model.User;
+
+@Component
+public final class DBHelper {
+
+ private DBHelper() {
+
+ }
+
+ public static SessionFactory getSessionFactory() {
+ Configuration configuration = getConfiguration();
+ StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
+ builder.applySettings(configuration.getProperties());
+ ServiceRegistry serviceRegistry = builder.build();
+ return configuration.buildSessionFactory(serviceRegistry);
+ }
+
+ private static Configuration getConfiguration() {
+ Configuration configuration = new Configuration();
+ configuration.addAnnotatedClass(User.class);
+ configuration.addAnnotatedClass(Role.class);
+ configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
+ configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
+ configuration.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/user");
+ configuration.setProperty("hibernate.connection.username", "root");
+ configuration.setProperty("hibernate.connection.password", "root");
+ configuration.setProperty("hibernate.show_sql", "true");
+ configuration.setProperty("hibernate.hbm2ddl.auto", "update");
+ return configuration;
+ }
+}