diff --git a/src/main/java/ru/ulstu/extractor/RepoController.java b/src/main/java/ru/ulstu/extractor/controller/RepoController.java similarity index 83% rename from src/main/java/ru/ulstu/extractor/RepoController.java rename to src/main/java/ru/ulstu/extractor/controller/RepoController.java index e1aa4fc..2d30d9a 100644 --- a/src/main/java/ru/ulstu/extractor/RepoController.java +++ b/src/main/java/ru/ulstu/extractor/controller/RepoController.java @@ -1,15 +1,17 @@ -package ru.ulstu.extractor; +package ru.ulstu.extractor.controller; import org.eclipse.jgit.api.errors.GitAPIException; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.extractor.model.Commit; +import ru.ulstu.extractor.service.GitRepositoryService; import java.io.IOException; import java.util.List; -import static ru.ulstu.extractor.RepoController.URL; +import static ru.ulstu.extractor.controller.RepoController.URL; @RestController @RequestMapping(URL) diff --git a/src/main/java/ru/ulstu/extractor/db/CommitRepository.java b/src/main/java/ru/ulstu/extractor/db/CommitRepository.java index 71b100d..86a924e 100644 --- a/src/main/java/ru/ulstu/extractor/db/CommitRepository.java +++ b/src/main/java/ru/ulstu/extractor/db/CommitRepository.java @@ -3,7 +3,7 @@ package ru.ulstu.extractor.db; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; -import ru.ulstu.extractor.Commit; +import ru.ulstu.extractor.model.Commit; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/ru/ulstu/extractor/Changes.java b/src/main/java/ru/ulstu/extractor/model/Changes.java similarity index 91% rename from src/main/java/ru/ulstu/extractor/Changes.java rename to src/main/java/ru/ulstu/extractor/model/Changes.java index 2e32603..101dc0b 100644 --- a/src/main/java/ru/ulstu/extractor/Changes.java +++ b/src/main/java/ru/ulstu/extractor/model/Changes.java @@ -1,4 +1,4 @@ -package ru.ulstu.extractor; +package ru.ulstu.extractor.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ru/ulstu/extractor/Commit.java b/src/main/java/ru/ulstu/extractor/model/Commit.java similarity index 95% rename from src/main/java/ru/ulstu/extractor/Commit.java rename to src/main/java/ru/ulstu/extractor/model/Commit.java index 44f1357..9e8e6f4 100644 --- a/src/main/java/ru/ulstu/extractor/Commit.java +++ b/src/main/java/ru/ulstu/extractor/model/Commit.java @@ -1,4 +1,4 @@ -package ru.ulstu.extractor; +package ru.ulstu.extractor.model; import java.util.Date; diff --git a/src/main/java/ru/ulstu/extractor/FileChange.java b/src/main/java/ru/ulstu/extractor/model/FileChange.java similarity index 96% rename from src/main/java/ru/ulstu/extractor/FileChange.java rename to src/main/java/ru/ulstu/extractor/model/FileChange.java index beb2384..fb0ec6b 100644 --- a/src/main/java/ru/ulstu/extractor/FileChange.java +++ b/src/main/java/ru/ulstu/extractor/model/FileChange.java @@ -1,4 +1,4 @@ -package ru.ulstu.extractor; +package ru.ulstu.extractor.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ru/ulstu/extractor/LineChange.java b/src/main/java/ru/ulstu/extractor/model/LineChange.java similarity index 96% rename from src/main/java/ru/ulstu/extractor/LineChange.java rename to src/main/java/ru/ulstu/extractor/model/LineChange.java index 2d3311a..7f1bab3 100644 --- a/src/main/java/ru/ulstu/extractor/LineChange.java +++ b/src/main/java/ru/ulstu/extractor/model/LineChange.java @@ -1,4 +1,4 @@ -package ru.ulstu.extractor; +package ru.ulstu.extractor.model; public class LineChange { private boolean added; diff --git a/src/main/java/ru/ulstu/extractor/NewClass.java b/src/main/java/ru/ulstu/extractor/model/NewClass.java similarity index 98% rename from src/main/java/ru/ulstu/extractor/NewClass.java rename to src/main/java/ru/ulstu/extractor/model/NewClass.java index 6c37ffb..e363be7 100644 --- a/src/main/java/ru/ulstu/extractor/NewClass.java +++ b/src/main/java/ru/ulstu/extractor/model/NewClass.java @@ -1,4 +1,4 @@ -package ru.ulstu.extractor; +package ru.ulstu.extractor.model; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.diff.DiffFormatter; diff --git a/src/main/java/ru/ulstu/extractor/mvc/GitExtractorController.java b/src/main/java/ru/ulstu/extractor/mvc/GitExtractorController.java index 4b46dae..54b66d6 100644 --- a/src/main/java/ru/ulstu/extractor/mvc/GitExtractorController.java +++ b/src/main/java/ru/ulstu/extractor/mvc/GitExtractorController.java @@ -7,9 +7,19 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import ru.ulstu.extractor.mvc.model.FilterForm; import ru.ulstu.extractor.mvc.model.RepoForm; +import ru.ulstu.extractor.service.FilteringService; +import ru.ulstu.extractor.service.GitRepositoryService; @Controller public class GitExtractorController { + private final FilteringService filteringService; + private final GitRepositoryService gitRepositoryService; + + public GitExtractorController(FilteringService filteringService, + GitRepositoryService gitRepositoryService) { + this.filteringService = filteringService; + this.gitRepositoryService = gitRepositoryService; + } @GetMapping("/newRepo") public String indexNewRepo(Model model) { @@ -25,11 +35,17 @@ public class GitExtractorController { @PostMapping("/sendRepo") public String sendRepo(@ModelAttribute RepoForm repoForm, Model model) { - model.addAttribute("filterForm", new FilterForm()); if (repoForm.getRepo() == null || repoForm.getRepo().isEmpty()) { model.addAttribute("error", "'Git' не должно быть пустым"); return "newRepo"; } + model.addAttribute("filterForm", new FilterForm(repoForm.getRepo())); + try { + gitRepositoryService.cloneOrUpdateRepo(repoForm.getRepo()); + } catch (Exception ex) { + model.addAttribute("error", ex.getMessage()); + return "newRepo"; + } return "filtering"; } @@ -39,6 +55,7 @@ public class GitExtractorController { model.addAttribute("error", "'Строка' не должно быть пустым"); return "filtering"; } + model.addAttribute("commits", filteringService.getCommits(filterForm.getFilter(), filterForm.getFilter())); return "resultRepo"; } } diff --git a/src/main/java/ru/ulstu/extractor/mvc/MvcConfiguration.java b/src/main/java/ru/ulstu/extractor/mvc/MvcConfiguration.java index 1b55b43..c25a506 100644 --- a/src/main/java/ru/ulstu/extractor/mvc/MvcConfiguration.java +++ b/src/main/java/ru/ulstu/extractor/mvc/MvcConfiguration.java @@ -10,7 +10,7 @@ public class MvcConfiguration implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/{articlename:\\w+}"); - registry.addRedirectViewController("/", "/index"); + registry.addRedirectViewController("/", "/newRepo"); registry.addRedirectViewController("/default", "/home"); } diff --git a/src/main/java/ru/ulstu/extractor/mvc/model/FilterForm.java b/src/main/java/ru/ulstu/extractor/mvc/model/FilterForm.java index 9a3e8d0..16e52b8 100644 --- a/src/main/java/ru/ulstu/extractor/mvc/model/FilterForm.java +++ b/src/main/java/ru/ulstu/extractor/mvc/model/FilterForm.java @@ -2,6 +2,14 @@ package ru.ulstu.extractor.mvc.model; public class FilterForm { private String filter; + private String url; + + public FilterForm() { + } + + public FilterForm(String url) { + this.url = url; + } public String getFilter() { return filter; @@ -11,6 +19,14 @@ public class FilterForm { this.filter = filter; } + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + @Override public String toString() { return "FilterForm{" + diff --git a/src/main/java/ru/ulstu/extractor/service/FilteringService.java b/src/main/java/ru/ulstu/extractor/service/FilteringService.java new file mode 100644 index 0000000..254437d --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/service/FilteringService.java @@ -0,0 +1,32 @@ +package ru.ulstu.extractor.service; + +import org.springframework.stereotype.Service; +import ru.ulstu.extractor.model.Commit; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class FilteringService { + + private final GitRepositoryService gitRepositoryService; + + public FilteringService(GitRepositoryService gitRepositoryService) { + this.gitRepositoryService = gitRepositoryService; + } + + public List getCommits(String urlRepo) { + return getCommits(urlRepo, null); + } + + public List getCommits(String urlRepo, String filterCommitMessage) { + if (filterCommitMessage != null) { + return getCommits(urlRepo) + .stream() + .filter(commit -> commit.getMessage().contains(filterCommitMessage)) + .collect(Collectors.toList()); + } else { + return getCommits(urlRepo); + } + } +} diff --git a/src/main/java/ru/ulstu/extractor/GitRepositoryService.java b/src/main/java/ru/ulstu/extractor/service/GitRepositoryService.java similarity index 97% rename from src/main/java/ru/ulstu/extractor/GitRepositoryService.java rename to src/main/java/ru/ulstu/extractor/service/GitRepositoryService.java index 29d67a1..1102afa 100644 --- a/src/main/java/ru/ulstu/extractor/GitRepositoryService.java +++ b/src/main/java/ru/ulstu/extractor/service/GitRepositoryService.java @@ -1,4 +1,4 @@ -package ru.ulstu.extractor; +package ru.ulstu.extractor.service; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; @@ -8,6 +8,10 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import ru.ulstu.extractor.model.Changes; +import ru.ulstu.extractor.model.Commit; +import ru.ulstu.extractor.model.FileChange; +import ru.ulstu.extractor.model.LineChange; import java.io.ByteArrayOutputStream; import java.io.File; diff --git a/src/main/resources/templates/filtering.html b/src/main/resources/templates/filtering.html index c6f7217..7490628 100644 --- a/src/main/resources/templates/filtering.html +++ b/src/main/resources/templates/filtering.html @@ -27,8 +27,22 @@

Строки:
+

+ + + + + + + + + + + +
AuthorDateCommit
Onions2.41yes
+

diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html new file mode 100644 index 0000000..939171f --- /dev/null +++ b/src/main/resources/templates/index.html @@ -0,0 +1,32 @@ + + + + Простая обработка формы на Spring MVC + + +
+

Форма

+
+

+ + + + + + + + + + + +
Тема:
Кому:
Сообщение: