diff --git a/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java b/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java index 87df222..e172698 100644 --- a/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java +++ b/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java @@ -8,7 +8,6 @@ package ru.ulstu.extractor.controller; import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -36,16 +35,22 @@ public class GitFilteringController { @RequestMapping(value = FILTER_COMMITS, method = RequestMethod.GET) public String listCommits( Model model, - @ModelAttribute FilterForm filterForm, - @RequestParam("page") Optional page, - @RequestParam("size") Optional size, - @RequestParam String repositoryUrl, - @RequestParam String branchName) { + @RequestParam Optional page, + @RequestParam Optional size, + @RequestParam Optional repositoryUrl, + @RequestParam Optional branchName, + @RequestParam Optional author, + @RequestParam Optional filter) { int currentPage = page.orElse(1); int pageSize = size.orElse(DEFAULT_PAGE_SIZE); - Page commitsPage = filteringService.getCommits(repositoryUrl, - branchName, + String notEmptyRepositoryUrl = repositoryUrl.orElseThrow(() -> new RuntimeException("Url repository not present")); + String notEmptyBranchName = branchName.orElseThrow(() -> new RuntimeException("Branch name not present")); + + Page commitsPage = filteringService.getCommits(notEmptyRepositoryUrl, + notEmptyBranchName, + author.orElse(null), + filter.orElse(null), new OffsetablePageRequest(currentPage - 1, pageSize)); int totalPages = commitsPage.getTotalPages(); if (totalPages > 0) { @@ -54,11 +59,17 @@ public class GitFilteringController { .collect(Collectors.toList()); model.addAttribute("pageNumbers", pageNumbers); } + FilterForm filterForm = new FilterForm(); filterForm.setCommitsPage(commitsPage); - filterForm.setBranch(branchName); - filterForm.setUrl(repositoryUrl); + filterForm.setBranchName(notEmptyBranchName); + filterForm.setRepositoryUrl(notEmptyRepositoryUrl); + filterForm.setAuthor(author.orElse(null)); + filterForm.setFilter(filter.orElse(null)); model.addAttribute("filterForm", filterForm); - model.addAttribute("authors", filteringService.getRepositoryAuthors(repositoryUrl, branchName)); + model.addAttribute("authors", filteringService.getRepositoryAuthors( + notEmptyRepositoryUrl, + notEmptyBranchName + )); 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 0e01fd9..2d42b74 100644 --- a/src/main/java/ru/ulstu/extractor/model/mvc/FilterForm.java +++ b/src/main/java/ru/ulstu/extractor/model/mvc/FilterForm.java @@ -10,8 +10,8 @@ import ru.ulstu.extractor.model.Commit; public class FilterForm { private String filter; - private String url; - private String branch; + private String repositoryUrl; + private String branchName; private String author; private Page commitsPage; @@ -27,7 +27,7 @@ public class FilterForm { } public FilterForm(String url) { - this.url = url; + this.repositoryUrl = url; } public String getFilter() { @@ -38,34 +38,38 @@ public class FilterForm { this.filter = filter; } - public String getUrl() { - return url; + public Page getCommitsPage() { + return commitsPage; } - public void setUrl(String url) { - this.url = url; + public void setCommitsPage(Page commitsPage) { + this.commitsPage = commitsPage; } - public String getBranch() { - return branch; + public String getRepositoryUrl() { + return repositoryUrl; } - public void setBranch(String branch) { - this.branch = branch; + public void setRepositoryUrl(String repositoryUrl) { + this.repositoryUrl = repositoryUrl; } - public Page getCommitsPage() { - return commitsPage; + public String getBranchName() { + return branchName; } - public void setCommitsPage(Page commitsPage) { - this.commitsPage = commitsPage; + public void setBranchName(String branchName) { + this.branchName = branchName; } @Override public String toString() { return "FilterForm{" + - "subject='" + filter + + "filter='" + filter + '\'' + + ", repositoryUrl='" + repositoryUrl + '\'' + + ", branchName='" + branchName + '\'' + + ", author='" + author + '\'' + + ", commitsPage=" + commitsPage + '}'; } } diff --git a/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java b/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java index 6569450..00fde10 100644 --- a/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java +++ b/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java @@ -19,8 +19,8 @@ import ru.ulstu.extractor.model.Repository; import java.util.List; public interface CommitRepository extends JpaRepository { - @Query("SELECT c FROM Commit c, Repository r, Branch b WHERE c.branch = b AND r = b.repository AND r = :repository AND b.name = :branchName") - Page findByRepositoryAndBranch(Pageable pageable, @Param("repository") Repository repository, @Param("branchName") String branchName); + @Query("SELECT c FROM Commit c, Repository r, Branch b, Author a WHERE c.branch = b AND r = b.repository AND a = c.author AND r = :repository AND b.name = :branchName AND (:author IS NULL OR :author = '' OR a.name = :author) AND (:filter IS NULL OR :filter = '' OR lower(c.message) LIKE lower(concat('%', :filter,'%')))") + Page findByRepositoryAndBranch(Pageable pageable, @Param("repository") Repository repository, @Param("branchName") String branchName, @Param("author") String author, @Param("filter") String filter); @Query("SELECT new ru.ulstu.extractor.model.CommitAuthorStatistic(c.author.name, COUNT(DISTINCT c.hash)) FROM Commit c GROUP by c.author.name") List getCommitAuthorStatistic(); diff --git a/src/main/java/ru/ulstu/extractor/service/FilteringService.java b/src/main/java/ru/ulstu/extractor/service/FilteringService.java index 52cca2d..f85f3fb 100644 --- a/src/main/java/ru/ulstu/extractor/service/FilteringService.java +++ b/src/main/java/ru/ulstu/extractor/service/FilteringService.java @@ -40,22 +40,15 @@ public class FilteringService { public Page getCommits(@NotNull String repositoryUrl, @NotNull String branchName, + String author, + String filter, Pageable pageable) { return commitRepository.findByRepositoryAndBranch( pageable, repositoryRepository.findByUrl(repositoryUrl), - branchName + branchName, + author, + filter ); } - - /* @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/resources/templates/filterCommits.html b/src/main/resources/templates/filterCommits.html index 17c6039..2836270 100644 --- a/src/main/resources/templates/filterCommits.html +++ b/src/main/resources/templates/filterCommits.html @@ -26,7 +26,7 @@ border-radius: 2px; } -
+
Автор @@ -34,11 +34,16 @@
+
Дата: @@ -73,7 +78,8 @@
- + + @@ -90,14 +96,15 @@
-

- -

Страницы: