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 487479c..54b66d6 100644 --- a/src/main/java/ru/ulstu/extractor/mvc/GitExtractorController.java +++ b/src/main/java/ru/ulstu/extractor/mvc/GitExtractorController.java @@ -5,22 +5,57 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; -import ru.ulstu.extractor.mvc.model.EmailForm; +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 { - @GetMapping("/") - public String indexForm(Model model) { - model.addAttribute("emailForm", new EmailForm()); - return "index"; + 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) { + model.addAttribute("repoForm", new RepoForm()); + return "newRepo"; + } + + @GetMapping("/filtering") + public String filter(Model model) { + model.addAttribute("filterForm", new FilterForm()); + return "filtering"; + } + + @PostMapping("/sendRepo") + public String sendRepo(@ModelAttribute RepoForm repoForm, Model model) { + 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"; } - @PostMapping("/sendEmail") - public String sendEmail(@ModelAttribute EmailForm emailForm, Model model) { - if (emailForm.getTo().isEmpty()) { - model.addAttribute("error", "'Кому' не должно быть пустым"); - return "index"; + @PostMapping("/sendFilter") + public String sendFilter(@ModelAttribute FilterForm filterForm, Model model) { + if (filterForm.getFilter() == null || filterForm.getFilter().isEmpty()) { + model.addAttribute("error", "'Строка' не должно быть пустым"); + return "filtering"; } - return "result"; + 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/EmailForm.java b/src/main/java/ru/ulstu/extractor/mvc/model/EmailForm.java deleted file mode 100644 index 59765ee..0000000 --- a/src/main/java/ru/ulstu/extractor/mvc/model/EmailForm.java +++ /dev/null @@ -1,40 +0,0 @@ -package ru.ulstu.extractor.mvc.model; - -public class EmailForm { - private String subject; - private String to; - private String message; - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } - - public String getTo() { - return to; - } - - public void setTo(String to) { - this.to = to; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - @Override - public String toString() { - return "EmailForm{" + - "subject='" + subject + '\'' + - ", to='" + to + '\'' + - ", message='" + message + '\'' + - '}'; - } -} diff --git a/src/main/java/ru/ulstu/extractor/mvc/model/FilterForm.java b/src/main/java/ru/ulstu/extractor/mvc/model/FilterForm.java new file mode 100644 index 0000000..16e52b8 --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/mvc/model/FilterForm.java @@ -0,0 +1,36 @@ +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; + } + + public void setFilter(String filter) { + this.filter = filter; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @Override + public String toString() { + return "FilterForm{" + + "subject='" + filter + + '}'; + } +} diff --git a/src/main/java/ru/ulstu/extractor/mvc/model/RepoForm.java b/src/main/java/ru/ulstu/extractor/mvc/model/RepoForm.java new file mode 100644 index 0000000..7f5766f --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/mvc/model/RepoForm.java @@ -0,0 +1,20 @@ +package ru.ulstu.extractor.mvc.model; + +public class RepoForm { + private String repo; + + public String getRepo() { + return repo; + } + + public void setRepo(String repo) { + this.repo = repo; + } + + @Override + public String toString() { + return "RepoForm{" + + "subject='" + repo + + '}'; + } +} 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/error.html b/src/main/resources/templates/error.html index bb0ca4a..0017912 100644 --- a/src/main/resources/templates/error.html +++ b/src/main/resources/templates/error.html @@ -32,14 +32,16 @@

-
-
${url}
-
${exception.message}
-
    -
  • ${ste}
  • -
-
+

+

${url}
+

+

${exception.message}
+

+
    +
  • ${ste}
  • +
+ \ No newline at end of file diff --git a/src/main/resources/templates/filtering.html b/src/main/resources/templates/filtering.html new file mode 100644 index 0000000..7490628 --- /dev/null +++ b/src/main/resources/templates/filtering.html @@ -0,0 +1,53 @@ + + + + Простая обработка формы на Spring MVC + + +
+ +
+

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

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

Строки:
+ + +

+

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

+ +

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

+

Ваш git репозиторий:
+ +

+

+ +

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

Результат обработки формы

- - - - - - - - - - - - - -
Тема:

Кому:

Сообщение:

-Отправить другое сообщение - - diff --git a/src/main/resources/templates/resultRepo.html b/src/main/resources/templates/resultRepo.html new file mode 100644 index 0000000..c206f08 --- /dev/null +++ b/src/main/resources/templates/resultRepo.html @@ -0,0 +1,18 @@ + + + + Простая обработка формы на Spring MVC + + +
+ +
+

Данные репозитория:

+

+ +

+ +
+