From ddd5bc504edb2ddf3c061ba38b16684963d8802c Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 5 Apr 2021 12:09:04 +0400 Subject: [PATCH] show authors --- .../controller/GitFilteringController.java | 26 ++----- .../ulstu/extractor/model/mvc/FilterForm.java | 14 ++++ .../repository/AuthorRepository.java | 9 ++- .../extractor/service/FilteringService.java | 54 ++++++++++++- .../ulstu/extractor/service/IndexService.java | 18 +---- src/main/resources/templates/error.html | 19 ++--- .../resources/templates/filterCommits.html | 76 +++++++++++++------ .../templates/indexNewRepository.html | 2 +- 8 files changed, 142 insertions(+), 76 deletions(-) diff --git a/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java b/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java index e3c5ffb..c35c5fd 100644 --- a/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java +++ b/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java @@ -16,7 +16,6 @@ import ru.ulstu.extractor.model.Commit; import ru.ulstu.extractor.model.OffsetablePageRequest; import ru.ulstu.extractor.model.mvc.FilterForm; import ru.ulstu.extractor.service.FilteringService; -import ru.ulstu.extractor.service.IndexService; import java.util.List; import java.util.Optional; @@ -27,26 +26,13 @@ import static ru.ulstu.extractor.controller.Route.FILTER_COMMITS; @Controller public class GitFilteringController { + private final static int DEFAULT_PAGE_SIZE = 20; private final FilteringService filteringService; - private final IndexService indexService; - public GitFilteringController(FilteringService filteringService, - IndexService indexService) { + public GitFilteringController(FilteringService filteringService) { this.filteringService = filteringService; - this.indexService = indexService; } - /* @PostMapping("/sendFilter") - public String sendFilter(@ModelAttribute FilterForm filterForm, Model model) throws GitAPIException, IOException { - List list = gitRepositoryService.getCommits(filterForm.getUrl(), filterForm.getBranch()); - model.addAttribute("commits", list); - if (filterForm.getFilter() == null || filterForm.getFilter().isEmpty()) { - model.addAttribute("error", "'Строка' не должно быть пустым"); - return "filtering"; - } - return "resultRepo"; - }*/ - @RequestMapping(value = FILTER_COMMITS, method = RequestMethod.GET) public String listCommits( Model model, @@ -56,9 +42,11 @@ public class GitFilteringController { @RequestParam String repositoryUrl, @RequestParam String branchName) { int currentPage = page.orElse(1); - int pageSize = size.orElse(5); + int pageSize = size.orElse(DEFAULT_PAGE_SIZE); - Page commitsPage = indexService.getCommits(repositoryUrl, branchName, new OffsetablePageRequest(currentPage, pageSize)); + Page commitsPage = filteringService.getCommits(repositoryUrl, + branchName, + new OffsetablePageRequest(currentPage, pageSize)); int totalPages = commitsPage.getTotalPages(); if (totalPages > 0) { List pageNumbers = IntStream.rangeClosed(1, totalPages - 1) @@ -66,11 +54,11 @@ public class GitFilteringController { .collect(Collectors.toList()); model.addAttribute("pageNumbers", pageNumbers); } - filterForm = new FilterForm(); filterForm.setCommitsPage(commitsPage); filterForm.setBranch(branchName); filterForm.setUrl(repositoryUrl); model.addAttribute("filterForm", filterForm); + model.addAttribute("authors", filteringService.getRepositoryAuthors(repositoryUrl, branchName)); return FILTER_COMMITS; } } diff --git a/src/main/java/ru/ulstu/extractor/model/mvc/FilterForm.java b/src/main/java/ru/ulstu/extractor/model/mvc/FilterForm.java index 6180b13..0e01fd9 100644 --- a/src/main/java/ru/ulstu/extractor/model/mvc/FilterForm.java +++ b/src/main/java/ru/ulstu/extractor/model/mvc/FilterForm.java @@ -1,3 +1,8 @@ +/* + * Copyright (C) 2021 Anton Romanov - All Rights Reserved + * You may use, distribute and modify this code, please write to: romanov73@gmail.com. + */ + package ru.ulstu.extractor.model.mvc; import org.springframework.data.domain.Page; @@ -7,11 +12,20 @@ public class FilterForm { private String filter; private String url; private String branch; + private String author; private Page commitsPage; public FilterForm() { } + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + public FilterForm(String url) { this.url = url; } diff --git a/src/main/java/ru/ulstu/extractor/repository/AuthorRepository.java b/src/main/java/ru/ulstu/extractor/repository/AuthorRepository.java index 504aaf2..a99a1b1 100644 --- a/src/main/java/ru/ulstu/extractor/repository/AuthorRepository.java +++ b/src/main/java/ru/ulstu/extractor/repository/AuthorRepository.java @@ -1,3 +1,8 @@ +/* + * Copyright (C) 2021 Anton Romanov - All Rights Reserved + * You may use, distribute and modify this code, please write to: romanov73@gmail.com. + */ + package ru.ulstu.extractor.repository; import org.springframework.data.jpa.repository.JpaRepository; @@ -9,6 +14,6 @@ import ru.ulstu.extractor.model.Repository; import java.util.List; public interface AuthorRepository extends JpaRepository { - @Query("SELECT a FROM Commit c, Repository r, Branch b, Author a WHERE c.author = a AND c.branch = b AND r = b.repository AND r = :repository AND b.name = :branchName") - List findByRepositoryAndBranch(@Param("repository") Repository repository, @Param("branchName") String branchName); + @Query("SELECT DISTINCT a.name FROM Commit c, Repository r, Branch b, Author a WHERE c.author = a AND c.branch = b AND r = b.repository AND r = :repository AND b.name = :branchName AND a.name IS NOT NULL AND a.name <> '' ORDER BY a.name") + List findByRepositoryAndBranch(@Param("repository") Repository repository, @Param("branchName") String branchName); } diff --git a/src/main/java/ru/ulstu/extractor/service/FilteringService.java b/src/main/java/ru/ulstu/extractor/service/FilteringService.java index b6b7cf7..52cca2d 100644 --- a/src/main/java/ru/ulstu/extractor/service/FilteringService.java +++ b/src/main/java/ru/ulstu/extractor/service/FilteringService.java @@ -1,13 +1,61 @@ +/* + * Copyright (C) 2021 Anton Romanov - All Rights Reserved + * You may use, distribute and modify this code, please write to: romanov73@gmail.com. + */ + package ru.ulstu.extractor.service; +import com.sun.istack.NotNull; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import ru.ulstu.extractor.model.Commit; +import ru.ulstu.extractor.repository.AuthorRepository; +import ru.ulstu.extractor.repository.CommitRepository; +import ru.ulstu.extractor.repository.RepositoryRepository; + +import java.util.List; @Service public class FilteringService { + private final AuthorRepository authorRepository; + private final CommitRepository commitRepository; + private final RepositoryRepository repositoryRepository; + + public FilteringService(AuthorRepository authorRepository, + CommitRepository commitRepository, + RepositoryRepository repositoryRepository) { + this.authorRepository = authorRepository; + this.commitRepository = commitRepository; + this.repositoryRepository = repositoryRepository; + } - private final IndexService indexService; + public List getRepositoryAuthors(@NotNull String repositoryUrl, + @NotNull String branchName) { + return authorRepository.findByRepositoryAndBranch( + repositoryRepository.findByUrl(repositoryUrl), + branchName + ); + } - public FilteringService(IndexService indexService) { - this.indexService = indexService; + public Page getCommits(@NotNull String repositoryUrl, + @NotNull String branchName, + Pageable pageable) { + return commitRepository.findByRepositoryAndBranch( + pageable, + repositoryRepository.findByUrl(repositoryUrl), + branchName + ); } + + /* @PostMapping("/sendFilter") + public String sendFilter(@ModelAttribute FilterForm filterForm, Model model) throws GitAPIException, IOException { + List list = gitRepositoryService.getCommits(filterForm.getUrl(), filterForm.getBranch()); + model.addAttribute("commits", list); + if (filterForm.getFilter() == null || filterForm.getFilter().isEmpty()) { + model.addAttribute("error", "'Строка' не должно быть пустым"); + return "filtering"; + } + return "resultRepo"; + }*/ } diff --git a/src/main/java/ru/ulstu/extractor/service/IndexService.java b/src/main/java/ru/ulstu/extractor/service/IndexService.java index 62925db..44b7414 100644 --- a/src/main/java/ru/ulstu/extractor/service/IndexService.java +++ b/src/main/java/ru/ulstu/extractor/service/IndexService.java @@ -7,15 +7,11 @@ package ru.ulstu.extractor.service; import com.sun.istack.NotNull; import org.eclipse.jgit.api.errors.GitAPIException; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.extractor.model.Author; import ru.ulstu.extractor.model.Branch; import ru.ulstu.extractor.model.Commit; import ru.ulstu.extractor.model.Repository; -import ru.ulstu.extractor.repository.AuthorRepository; import ru.ulstu.extractor.repository.BranchRepository; import ru.ulstu.extractor.repository.CommitRepository; import ru.ulstu.extractor.repository.RepositoryRepository; @@ -29,19 +25,15 @@ public class IndexService { private final RepositoryRepository repositoryRepository; private final BranchRepository branchRepository; private final CommitRepository commitRepository; - private final AuthorRepository authorRepository; - public IndexService(GitRepositoryService gitRepositoryService, RepositoryRepository repositoryRepository, BranchRepository branchRepository, - CommitRepository commitRepository, - AuthorRepository authorRepository) { + CommitRepository commitRepository) { this.gitRepositoryService = gitRepositoryService; this.repositoryRepository = repositoryRepository; this.branchRepository = branchRepository; this.commitRepository = commitRepository; - this.authorRepository = authorRepository; } @Transactional @@ -61,12 +53,4 @@ public class IndexService { branch.setCommits(commits); branchRepository.save(branch); } - - public List getRepositoryAuthors(@NotNull String repositoryUrl, @NotNull String branchName) { - return authorRepository.findByRepositoryAndBranch(repositoryRepository.findByUrl(repositoryUrl), branchName); - } - - public Page getCommits(@NotNull String repositoryUrl, @NotNull String branchName, Pageable pageable) { - return commitRepository.findByRepositoryAndBranch(pageable, repositoryRepository.findByUrl(repositoryUrl), branchName); - } } diff --git a/src/main/resources/templates/error.html b/src/main/resources/templates/error.html index 0017912..ce4f465 100644 --- a/src/main/resources/templates/error.html +++ b/src/main/resources/templates/error.html @@ -1,18 +1,17 @@ + + - -

Ошибка

-

Страница: Page URL

@@ -34,11 +33,13 @@

${url}
-

-

${exception.message}

+
+ ${exception.message} +
    -
  • ${ste}
diff --git a/src/main/resources/templates/filterCommits.html b/src/main/resources/templates/filterCommits.html index 033a785..17c6039 100644 --- a/src/main/resources/templates/filterCommits.html +++ b/src/main/resources/templates/filterCommits.html @@ -27,33 +27,59 @@ }
-

Фильтровать данные:

- По автору - - Дата с - - по - -

Строки:
- - -

-

+
+
+ Автор +
+
+ +
+
+ Дата: +
+
+ +
+
+ - +
+
+ +
+
+
+
+ Искать по тексту: +
+
+ +
+
+ +
+
+ + - - - + + + @@ -65,7 +91,7 @@
AuthorDateCommitАвторДатаСообщение

- +

Страницы: diff --git a/src/main/resources/templates/indexNewRepository.html b/src/main/resources/templates/indexNewRepository.html index 894024c..5c77e52 100644 --- a/src/main/resources/templates/indexNewRepository.html +++ b/src/main/resources/templates/indexNewRepository.html @@ -46,7 +46,7 @@ data-width="90%">