/chemgenerator-webapp/src/main/java/com/chemgenerator/services/impl/UserServiceImpl.java

https://gitlab.com/Krerg/ChemGenerator · Java · 77 lines · 56 code · 9 blank · 12 comment · 21 complexity · a36b86f4a6c3dd70cf11afbaf9ccd202 MD5 · raw file

  1. package com.chemgenerator.services.impl;
  2. import com.chemgenerator.mongodb.enitites.TaskBundle;
  3. import com.chemgenerator.mongodb.enitites.User;
  4. import com.chemgenerator.mongodb.enitites.UserTaskBundles;
  5. import com.chemgenerator.mongodb.repos.UserRepository;
  6. import com.chemgenerator.rest.pojo.response.UserInformation;
  7. import com.chemgenerator.rest.pojo.response.UserPojo;
  8. import com.chemgenerator.security.UserDetails;
  9. import com.chemgenerator.services.UserService;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.security.core.context.SecurityContextHolder;
  12. import org.springframework.stereotype.Component;
  13. import java.util.LinkedList;
  14. import java.util.List;
  15. /**
  16. * @{inheritDoc}
  17. */
  18. @Component
  19. public class UserServiceImpl implements UserService {
  20. @Autowired
  21. private UserRepository userRepository;
  22. /**
  23. * Searches user in repository by given login.
  24. *
  25. * @param login user's login
  26. * @return user if given login exists, otherwise null.
  27. */
  28. public User findUserByLogin(String login) {
  29. return userRepository.findByLogin(login);
  30. }
  31. /**
  32. * {@inheritDoc}
  33. */
  34. public void updateUser(UserPojo userPojo) {
  35. if (userPojo.getLogin() != null) {
  36. User user;
  37. if (null != (user = findUserByLogin(userPojo.getLogin()))) {
  38. updateUserEntityFields(user, userPojo);
  39. userRepository.save(user);
  40. updateUserInformation(userPojo);
  41. }
  42. }
  43. }
  44. @Override
  45. public List<String> getUserTaskBundles() {
  46. String userName = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
  47. UserTaskBundles userTaskBundles = userRepository.findByLogin(userName).getUserBundles();
  48. List<String> userTaskBundlesFiles = new LinkedList<>();
  49. for(TaskBundle taskBundle : userTaskBundles.getTaskBundles()) {
  50. userTaskBundlesFiles.add(taskBundle.getBundleFileNameWithAnswers());
  51. userTaskBundlesFiles.add(taskBundle.getBundleFileNameWithoutAnswers());
  52. }
  53. return userTaskBundlesFiles;
  54. }
  55. private void updateUserInformation(UserPojo userPojo) {
  56. UserInformation userInformation = ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getDetails()).getUserInformation();
  57. if (userPojo.getName() != null) userInformation.setName(userPojo.getName());
  58. if (userPojo.getEmail() != null) userInformation.setEmail(userPojo.getEmail());
  59. if (userPojo.getBirth() != null) userInformation.setBirth(userPojo.getBirth());
  60. if (userPojo.getLogin() != null) userInformation.setUserLogin(userPojo.getLogin());
  61. }
  62. private void updateUserEntityFields(User userEntity, UserPojo userPojo) {
  63. if (userPojo.getPassword() != null) userEntity.setPassword(userPojo.getPassword());
  64. if (userPojo.getEmail() != null) userEntity.setEmail(userPojo.getEmail());
  65. if (userPojo.getName() != null) userEntity.setName(userPojo.getName());
  66. if (userPojo.getBirth() != null) userEntity.setBirth(userPojo.getBirth());
  67. }
  68. }