summaryrefslogtreecommitdiffhomepage
path: root/backend/src/main/java/com/blog/web/services
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-07-27 20:20:29 -0400
committerrealtradam <[email protected]>2024-07-27 20:20:29 -0400
commitc366e70e95156d2637f82116312770e12a9aad32 (patch)
treef1724ea1945f492e73cc1e98606d86c61c98f0be /backend/src/main/java/com/blog/web/services
parent9148f894e02bf43775e18fc873a9deab5c36220c (diff)
downloadspring-blog-c366e70e95156d2637f82116312770e12a9aad32.tar.gz
spring-blog-c366e70e95156d2637f82116312770e12a9aad32.zip
implement delete functionality
Diffstat (limited to 'backend/src/main/java/com/blog/web/services')
-rw-r--r--backend/src/main/java/com/blog/web/services/ArticleService.java7
-rw-r--r--backend/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java52
-rw-r--r--backend/src/main/java/com/blog/web/services/impl/UserServiceImpl.java22
3 files changed, 36 insertions, 45 deletions
diff --git a/backend/src/main/java/com/blog/web/services/ArticleService.java b/backend/src/main/java/com/blog/web/services/ArticleService.java
index 1e50df0..4bf3028 100644
--- a/backend/src/main/java/com/blog/web/services/ArticleService.java
+++ b/backend/src/main/java/com/blog/web/services/ArticleService.java
@@ -4,7 +4,6 @@ import com.blog.web.dto.ArticleDto;
import com.blog.web.dto.ArticlePublicDto;
import com.blog.web.models.Article;
-import java.util.HashSet;
import java.util.List;
import java.util.Optional;
@@ -13,15 +12,15 @@ public interface ArticleService {
Optional<Article> saveArticle(ArticleDto article);
- ArticleDto findArticleById(long articleId);
+ Optional<ArticleDto> findArticleById(long articleId);
void updateArticle(ArticleDto articleDto);
- boolean delete(Long articleId);
+ boolean delete(long articleId);
//List<ArticleDto> searchArticles(String search);
ArticlePublicDto findArticlePublicById(long articleId);
- HashSet<ArticlePublicDto> searchPublicArticles(String search);
+ List<ArticlePublicDto> searchPublicArticles(String search);
}
diff --git a/backend/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java b/backend/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
index aaf1044..2f9de6c 100644
--- a/backend/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
+++ b/backend/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
@@ -12,7 +12,6 @@ import com.blog.web.services.ArticleService;
import com.blog.web.services.UserService;
import org.springframework.stereotype.Service;
-import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -51,54 +50,55 @@ public class ArticleServiceImpl implements ArticleService {
}
@Override
- public ArticleDto findArticleById(long articleId) {
- Article article = articleRepository.findById(articleId).get();
- return mapToArticleDto(article);
+ public Optional<ArticleDto> findArticleById(long articleId) {
+ final Optional<Article> otpArticle = articleRepository.findById(articleId);
+ if(otpArticle.isEmpty()) {
+ return Optional.empty();
+ }
+ else {
+ return Optional.of(mapToArticleDto(otpArticle.get()));
+ }
}
@Override
public void updateArticle(ArticleDto articleDto) {
- String username = SecurityUtil.getSessionUser();
- UserEntity user = userRepository.findByUsername(username).orElse(null);
+ final String username = SecurityUtil.getSessionUser();
+ final UserEntity user = userRepository.findByUsername(username).orElse(null);
if (user == null) {
return;
}
- Article article = mapToArticle(articleDto);
+ final Article article = mapToArticle(articleDto);
article.setCreatedBy(user);
articleRepository.save(article);
}
@Override
- 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);
+ public boolean delete(long articleId) {
+ final Optional<ArticleDto> optArticle = this.findArticleById(articleId);
+ if(optArticle.isEmpty()) { return false; } // cant find article, give up
+ final ArticleDto article = optArticle.get();
String ownerId = article.getUsername();
- if (ownerId.equals(userId)) {
+
+ final Optional<UserEntity> optUser = userService.getLoggedInUser();
+ if (optUser.isEmpty()) { return false; } // not logged in, not allowed to delete
+ final UserEntity user = optUser.get();
+ String userId = user.getUsername();
+
+ if (!ownerId.equals(userId)) { return false; } // logged in a different user, not allowed to delete
+ else {
articleRepository.deleteById(articleId);
return true;
- } else {
- return false;
}
}
- //@Override
- //public List<ArticleDto> searchArticles(String search) {
- // List<Article> articles = articleRepository.searchArticles(search);
- // return articles.stream().map(article -> mapToArticleDto(article)).collect(Collectors.toList());
- //}
-
@Override
public ArticlePublicDto findArticlePublicById(long articleId) {
return new ArticlePublicDto(articleRepository.findById(articleId).get());
}
@Override
- public HashSet<ArticlePublicDto> searchPublicArticles(String search) {
- HashSet<Article> articles = articleRepository.searchArticles(search);
- return articles.stream().map(article -> mapToArticlePublicDto(article)).collect(Collectors.toCollection(HashSet::new));
+ public List<ArticlePublicDto> searchPublicArticles(String search) {
+ List<Article> articles = articleRepository.searchArticles(search);
+ return articles.stream().map(article -> mapToArticlePublicDto(article)).collect(Collectors.toList());
}
}
diff --git a/backend/src/main/java/com/blog/web/services/impl/UserServiceImpl.java b/backend/src/main/java/com/blog/web/services/impl/UserServiceImpl.java
index 9c3eaa8..b39d15e 100644
--- a/backend/src/main/java/com/blog/web/services/impl/UserServiceImpl.java
+++ b/backend/src/main/java/com/blog/web/services/impl/UserServiceImpl.java
@@ -10,9 +10,7 @@ import com.blog.web.services.UserService;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
@Service
public class UserServiceImpl implements UserService {
@@ -28,14 +26,8 @@ public class UserServiceImpl implements UserService {
@Override
public void saveUser(RegistrationDto registrationDto) {
- UserEntity user = new UserEntity();
- user.setUsername(registrationDto.getUsername());
- user.setEmail(registrationDto.getEmail());
- user.setPassword(passwordEncoder.encode(registrationDto.getPassword()));
-
- final Role role = roleRepository.findByName("User").orElse(new Role());
- user.setRoles(List.of(role));
- userRepository.save(user);
+ final HashSet<Role> roles = (HashSet<Role>) Set.of(roleRepository.findByName("User").orElse(new Role()));
+ userRepository.save(new UserEntity(registrationDto.getUsername(), registrationDto.getEmail(), passwordEncoder.encode(registrationDto.getPassword()), roles));
}
@Override
@@ -50,11 +42,11 @@ public class UserServiceImpl implements UserService {
public Optional<UserEntity> getLoggedInUser() {
final Optional<UserEntity> user;
- String username = SecurityUtil.getSessionUser();
- if (username != null) {
- user = this.findByUsername(username);
+ Optional<String> optUsername = Optional.ofNullable(SecurityUtil.getSessionUser());
+ if(optUsername.isPresent()) {
+ user = this.findByUsername(optUsername.get());
} else {
- user = Optional.of(new UserEntity());
+ user = Optional.empty();
}
return user;
}