From c4edf5b6398d2fc59812878bae8b7c3895b48aa4 Mon Sep 17 00:00:00 2001 From: BarminaA Date: Fri, 2 Apr 2021 16:10:46 +0400 Subject: [PATCH] #18- Add CommitAuthorStatistic --- .../controller/StatisticController.java | 21 ++++++++++++------- .../model/CommitAuthorStatistic.java | 20 ++++++++++++++++++ .../repository/CommitRepository.java | 5 +++++ src/main/resources/templates/statistic.html | 8 ++++--- 4 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 src/main/java/ru/ulstu/extractor/model/CommitAuthorStatistic.java diff --git a/src/main/java/ru/ulstu/extractor/controller/StatisticController.java b/src/main/java/ru/ulstu/extractor/controller/StatisticController.java index d4cdaa1..06cbd9f 100644 --- a/src/main/java/ru/ulstu/extractor/controller/StatisticController.java +++ b/src/main/java/ru/ulstu/extractor/controller/StatisticController.java @@ -5,16 +5,18 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.extractor.repository.BranchRepository; +import ru.ulstu.extractor.repository.CommitRepository; import ru.ulstu.extractor.repository.RepositoryRepository; +import java.util.List; +import java.util.stream.Collectors; + @Controller public class StatisticController { - private final RepositoryRepository repositoryRepository; - private final BranchRepository branchRepository; + private final CommitRepository commitRepository; - public StatisticController(RepositoryRepository repositoryRepository, BranchRepository branchRepository) { - this.repositoryRepository = repositoryRepository; - this.branchRepository = branchRepository; + public StatisticController(CommitRepository commitRepository) { + this.commitRepository = commitRepository; } @GetMapping("/statistic") @@ -27,9 +29,12 @@ public class StatisticController { model.addAttribute("continents", continents); - model.addAttribute("array", new int[]{1,2,3}); - String[][] data = new String[][] {{"Газ", "Объём"}, {"Dsdfsdf", "10"}}; - model.addAttribute("data", data); + model.addAttribute("array", new int[]{1, 2, 3}); + List listArr = commitRepository.getCommitAuthorStatistic().stream() + .map(stat -> new String[]{stat.getAuthor(), stat.getCountCommit().toString()}) + .collect(Collectors.toList()); + String[][] commitAuthorData = listArr.toArray(String[][]::new); + model.addAttribute("commitAuthorData", commitAuthorData); return "statistic"; } } diff --git a/src/main/java/ru/ulstu/extractor/model/CommitAuthorStatistic.java b/src/main/java/ru/ulstu/extractor/model/CommitAuthorStatistic.java new file mode 100644 index 0000000..5587cb2 --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/model/CommitAuthorStatistic.java @@ -0,0 +1,20 @@ +package ru.ulstu.extractor.model; + +public class CommitAuthorStatistic { + private String author; + private Long countCommit; + + public CommitAuthorStatistic(String author, Long countCommit) { + this.author = author; + this.countCommit = countCommit; + } + + public String getAuthor() { + return author; + } + + public Long getCountCommit() { + return countCommit; + } + +} diff --git a/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java b/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java index 3c32439..b8f5659 100644 --- a/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java +++ b/src/main/java/ru/ulstu/extractor/repository/CommitRepository.java @@ -6,9 +6,14 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import ru.ulstu.extractor.model.Commit; +import ru.ulstu.extractor.model.CommitAuthorStatistic; 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 new ru.ulstu.extractor.model.CommitAuthorStatistic(c.author.name, COUNT(c)) FROM Commit c GROUP by c.author.name") + List getCommitAuthorStatistic(); } diff --git a/src/main/resources/templates/statistic.html b/src/main/resources/templates/statistic.html index 6eadddf..a15b6df 100644 --- a/src/main/resources/templates/statistic.html +++ b/src/main/resources/templates/statistic.html @@ -26,9 +26,11 @@ google.setOnLoadCallback(drawChart); function drawChart() { - - var arr = [[${data}]]; - var data = google.visualization.arrayToDataTable(arr); + var arr = [[${commitAuthorData}]]; + var newArray = [ + ['Author','Commit'] + ].concat(arr); + var data = google.visualization.arrayToDataTable(newArray); var options = { title: 'Состав воздуха', is3D: true,