From 28647d485e575370b0d6a9cef63c7fefcfe7ee54 Mon Sep 17 00:00:00 2001 From: Shell26 Date: Tue, 19 Nov 2019 12:00:15 +0400 Subject: [PATCH 1/6] Add JPA realization --- src/main/webapp/WEB-INF/checkBranch.jsp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/webapp/WEB-INF/checkBranch.jsp diff --git a/src/main/webapp/WEB-INF/checkBranch.jsp b/src/main/webapp/WEB-INF/checkBranch.jsp new file mode 100644 index 0000000..f39a533 --- /dev/null +++ b/src/main/webapp/WEB-INF/checkBranch.jsp @@ -0,0 +1,16 @@ +<%-- + Created by IntelliJ IDEA. + User: Shell26 + Date: 19.11.2019 + Time: 11:59 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Title + + + + + From 8c2bfd3c3bf55f329ed5f11cedba7df65a9da51d Mon Sep 17 00:00:00 2001 From: Shell26 Date: Tue, 19 Nov 2019 12:38:28 +0400 Subject: [PATCH 2/6] Add DAO realization --- src/main/java/shell/DAO/RoleDAO.java | 10 ++ .../java/shell/DAO/RoleDAOHibernateImpl.java | 48 ++++++++++ src/main/java/shell/DAO/UserDAO.java | 17 ++++ .../java/shell/DAO/UserDAOHibernateImpl.java | 81 ++++++++++++++++ .../shell/controlers/UsersController.java | 37 ++++---- .../shell/repositories/RoleRepository.java | 13 --- .../shell/repositories/UserRepository.java | 17 ---- src/main/java/shell/service/RoleService.java | 21 ++++- .../java/shell/service/RoleServiceImpl.java | 41 -------- .../java/shell/service/SignUpService.java | 8 ++ .../java/shell/service/SignUpServiceImpl.java | 26 +++++ .../shell/service/UserDetailsServiceImpl.java | 23 +---- src/main/java/shell/service/UserService.java | 67 +++++++++++-- .../java/shell/service/UserServiceImpl.java | 94 ------------------- src/main/java/shell/util/DBHelper.java | 39 ++++++++ src/main/webapp/WEB-INF/checkBranch.jsp | 16 ---- 16 files changed, 325 insertions(+), 233 deletions(-) create mode 100644 src/main/java/shell/DAO/RoleDAO.java create mode 100644 src/main/java/shell/DAO/RoleDAOHibernateImpl.java create mode 100644 src/main/java/shell/DAO/UserDAO.java create mode 100644 src/main/java/shell/DAO/UserDAOHibernateImpl.java delete mode 100644 src/main/java/shell/repositories/RoleRepository.java delete mode 100644 src/main/java/shell/repositories/UserRepository.java delete mode 100644 src/main/java/shell/service/RoleServiceImpl.java create mode 100644 src/main/java/shell/service/SignUpService.java create mode 100644 src/main/java/shell/service/SignUpServiceImpl.java delete mode 100644 src/main/java/shell/service/UserServiceImpl.java create mode 100644 src/main/java/shell/util/DBHelper.java delete mode 100644 src/main/webapp/WEB-INF/checkBranch.jsp diff --git a/src/main/java/shell/DAO/RoleDAO.java b/src/main/java/shell/DAO/RoleDAO.java new file mode 100644 index 0000000..2e192b7 --- /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/RoleDAOHibernateImpl.java b/src/main/java/shell/DAO/RoleDAOHibernateImpl.java new file mode 100644 index 0000000..98283fd --- /dev/null +++ b/src/main/java/shell/DAO/RoleDAOHibernateImpl.java @@ -0,0 +1,48 @@ +package shell.DAO; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.springframework.stereotype.Component; +import shell.model.Role; +import shell.util.DBHelper; + +import java.util.List; + +@Component +public class RoleDAOHibernateImpl implements RoleDAO{ + + private SessionFactory sessionFactory; + + public RoleDAOHibernateImpl() { + sessionFactory = DBHelper.getSessionFactory(); + } + + + @Override + public Role getRoleUser() { + Session session = sessionFactory.openSession(); + Transaction transaction = session.beginTransaction(); + Role role = new Role(); + List roles = session.createQuery("FROM Role").list(); + transaction.commit(); + role = roles.get(0); + session.close(); + return role; + } + + + //чтобы не выгружать все роли + @Override + public Role getRoleById(Long roleId) { + Session session = sessionFactory.openSession(); + // Transaction transaction = session.beginTransaction(); + //Hibernate просто верит нам, что объект с данным Id существует в БД. + // первый вызванный get или set у proxy-object сразу инициирует запрос select, + // и если объекта с данным Id нет в базе,получим ObjectNotFoundException. + // предназначение proxy-object — реализация отложенной загрузки. + Role role = (Role)session.load(Role.class, roleId); + return role; + } +} + diff --git a/src/main/java/shell/DAO/UserDAO.java b/src/main/java/shell/DAO/UserDAO.java new file mode 100644 index 0000000..2d4f48f --- /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 get(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/UserDAOHibernateImpl.java b/src/main/java/shell/DAO/UserDAOHibernateImpl.java new file mode 100644 index 0000000..85d7a8d --- /dev/null +++ b/src/main/java/shell/DAO/UserDAOHibernateImpl.java @@ -0,0 +1,81 @@ +package shell.DAO; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.springframework.stereotype.Component; +import shell.model.User; +import shell.util.DBHelper; + +import java.util.List; + +@Component +public class UserDAOHibernateImpl implements UserDAO { + + private SessionFactory sessionFactory; + + public UserDAOHibernateImpl() { + sessionFactory = DBHelper.getSessionFactory(); + } + + @Override + public User get(Long id) { + List users = getAll(); + for (User user : users) { + if (user.getId().equals(id)) { + return user; + } + } + return null; + } + + @Override + public User getByLogin(String userlogin) { + List users = getAll(); + for (User user : users) { + if (user.getLogin().equals(userlogin)) { + return user; + } + } + return null; + } + + @Override + public List getAll() { + Session session = sessionFactory.openSession(); + Transaction transaction = session.beginTransaction(); + List users = session.createQuery("FROM User").list(); + transaction.commit(); + session.close(); + return users; + } + + + @Override + public void save(User user) { + Session session = sessionFactory.openSession(); + Transaction transaction = session.beginTransaction(); + session.save(user); + transaction.commit(); + session.close(); + } + + @Override + public void update(User newUser, Long id) { + Session session = sessionFactory.openSession(); + Transaction transaction = session.beginTransaction(); + session.update(newUser); + transaction.commit(); + session.close(); + } + + @Override + public void delete(Long id) { + Session session = sessionFactory.openSession(); + Transaction transaction = session.beginTransaction(); + User user = get(id); + session.delete(user); + transaction.commit(); + session.close(); + } +} diff --git a/src/main/java/shell/controlers/UsersController.java b/src/main/java/shell/controlers/UsersController.java index 5827060..1ceb7c1 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,22 @@ 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.get(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); + userService.edit(user, user.getId()); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("redirect:/admin"); //означает, что после выполнения данного метода мы будем перенаправлены на адрес "/" return modelAndView; @@ -104,8 +103,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 +118,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..9cb1656 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..7335065 --- /dev/null +++ b/src/main/java/shell/service/SignUpServiceImpl.java @@ -0,0 +1,26 @@ +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) { + // Set role = new HashSet<>(); + // role.add(roleService.getRoleById(2L)); + // user.setRoles(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..1861688 100644 --- a/src/main/java/shell/service/UserDetailsServiceImpl.java +++ b/src/main/java/shell/service/UserDetailsServiceImpl.java @@ -5,31 +5,18 @@ 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; +//@Service @Component +//@ComponentScan("ru.janademkiv") 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..223e605 100644 --- a/src/main/java/shell/service/UserService.java +++ b/src/main/java/shell/service/UserService.java @@ -1,22 +1,69 @@ 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 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(2L)); + user.setRoles(role); + userDAO.save(user); + } else { + role.add(roleService.getRoleById(1L)); + user.setRoles(role); + userDAO.save(user); + } + + } -public interface UserService { + public void saveAdmin(User user) { + Set role = new HashSet<>(); + role.add(roleService.getRoleById(2L)); + user.setRoles(role); + userDAO.save(user); + } - void addUser(User user); + public User getByLogin(String userlogin) { + User user = userDAO.getByLogin(userlogin); + return user; + } - 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; + } +} diff --git a/src/main/webapp/WEB-INF/checkBranch.jsp b/src/main/webapp/WEB-INF/checkBranch.jsp deleted file mode 100644 index f39a533..0000000 --- a/src/main/webapp/WEB-INF/checkBranch.jsp +++ /dev/null @@ -1,16 +0,0 @@ -<%-- - Created by IntelliJ IDEA. - User: Shell26 - Date: 19.11.2019 - Time: 11:59 - To change this template use File | Settings | File Templates. ---%> -<%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - Title - - - - - From 533ba3457ea1fea7f95961e9d9490ddba6a21cf7 Mon Sep 17 00:00:00 2001 From: Shell26 Date: Tue, 19 Nov 2019 12:46:22 +0400 Subject: [PATCH 3/6] Add DAO realization --- .../java/shell/DAO/{RoleDAO.java => RoleDao.java} | 2 +- .../{RoleDAOHibernateImpl.java => RoleDaoImpl.java} | 12 ++---------- .../java/shell/DAO/{UserDAO.java => UserDao.java} | 2 +- .../{UserDAOHibernateImpl.java => UserDaoImpl.java} | 4 ++-- src/main/java/shell/config/JPAConfig.java | 2 +- src/main/java/shell/service/RoleService.java | 6 +++--- src/main/java/shell/service/SignUpServiceImpl.java | 3 --- .../java/shell/service/UserDetailsServiceImpl.java | 3 +-- src/main/java/shell/service/UserService.java | 4 ++-- 9 files changed, 13 insertions(+), 25 deletions(-) rename src/main/java/shell/DAO/{RoleDAO.java => RoleDao.java} (80%) rename src/main/java/shell/DAO/{RoleDAOHibernateImpl.java => RoleDaoImpl.java} (57%) rename src/main/java/shell/DAO/{UserDAO.java => UserDao.java} (90%) rename src/main/java/shell/DAO/{UserDAOHibernateImpl.java => UserDaoImpl.java} (95%) diff --git a/src/main/java/shell/DAO/RoleDAO.java b/src/main/java/shell/DAO/RoleDao.java similarity index 80% rename from src/main/java/shell/DAO/RoleDAO.java rename to src/main/java/shell/DAO/RoleDao.java index 2e192b7..34aba2c 100644 --- a/src/main/java/shell/DAO/RoleDAO.java +++ b/src/main/java/shell/DAO/RoleDao.java @@ -3,7 +3,7 @@ import shell.model.Role; -public interface RoleDAO { +public interface RoleDao { Role getRoleById(Long roleId); Role getRoleUser(); diff --git a/src/main/java/shell/DAO/RoleDAOHibernateImpl.java b/src/main/java/shell/DAO/RoleDaoImpl.java similarity index 57% rename from src/main/java/shell/DAO/RoleDAOHibernateImpl.java rename to src/main/java/shell/DAO/RoleDaoImpl.java index 98283fd..fff199c 100644 --- a/src/main/java/shell/DAO/RoleDAOHibernateImpl.java +++ b/src/main/java/shell/DAO/RoleDaoImpl.java @@ -10,15 +10,14 @@ import java.util.List; @Component -public class RoleDAOHibernateImpl implements RoleDAO{ +public class RoleDaoImpl implements RoleDao { private SessionFactory sessionFactory; - public RoleDAOHibernateImpl() { + public RoleDaoImpl() { sessionFactory = DBHelper.getSessionFactory(); } - @Override public Role getRoleUser() { Session session = sessionFactory.openSession(); @@ -31,16 +30,9 @@ public Role getRoleUser() { return role; } - - //чтобы не выгружать все роли @Override public Role getRoleById(Long roleId) { Session session = sessionFactory.openSession(); - // Transaction transaction = session.beginTransaction(); - //Hibernate просто верит нам, что объект с данным Id существует в БД. - // первый вызванный get или set у proxy-object сразу инициирует запрос select, - // и если объекта с данным Id нет в базе,получим ObjectNotFoundException. - // предназначение proxy-object — реализация отложенной загрузки. Role role = (Role)session.load(Role.class, roleId); return role; } diff --git a/src/main/java/shell/DAO/UserDAO.java b/src/main/java/shell/DAO/UserDao.java similarity index 90% rename from src/main/java/shell/DAO/UserDAO.java rename to src/main/java/shell/DAO/UserDao.java index 2d4f48f..4016df4 100644 --- a/src/main/java/shell/DAO/UserDAO.java +++ b/src/main/java/shell/DAO/UserDao.java @@ -5,7 +5,7 @@ import java.util.List; -public interface UserDAO { +public interface UserDao { User get(Long id); User getByLogin(String username); diff --git a/src/main/java/shell/DAO/UserDAOHibernateImpl.java b/src/main/java/shell/DAO/UserDaoImpl.java similarity index 95% rename from src/main/java/shell/DAO/UserDAOHibernateImpl.java rename to src/main/java/shell/DAO/UserDaoImpl.java index 85d7a8d..c7c899f 100644 --- a/src/main/java/shell/DAO/UserDAOHibernateImpl.java +++ b/src/main/java/shell/DAO/UserDaoImpl.java @@ -10,11 +10,11 @@ import java.util.List; @Component -public class UserDAOHibernateImpl implements UserDAO { +public class UserDaoImpl implements UserDao { private SessionFactory sessionFactory; - public UserDAOHibernateImpl() { + public UserDaoImpl() { sessionFactory = DBHelper.getSessionFactory(); } 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/service/RoleService.java b/src/main/java/shell/service/RoleService.java index 9cb1656..24003c2 100644 --- a/src/main/java/shell/service/RoleService.java +++ b/src/main/java/shell/service/RoleService.java @@ -2,16 +2,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import shell.DAO.RoleDAO; +import shell.DAO.RoleDao; import shell.model.Role; @Component public class RoleService { - private RoleDAO roleDAO; + private RoleDao roleDAO; @Autowired - public RoleService(RoleDAO roleDAO) { + public RoleService(RoleDao roleDAO) { this.roleDAO = roleDAO; } diff --git a/src/main/java/shell/service/SignUpServiceImpl.java b/src/main/java/shell/service/SignUpServiceImpl.java index 7335065..600fbdc 100644 --- a/src/main/java/shell/service/SignUpServiceImpl.java +++ b/src/main/java/shell/service/SignUpServiceImpl.java @@ -18,9 +18,6 @@ public SignUpServiceImpl (UserService userService, RoleService roleService){ @Override public void signUp(shell.model.User user, String role) { - // Set role = new HashSet<>(); - // role.add(roleService.getRoleById(2L)); - // user.setRoles(role); userService.save(user, role); } } diff --git a/src/main/java/shell/service/UserDetailsServiceImpl.java b/src/main/java/shell/service/UserDetailsServiceImpl.java index 1861688..bdf5762 100644 --- a/src/main/java/shell/service/UserDetailsServiceImpl.java +++ b/src/main/java/shell/service/UserDetailsServiceImpl.java @@ -6,9 +6,8 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Component; -//@Service + @Component -//@ComponentScan("ru.janademkiv") public class UserDetailsServiceImpl implements UserDetailsService { @Autowired diff --git a/src/main/java/shell/service/UserService.java b/src/main/java/shell/service/UserService.java index 223e605..fb11147 100644 --- a/src/main/java/shell/service/UserService.java +++ b/src/main/java/shell/service/UserService.java @@ -13,13 +13,13 @@ @Component public class UserService { -private UserDAO userDAO; +private UserDao userDAO; @Autowired private RoleService roleService; @Autowired - public UserService( UserDAO userDAO) { + public UserService( UserDao userDAO) { this.userDAO = userDAO; } From a60b1c460b07983ae8c0a8df5754f1fee911bc50 Mon Sep 17 00:00:00 2001 From: Shell26 Date: Tue, 19 Nov 2019 14:22:12 +0400 Subject: [PATCH 4/6] Add DAO realization --- pom.xml | 4 +- src/main/java/shell/DAO/RoleDaoImpl.java | 28 ++++--- src/main/java/shell/DAO/UserDao.java | 2 +- src/main/java/shell/DAO/UserDaoImpl.java | 77 +++++++++---------- .../shell/controlers/UsersController.java | 2 +- src/main/java/shell/service/UserService.java | 10 +-- 6 files changed, 55 insertions(+), 68 deletions(-) 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/RoleDaoImpl.java b/src/main/java/shell/DAO/RoleDaoImpl.java index fff199c..b8d4f9a 100644 --- a/src/main/java/shell/DAO/RoleDaoImpl.java +++ b/src/main/java/shell/DAO/RoleDaoImpl.java @@ -3,38 +3,36 @@ 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; +// private SessionFactory sessionFactory; +// +// public RoleDaoImpl() { +// sessionFactory = DBHelper.getSessionFactory(); +// } - public RoleDaoImpl() { - sessionFactory = DBHelper.getSessionFactory(); - } + @Autowired + @PersistenceContext + private EntityManager entityManager; @Override public Role getRoleUser() { - Session session = sessionFactory.openSession(); - Transaction transaction = session.beginTransaction(); - Role role = new Role(); - List roles = session.createQuery("FROM Role").list(); - transaction.commit(); - role = roles.get(0); - session.close(); - return role; + return entityManager.find(Role.class, 2L); } @Override public Role getRoleById(Long roleId) { - Session session = sessionFactory.openSession(); - Role role = (Role)session.load(Role.class, roleId); - return role; + return entityManager.find(Role.class, roleId); } } diff --git a/src/main/java/shell/DAO/UserDao.java b/src/main/java/shell/DAO/UserDao.java index 4016df4..637b0a1 100644 --- a/src/main/java/shell/DAO/UserDao.java +++ b/src/main/java/shell/DAO/UserDao.java @@ -7,7 +7,7 @@ public interface UserDao { - User get(Long id); + User getById(Long id); User getByLogin(String username); List getAll(); void save(User user); diff --git a/src/main/java/shell/DAO/UserDaoImpl.java b/src/main/java/shell/DAO/UserDaoImpl.java index c7c899f..a3718cd 100644 --- a/src/main/java/shell/DAO/UserDaoImpl.java +++ b/src/main/java/shell/DAO/UserDaoImpl.java @@ -1,81 +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; +// private SessionFactory sessionFactory; +// +// public UserDaoImpl() { +// sessionFactory = DBHelper.getSessionFactory(); +// } - public UserDaoImpl() { - sessionFactory = DBHelper.getSessionFactory(); - } + @Autowired + @PersistenceContext + private EntityManager entityManager; @Override - public User get(Long id) { - List users = getAll(); - for (User user : users) { - if (user.getId().equals(id)) { - return user; - } - } - return null; + public User getById(Long id) { + return entityManager.find(User.class, id); } @Override - public User getByLogin(String userlogin) { - List users = getAll(); - for (User user : users) { - if (user.getLogin().equals(userlogin)) { - return user; - } - } - return null; + 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() { - Session session = sessionFactory.openSession(); - Transaction transaction = session.beginTransaction(); - List users = session.createQuery("FROM User").list(); - transaction.commit(); - session.close(); + List users; + Query query = (Query) entityManager.createQuery("select e from User e"); + users = query.getResultList(); return users; } @Override + @Transactional public void save(User user) { - Session session = sessionFactory.openSession(); - Transaction transaction = session.beginTransaction(); - session.save(user); - transaction.commit(); - session.close(); + entityManager.persist(user); } @Override + @Transactional public void update(User newUser, Long id) { - Session session = sessionFactory.openSession(); - Transaction transaction = session.beginTransaction(); - session.update(newUser); - transaction.commit(); - session.close(); + User user = getById(id); + user.setLogin(newUser.getLogin()); + user.setName(newUser.getName()); + user.setPassword(newUser.getPassword()); + user.setRoles(newUser.getRoles()); + entityManager.refresh(user); } @Override + @Transactional public void delete(Long id) { - Session session = sessionFactory.openSession(); - Transaction transaction = session.beginTransaction(); - User user = get(id); - session.delete(user); - transaction.commit(); - session.close(); + User user = getById(id); + entityManager.remove(user); } } diff --git a/src/main/java/shell/controlers/UsersController.java b/src/main/java/shell/controlers/UsersController.java index 1ceb7c1..2dbf652 100644 --- a/src/main/java/shell/controlers/UsersController.java +++ b/src/main/java/shell/controlers/UsersController.java @@ -59,7 +59,7 @@ public String deleteUser(@PathVariable("*") Long userId) { @RequestMapping(value = "/admin/edit/{*}", method = RequestMethod.GET) public ModelAndView editPage(@PathVariable("*") long id) { //@PathVariable указывает на то, что данный параметр (int id) получается из адресной строки - User user = userService.get(id); + User user = userService.getById(id); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("editPage"); modelAndView.addObject("user", user); diff --git a/src/main/java/shell/service/UserService.java b/src/main/java/shell/service/UserService.java index fb11147..64afd3f 100644 --- a/src/main/java/shell/service/UserService.java +++ b/src/main/java/shell/service/UserService.java @@ -27,8 +27,8 @@ public List getAll() { return userDAO.getAll(); } - public User get(Long id) { - return userDAO.get(id); + public User getById(Long id) { + return userDAO.getById(id); } public void save(User user, String roleUser) { @@ -45,12 +45,6 @@ public void save(User user, String roleUser) { } - 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); From f02f5997af2a86373bb050c79567d3b151fb6822 Mon Sep 17 00:00:00 2001 From: Shell26 Date: Tue, 19 Nov 2019 14:29:23 +0400 Subject: [PATCH 5/6] Add DAO realization --- src/main/java/shell/DAO/UserDaoImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/shell/DAO/UserDaoImpl.java b/src/main/java/shell/DAO/UserDaoImpl.java index a3718cd..99f7f00 100644 --- a/src/main/java/shell/DAO/UserDaoImpl.java +++ b/src/main/java/shell/DAO/UserDaoImpl.java @@ -64,7 +64,7 @@ public void update(User newUser, Long id) { user.setName(newUser.getName()); user.setPassword(newUser.getPassword()); user.setRoles(newUser.getRoles()); - entityManager.refresh(user); + entityManager.merge(user); } @Override From e4a3de834afc8dc00925213af4ce6ad53aa96d34 Mon Sep 17 00:00:00 2001 From: Shell26 Date: Tue, 19 Nov 2019 14:51:15 +0400 Subject: [PATCH 6/6] Add DAO realization --- src/main/java/shell/controlers/UsersController.java | 4 ++++ src/main/java/shell/service/UserService.java | 9 ++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/shell/controlers/UsersController.java b/src/main/java/shell/controlers/UsersController.java index 2dbf652..0fd3e6c 100644 --- a/src/main/java/shell/controlers/UsersController.java +++ b/src/main/java/shell/controlers/UsersController.java @@ -68,6 +68,10 @@ public ModelAndView editPage(@PathVariable("*") long id) { //@PathVariable ук @RequestMapping(value = "/admin/edit", method = RequestMethod.POST) public ModelAndView editUser(@ModelAttribute("user") User user) { + 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"); //означает, что после выполнения данного метода мы будем перенаправлены на адрес "/" diff --git a/src/main/java/shell/service/UserService.java b/src/main/java/shell/service/UserService.java index 64afd3f..515fbb6 100644 --- a/src/main/java/shell/service/UserService.java +++ b/src/main/java/shell/service/UserService.java @@ -34,11 +34,11 @@ public User getById(Long id) { public void save(User user, String roleUser) { Set role = new HashSet<>(); if (roleUser.equals("ADMIN")) { - role.add(roleService.getRoleById(2L)); + role.add(roleService.getRoleById(1L)); user.setRoles(role); userDAO.save(user); } else { - role.add(roleService.getRoleById(1L)); + role.add(roleService.getRoleById(2L)); user.setRoles(role); userDAO.save(user); } @@ -46,9 +46,8 @@ public void save(User user, String roleUser) { } - public User getByLogin(String userlogin) { - User user = userDAO.getByLogin(userlogin); - return user; + public User getByLogin(String login) { + return userDAO.getByLogin(login); } public void delete(Long id) {