From c5df48f563e8087be0ec330edad02ded0484312e Mon Sep 17 00:00:00 2001 From: iRedTea Date: Mon, 29 Aug 2022 13:15:51 +0300 Subject: [PATCH] Added FilterService.java and my-discussions page --- build.gradle | 2 +- .../easystartupcore/config/AppConfig.java | 3 ++ .../controller/ForumController.java | 13 ++++-- .../easystartupcore/filter/FilterService.java | 30 +++++++++++-- .../filter/StreamFilterService.java | 31 ------------- .../resources/templates/my-discussions.html | 43 +++++++++++++++++++ 6 files changed, 82 insertions(+), 40 deletions(-) delete mode 100644 src/main/java/site/easystartup/easystartupcore/filter/StreamFilterService.java create mode 100644 src/main/resources/templates/my-discussions.html diff --git a/build.gradle b/build.gradle index 745df92..efac671 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-validation:2.7.3' + implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'com.google.guava:guava:31.1-jre' implementation 'org.springframework.data:spring-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' diff --git a/src/main/java/site/easystartup/easystartupcore/config/AppConfig.java b/src/main/java/site/easystartup/easystartupcore/config/AppConfig.java index 4abc860..cc55bf2 100644 --- a/src/main/java/site/easystartup/easystartupcore/config/AppConfig.java +++ b/src/main/java/site/easystartup/easystartupcore/config/AppConfig.java @@ -3,12 +3,15 @@ package site.easystartup.easystartupcore.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration @ComponentScan(basePackages = {"site.easystartup.easystartupcore"}) public class AppConfig { + + @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); diff --git a/src/main/java/site/easystartup/easystartupcore/controller/ForumController.java b/src/main/java/site/easystartup/easystartupcore/controller/ForumController.java index 4e9d709..b2bc834 100644 --- a/src/main/java/site/easystartup/easystartupcore/controller/ForumController.java +++ b/src/main/java/site/easystartup/easystartupcore/controller/ForumController.java @@ -4,11 +4,15 @@ import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.val; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import site.easystartup.easystartupcore.domain.forum.Discussion; import site.easystartup.easystartupcore.domain.forum.Topic; +import site.easystartup.easystartupcore.filter.FilterService; import site.easystartup.easystartupcore.repos.forum.TopicRepo; import java.util.Collections; @@ -18,7 +22,7 @@ import java.util.Collections; public class ForumController { private final TopicRepo topicRepo; - private final Discussion discussion; + private final FilterService filterService; @GetMapping("/forum") public String forumMain(Model model) { @@ -29,8 +33,9 @@ public class ForumController { @GetMapping("/forum/my") public String forumMy(Model model) { - val topic = Lists.newArrayList(topicRepo.findAll()); - model.addAttribute("topics", topic); - return "forum"; + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + val discussions = filterService.getDiscussionsByAuthor(user.getUsername()); + model.addAttribute("discussions", discussions); + return "my-discussions"; } } diff --git a/src/main/java/site/easystartup/easystartupcore/filter/FilterService.java b/src/main/java/site/easystartup/easystartupcore/filter/FilterService.java index bb1f2b1..93e6b20 100644 --- a/src/main/java/site/easystartup/easystartupcore/filter/FilterService.java +++ b/src/main/java/site/easystartup/easystartupcore/filter/FilterService.java @@ -1,14 +1,36 @@ package site.easystartup.easystartupcore.filter; +import com.google.common.collect.Lists; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import site.easystartup.easystartupcore.domain.forum.Discussion; import site.easystartup.easystartupcore.domain.forum.DiscussionMessage; +import site.easystartup.easystartupcore.repos.forum.DiscussionMessageRepo; +import site.easystartup.easystartupcore.repos.forum.DiscussionRepo; import java.util.List; -public interface FilterService { - List getMessagesByDiscussionId(long discussionId); +@Component +@RequiredArgsConstructor(onConstructor_ = @Autowired) +public class FilterService { + private final DiscussionMessageRepo discussionMessageRepo; - List getDiscussionByAuthor(String author); + private final DiscussionRepo discussionRepo; - List getDiscussionByMember(String member); + public List getMessagesByDiscussionId(long discussionId) { + return Lists.newArrayList(discussionMessageRepo.findAll()).stream() + .filter(m -> m.getId() == discussionId).toList(); + } + + public List getDiscussionsByAuthor(String author) { + return Lists.newArrayList(discussionRepo.findAll()).stream() + .filter(d -> d.getAuthor().equals(author)).toList(); + } + + public List getDiscussionsByMember(String member) { + return Lists.newArrayList(discussionRepo.findAll()).stream() + .filter(d -> getMessagesByDiscussionId(d.getId()).stream() + .anyMatch(m -> m.getSender().equals(member))).toList(); + } } diff --git a/src/main/java/site/easystartup/easystartupcore/filter/StreamFilterService.java b/src/main/java/site/easystartup/easystartupcore/filter/StreamFilterService.java deleted file mode 100644 index 0c0e00b..0000000 --- a/src/main/java/site/easystartup/easystartupcore/filter/StreamFilterService.java +++ /dev/null @@ -1,31 +0,0 @@ -package site.easystartup.easystartupcore.filter; - -import com.google.common.collect.Lists; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import site.easystartup.easystartupcore.domain.forum.Discussion; -import site.easystartup.easystartupcore.domain.forum.DiscussionMessage; -import site.easystartup.easystartupcore.repos.forum.DiscussionMessageRepo; - -import java.util.List; - -@RequiredArgsConstructor(onConstructor_ = @Autowired) -public class StreamFilterService implements FilterService { - private final DiscussionMessageRepo discussionMessageRepo; - - @Override - public List getMessagesByDiscussionId(long discussionId) { - //Lists.newArrayList(discussionMessageRepo.findAll()).stream().filter() - return null; - } - - @Override - public List getDiscussionByAuthor(String author) { - return null; - } - - @Override - public List getDiscussionByMember(String member) { - return null; - } -} diff --git a/src/main/resources/templates/my-discussions.html b/src/main/resources/templates/my-discussions.html new file mode 100644 index 0000000..3b33faa --- /dev/null +++ b/src/main/resources/templates/my-discussions.html @@ -0,0 +1,43 @@ + + + + + + Вход + + + + + + + + +
+

Мои обсуждения

+
+

+

+

+

+

+ +
+ + + + + + + \ No newline at end of file