diff --git a/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java b/src/main/java/ru/ulstu/extractor/controller/GitFilteringController.java index 62a123b..9b59826 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; @@ -34,21 +33,23 @@ public class GitFilteringController { this.filteringService = filteringService; } - @RequestMapping(value = FILTER_COMMITS, method = RequestMethod.GET) + @RequestMapping(value = FILTER_COMMITS, method = {RequestMethod.GET, RequestMethod.POST}) 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) { int currentPage = page.orElse(1); int pageSize = size.orElse(DEFAULT_PAGE_SIZE); - String author = "Anton Romanov"; - Page commitsPage = filteringService.getCommits(repositoryUrl, - branchName, - author, + 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), new OffsetablePageRequest(currentPage - 1, pageSize)); int totalPages = commitsPage.getTotalPages(); if (totalPages > 0) { @@ -57,31 +58,16 @@ 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)); model.addAttribute("filterForm", filterForm); - model.addAttribute("authors", filteringService.getRepositoryAuthors(repositoryUrl, branchName)); + model.addAttribute("authors", filteringService.getRepositoryAuthors( + notEmptyRepositoryUrl, + notEmptyBranchName + )); return FILTER_COMMITS; } - -// @RequestMapping(value = FILTER_COMMITS, method = RequestMethod.POST) -// public ModelAndView listFilterCommits( -// Model model, -// @ModelAttribute FilterForm filterForm) { -// Page commitsPage = filteringService.getCommits(filterForm.getUrl(), -// filterForm.getBranch(), -// new OffsetablePageRequest(0, DEFAULT_PAGE_SIZE)); -// int totalPages = commitsPage.getTotalPages(); -// if (totalPages > 0) { -// List pageNumbers = IntStream.rangeClosed(1, totalPages) -// .boxed() -// .collect(Collectors.toList()); -// model.addAttribute("pageNumbers", pageNumbers); -// } -// filterForm.setCommitsPage(commitsPage); -// model.addAttribute("filterForm", filterForm); -// model.addAttribute("authors", filteringService.getRepositoryAuthors(filterForm.getUrl(), filterForm.getBranch())); -// return new ModelAndView()FILTER_COMMITS + "?repositoryUrl="+filterForm.getUrl() + "&branchName=" +filterForm.getBranch() ; -// } } 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 bd542eb..a0e3e15 100644 --- a/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java +++ b/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java @@ -19,7 +19,7 @@ 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, Author a WHERE c.branch = b AND r = b.repository AND a = c.author AND r = :repository AND b.name = :branchName AND a.name = :author") + @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)") Page findByRepositoryAndBranch(Pageable pageable, @Param("repository") Repository repository, @Param("branchName") String branchName, @Param("author") String author); @Query("SELECT new ru.ulstu.extractor.model.CommitAuthorStatistic(c.author.name, COUNT(DISTINCT c.hash)) FROM Commit c GROUP by c.author.name") diff --git a/src/main/java/ru/ulstu/extractor/service/FilteringService.java b/src/main/java/ru/ulstu/extractor/service/FilteringService.java index d5cdd73..4ffb376 100644 --- a/src/main/java/ru/ulstu/extractor/service/FilteringService.java +++ b/src/main/java/ru/ulstu/extractor/service/FilteringService.java @@ -40,7 +40,7 @@ public class FilteringService { public Page getCommits(@NotNull String repositoryUrl, @NotNull String branchName, - @NotNull String author, + String author, Pageable pageable) { return commitRepository.findByRepositoryAndBranch( pageable, diff --git a/src/main/resources/templates/filterCommits.html b/src/main/resources/templates/filterCommits.html index 2bb0c1b..dfaa54d 100644 --- a/src/main/resources/templates/filterCommits.html +++ b/src/main/resources/templates/filterCommits.html @@ -26,7 +26,7 @@ border-radius: 2px; } -
+
Автор @@ -39,6 +39,11 @@ th:utext="${author}"> +
Дата: @@ -73,8 +78,8 @@
- - + + @@ -91,14 +96,14 @@
-

- -

Страницы: