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
+
+