Skip to content

Entity manager #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.0.Final</version>
<version>5.2.17.Final</version>
</dependency>

<dependency>
Expand All @@ -81,7 +81,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.0.Final</version>
<version>5.2.17.Final</version>
</dependency>

<dependency>
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/shell/DAO/RoleDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package shell.DAO;


import shell.model.Role;

public interface RoleDao {

Role getRoleById(Long roleId);
Role getRoleUser();
}
38 changes: 38 additions & 0 deletions src/main/java/shell/DAO/RoleDaoImpl.java
Original file line number Diff line number Diff line change
@@ -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);
}
}

17 changes: 17 additions & 0 deletions src/main/java/shell/DAO/UserDao.java
Original file line number Diff line number Diff line change
@@ -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<User> getAll();
void save(User user);
void update(User user, Long id);
void delete(Long id);

}
76 changes: 76 additions & 0 deletions src/main/java/shell/DAO/UserDaoImpl.java
Original file line number Diff line number Diff line change
@@ -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<User> getAll() {
List<User> 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);
}
}
2 changes: 1 addition & 1 deletion src/main/java/shell/config/JPAConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

@Configuration
@ComponentScan(value = "shell")
@EnableJpaRepositories(basePackages = "shell.repositories")
@EnableJpaRepositories(basePackages = "shell")
@EnableTransactionManagement
public class JPAConfig {

Expand Down
41 changes: 21 additions & 20 deletions src/main/java/shell/controlers/UsersController.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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;
Expand All @@ -40,7 +44,7 @@ public UsersController(UserService userService, RoleService roleService) {

@RequestMapping(path = "/admin", method = RequestMethod.GET)
public ModelAndView getAllUsers() {
List<User> users = userService.findAllUser();
List<User> users = userService.getAll();
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("mainPage");
modelAndView.addObject("usersFromServer", users);
Expand All @@ -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<Role> setRoles = new HashSet<>();
setRoles.add(role);
user.setRoles(setRoles);
userService.edit(user, user.getId());
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/admin"); //означает, что после выполнения данного метода мы будем перенаправлены на адрес "/"
return modelAndView;
Expand Down Expand Up @@ -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<Role> setRoles = new HashSet<>();
setRoles.add(role);
String roleStr = setRoles.toString();
userService.save(user, roleStr);
return "redirect:/admin";
}

Expand All @@ -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";
}

Expand Down
13 changes: 0 additions & 13 deletions src/main/java/shell/repositories/RoleRepository.java

This file was deleted.

17 changes: 0 additions & 17 deletions src/main/java/shell/repositories/UserRepository.java

This file was deleted.

21 changes: 17 additions & 4 deletions src/main/java/shell/service/RoleService.java
Original file line number Diff line number Diff line change
@@ -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<Role> getRole ();
@Autowired
public RoleService(RoleDao roleDAO) {
this.roleDAO = roleDAO;
}

Set<Role> getRoleByName (String nameRole);
public Role getRoleById(Long roleId) {
return roleDAO.getRoleById(roleId);
}

public Role getRoleUser() {
return roleDAO.getRoleUser();
}
}
41 changes: 0 additions & 41 deletions src/main/java/shell/service/RoleServiceImpl.java

This file was deleted.

8 changes: 8 additions & 0 deletions src/main/java/shell/service/SignUpService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package shell.service;


import shell.model.User;

public interface SignUpService {
void signUp(User user, String role);
}
Loading