From 5e2eab6f32bc76918aa17791b688d1df27d6ddfc Mon Sep 17 00:00:00 2001 From: realtradam Date: Sat, 20 Jul 2024 00:51:37 -0400 Subject: code cleanup --- .../java/com/blog/web/services/ArticleService.java | 6 ++-- .../java/com/blog/web/services/UserService.java | 8 +++-- .../blog/web/services/impl/ArticleServiceImpl.java | 38 +++++++++++++++++----- .../blog/web/services/impl/UserServiceImpl.java | 32 ++++++++---------- 4 files changed, 52 insertions(+), 32 deletions(-) (limited to 'src/main/java/com/blog/web/services') diff --git a/src/main/java/com/blog/web/services/ArticleService.java b/src/main/java/com/blog/web/services/ArticleService.java index aeedcb4..f0fb05b 100644 --- a/src/main/java/com/blog/web/services/ArticleService.java +++ b/src/main/java/com/blog/web/services/ArticleService.java @@ -2,18 +2,20 @@ package com.blog.web.services; import com.blog.web.dto.ArticleDto; import com.blog.web.models.Article; + import java.util.List; +import java.util.Optional; public interface ArticleService { List findAllArticles(); - Article saveArticle(ArticleDto article); + Optional
saveArticle(ArticleDto article); ArticleDto findArticleById(long articleId); void updateArticle(ArticleDto articleDto); - void delete(Long articleId); + boolean delete(Long articleId); List searchArticles(String search); } diff --git a/src/main/java/com/blog/web/services/UserService.java b/src/main/java/com/blog/web/services/UserService.java index 270c2ef..b9c231b 100644 --- a/src/main/java/com/blog/web/services/UserService.java +++ b/src/main/java/com/blog/web/services/UserService.java @@ -3,12 +3,14 @@ package com.blog.web.services; import com.blog.web.dto.RegistrationDto; import com.blog.web.models.UserEntity; +import java.util.Optional; + public interface UserService { void saveUser(RegistrationDto registrationDto); - UserEntity findByEmail(String email); + Optional findByEmail(String email); - UserEntity findByUsername(String username); + Optional findByUsername(String username); - public UserEntity getLoggedInUser(); + public Optional getLoggedInUser(); } diff --git a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java index acca7e5..fb55c54 100644 --- a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java +++ b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java @@ -7,12 +7,15 @@ import com.blog.web.repository.ArticleRepository; import com.blog.web.repository.UserRepository; import com.blog.web.security.SecurityUtil; import com.blog.web.services.ArticleService; +import com.blog.web.services.UserService; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import com.blog.web.mappers.ArticleMapper; + import static com.blog.web.mappers.ArticleMapper.mapToArticle; import static com.blog.web.mappers.ArticleMapper.mapToArticleDto; @@ -20,27 +23,31 @@ import static com.blog.web.mappers.ArticleMapper.mapToArticleDto; public class ArticleServiceImpl implements ArticleService { final private ArticleRepository articleRepository; final private UserRepository userRepository; + final private UserService userService; - public ArticleServiceImpl(ArticleRepository articleRepository, UserRepository userRepository) { + public ArticleServiceImpl(ArticleRepository articleRepository, UserRepository userRepository, UserService userService) { this.userRepository = userRepository; this.articleRepository = articleRepository; + this.userService = userService; } @Override public List findAllArticles() { List
articles = articleRepository.findAll(); - //return articles.stream().map((article) -> mapToArticleDto(article)).collect(Collectors.toList()); return articles.stream().map(ArticleMapper::mapToArticleDto).collect(Collectors.toList()); } @Override - public Article saveArticle(ArticleDto articleDto) { + public Optional
saveArticle(ArticleDto articleDto) { String username = SecurityUtil.getSessionUser(); - UserEntity user = userRepository.findByUsername(username); + UserEntity user = userRepository.findByUsername(username).orElse(null); + if (user == null) { + return null; + } Article article = mapToArticle(articleDto); article.setCreatedBy(user); - return articleRepository.save(article); + return Optional.of(articleRepository.save(article)); } @Override @@ -52,15 +59,30 @@ public class ArticleServiceImpl implements ArticleService { @Override public void updateArticle(ArticleDto articleDto) { String username = SecurityUtil.getSessionUser(); - UserEntity user = userRepository.findByUsername(username); + UserEntity user = userRepository.findByUsername(username).orElse(null); + if (user == null) { + return; + } Article article = mapToArticle(articleDto); article.setCreatedBy(user); articleRepository.save(article); } @Override - public void delete(Long articleId) { - articleRepository.deleteById(articleId); + public boolean delete(Long articleId) { + final UserEntity user = userService.getLoggedInUser().orElse(null); + if (user == null) { + return false; + } + String userId = user.getUsername(); + ArticleDto article = this.findArticleById(articleId); + String ownerId = article.getUsername(); + if (ownerId.equals(userId)) { + articleRepository.deleteById(articleId); + return true; + } else { + return false; + } } @Override diff --git a/src/main/java/com/blog/web/services/impl/UserServiceImpl.java b/src/main/java/com/blog/web/services/impl/UserServiceImpl.java index f77eb9e..859e72c 100644 --- a/src/main/java/com/blog/web/services/impl/UserServiceImpl.java +++ b/src/main/java/com/blog/web/services/impl/UserServiceImpl.java @@ -11,17 +11,15 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.Optional; @Service public class UserServiceImpl implements UserService { - final private UserRepository userRepository; - final private RoleRepository roleRepository; - final private PasswordEncoder passwordEncoder; + private final UserRepository userRepository; + private final RoleRepository roleRepository; + private final PasswordEncoder passwordEncoder; - public UserServiceImpl( - UserRepository userRepository, - RoleRepository roleRepository, - PasswordEncoder passwordEncoder) { + public UserServiceImpl(UserRepository userRepository, RoleRepository roleRepository, PasswordEncoder passwordEncoder) { this.userRepository = userRepository; this.roleRepository = roleRepository; this.passwordEncoder = passwordEncoder; @@ -32,34 +30,30 @@ public class UserServiceImpl implements UserService { UserEntity user = new UserEntity(); user.setUsername(registrationDto.getUsername()); user.setEmail(registrationDto.getEmail()); - // this is an unsafe way to store passwords in production - // it is left this way only because this is a practice project - //user.setPassword(registrationDto.getPassword()); user.setPassword(passwordEncoder.encode(registrationDto.getPassword())); - final Role role = roleRepository.findByName("User"); + final Role role = roleRepository.findByName("User").orElse(new Role()); user.setRoles(Arrays.asList(role)); userRepository.save(user); } @Override - public UserEntity findByEmail(String email) { + public Optional findByEmail(String email) { return userRepository.findByEmail(email); } @Override - public UserEntity findByUsername(String username) { + public Optional findByUsername(String username) { return userRepository.findByUsername(username); } - public UserEntity getLoggedInUser() { - final UserEntity user; + public Optional getLoggedInUser() { + final Optional user; String username = SecurityUtil.getSessionUser(); - if(username != null) { + if (username != null) { user = this.findByUsername(username); - } - else { - user = new UserEntity(); + } else { + user = Optional.of(new UserEntity()); } return user; } -- cgit v1.2.3