From 9423af3863b8c02a63a55bc5522e78b067ec41b5 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 31 Jan 2023 17:33:05 +0400 Subject: [PATCH] #80 -- partially fix inference --- .../ulstu/extractor/branch/model/Branch.java | 2 +- .../branch/service/BranchService.java | 7 +++++- .../ulstu/extractor/commit/model/Commit.java | 2 +- .../commit/repository/CommitRepository.java | 2 +- .../commit/service/CommitService.java | 2 +- .../ru/ulstu/extractor/core/BaseEntity.java | 10 ++++---- .../java/ru/ulstu/extractor/core/Route.java | 1 + .../controler/GitFilteringController.java | 2 +- .../controler/GitIndexingController.java | 25 ++++++++++++++++++- .../controler/RepoController.java | 2 +- .../gitrepository/model/FilterForm.java | 2 +- .../service/FilteringService.java | 2 +- .../service/GitRepositoryService.java | 2 +- .../gitrepository/service/IndexService.java | 7 +++++- .../ulstu/extractor/ts/creator/AuthorTS.java | 5 ++-- .../ulstu/extractor/ts/creator/EntityTS.java | 5 ++-- .../ru/ulstu/extractor/ts/creator/FileTS.java | 2 +- .../ts/service/TimeSeriesService.java | 5 ++-- .../resources/templates/listBranches.html | 4 +++ 19 files changed, 64 insertions(+), 25 deletions(-) diff --git a/src/main/java/ru/ulstu/extractor/branch/model/Branch.java b/src/main/java/ru/ulstu/extractor/branch/model/Branch.java index 12a9f01..046b8c4 100644 --- a/src/main/java/ru/ulstu/extractor/branch/model/Branch.java +++ b/src/main/java/ru/ulstu/extractor/branch/model/Branch.java @@ -7,9 +7,9 @@ package ru.ulstu.extractor.branch.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.core.BaseEntity; import ru.ulstu.extractor.gitrepository.model.GitRepository; -import ru.ulstu.extractor.model.Commit; import javax.persistence.CascadeType; import javax.persistence.Entity; diff --git a/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java b/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java index ebb51aa..ce37a85 100644 --- a/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java +++ b/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java @@ -11,12 +11,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.extractor.branch.model.Branch; import ru.ulstu.extractor.branch.repository.BranchRepository; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.core.BaseEntity; import ru.ulstu.extractor.gitrepository.model.GitRepository; -import ru.ulstu.extractor.model.Commit; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Service @@ -55,6 +56,10 @@ public class BranchService { return branchRepository.findByGitRepositoryAndName(gitRepository, branchName); } + public Optional findByBranchId(Integer branchId) { + return branchRepository.findById(branchId); + } + public List findAll() { return branchRepository.findAll(); } diff --git a/src/main/java/ru/ulstu/extractor/commit/model/Commit.java b/src/main/java/ru/ulstu/extractor/commit/model/Commit.java index 9f8f109..5906a3f 100644 --- a/src/main/java/ru/ulstu/extractor/commit/model/Commit.java +++ b/src/main/java/ru/ulstu/extractor/commit/model/Commit.java @@ -3,7 +3,7 @@ * You may use, distribute and modify this code, please write to: romanov73@gmail.com. */ -package ru.ulstu.extractor.model; +package ru.ulstu.extractor.commit.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; diff --git a/src/main/java/ru/ulstu/extractor/commit/repository/CommitRepository.java b/src/main/java/ru/ulstu/extractor/commit/repository/CommitRepository.java index d0558d8..70f9888 100644 --- a/src/main/java/ru/ulstu/extractor/commit/repository/CommitRepository.java +++ b/src/main/java/ru/ulstu/extractor/commit/repository/CommitRepository.java @@ -10,12 +10,12 @@ import org.springframework.data.domain.Pageable; 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.commit.model.Commit; import ru.ulstu.extractor.commit.model.CommitAuthorStatistic; import ru.ulstu.extractor.commit.model.CommitEntityStatistic; import ru.ulstu.extractor.commit.model.CommitTimeStatistic; import ru.ulstu.extractor.commit.model.CommitUrlStatistic; import ru.ulstu.extractor.gitrepository.model.GitRepository; -import ru.ulstu.extractor.model.Commit; import java.util.List; diff --git a/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java b/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java index 050437a..df8d389 100644 --- a/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java +++ b/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java @@ -8,8 +8,8 @@ package ru.ulstu.extractor.commit.service; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import ru.ulstu.extractor.author.service.AuthorService; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.repository.CommitRepository; -import ru.ulstu.extractor.model.Commit; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/ru/ulstu/extractor/core/BaseEntity.java b/src/main/java/ru/ulstu/extractor/core/BaseEntity.java index 43690f1..a87fc94 100644 --- a/src/main/java/ru/ulstu/extractor/core/BaseEntity.java +++ b/src/main/java/ru/ulstu/extractor/core/BaseEntity.java @@ -8,7 +8,7 @@ import javax.persistence.Version; import java.io.Serializable; @MappedSuperclass -public abstract class BaseEntity implements Serializable, Comparable { +public abstract class BaseEntity implements Serializable, Comparable { @Id @GeneratedValue(strategy = GenerationType.TABLE) private Integer id; @@ -49,10 +49,10 @@ public abstract class BaseEntity implements Serializable, Comparable { } BaseEntity other = (BaseEntity) obj; if (id == null) { - if (other.id != null) { + if (other.getId() != null) { return false; } - } else if (!id.equals(other.id)) { + } else if (!id.equals(other.getId())) { return false; } return true; @@ -75,8 +75,8 @@ public abstract class BaseEntity implements Serializable, Comparable { } @Override - public int compareTo(Object o) { - return id != null ? id.compareTo(((BaseEntity) o).getId()) : -1; + public int compareTo(BaseEntity o) { + return id != null ? id.compareTo(o.getId()) : -1; } public void reset() { diff --git a/src/main/java/ru/ulstu/extractor/core/Route.java b/src/main/java/ru/ulstu/extractor/core/Route.java index 8f9b967..614bd69 100644 --- a/src/main/java/ru/ulstu/extractor/core/Route.java +++ b/src/main/java/ru/ulstu/extractor/core/Route.java @@ -13,6 +13,7 @@ public class Route { public static final String DELETE_INDEXED_REPOSITORY = "deleteRepository"; public static final String LIST_REPOSITORY_BRANCHES = "listBranches"; public static final String DELETE_BRANCH = "deleteBranch"; + public static final String REINDEX_BRANCH = "reindexBranch"; public static final String INDEXING_NEW_REPOSITORY = "indexNewRepository"; public static final String FILTER_COMMITS = "filterCommits"; public static final String STATISTIC = "statistic"; diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitFilteringController.java b/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitFilteringController.java index 25f9ee7..f083161 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitFilteringController.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitFilteringController.java @@ -11,10 +11,10 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.core.OffsetablePageRequest; import ru.ulstu.extractor.gitrepository.model.FilterForm; import ru.ulstu.extractor.gitrepository.service.FilteringService; -import ru.ulstu.extractor.model.Commit; import springfox.documentation.annotations.ApiIgnore; import java.util.List; diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitIndexingController.java b/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitIndexingController.java index e610db7..3343754 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitIndexingController.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/controler/GitIndexingController.java @@ -14,8 +14,10 @@ import org.springframework.web.bind.annotation.GetMapping; 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; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import ru.ulstu.extractor.branch.model.Branch; +import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.gitrepository.model.FilterForm; import ru.ulstu.extractor.gitrepository.model.RepoForm; import ru.ulstu.extractor.gitrepository.service.GitRepositoryService; @@ -27,6 +29,7 @@ import java.util.List; import static ru.ulstu.extractor.core.Route.FILTER_COMMITS; import static ru.ulstu.extractor.core.Route.INDEXING_NEW_REPOSITORY; +import static ru.ulstu.extractor.core.Route.REINDEX_BRANCH; @Controller @ApiIgnore @@ -34,11 +37,14 @@ public class GitIndexingController { private final static Logger LOG = LoggerFactory.getLogger(GitIndexingController.class); private final GitRepositoryService gitRepositoryService; private final IndexService indexService; + private final BranchService branchService; public GitIndexingController(GitRepositoryService gitRepositoryService, - IndexService indexService) { + IndexService indexService, + BranchService branchService) { this.gitRepositoryService = gitRepositoryService; this.indexService = indexService; + this.branchService = branchService; } @GetMapping(INDEXING_NEW_REPOSITORY) @@ -76,4 +82,21 @@ public class GitIndexingController { return "redirect:/" + FILTER_COMMITS; } } + + @GetMapping(REINDEX_BRANCH) + public String reindexBranch(Model model, + RedirectAttributes redirectAttributes, + @RequestParam Integer branchId) { + try { + indexService.index(branchId); + } catch (IOException | GitAPIException ex) { + ex.printStackTrace(); + model.addAttribute("error", ex.getMessage()); + return INDEXING_NEW_REPOSITORY; + } + Branch branch = branchService.findByBranchId(branchId).orElseThrow(() -> new RuntimeException("Ветка не найдена по id")); + redirectAttributes.addAttribute("repositoryUrl", branch.getGitRepository().getUrl()); + redirectAttributes.addAttribute("branchName", branch.getName()); + return "redirect:/" + FILTER_COMMITS; + } } diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/controler/RepoController.java b/src/main/java/ru/ulstu/extractor/gitrepository/controler/RepoController.java index bc14f79..8bd5299 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/controler/RepoController.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/controler/RepoController.java @@ -12,9 +12,9 @@ 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.commit.model.Commit; import ru.ulstu.extractor.gitrepository.service.GitRepositoryService; import ru.ulstu.extractor.gitrepository.service.IndexService; -import ru.ulstu.extractor.model.Commit; import ru.ulstu.extractor.util.HttpUtils; import javax.servlet.http.HttpServletRequest; diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/model/FilterForm.java b/src/main/java/ru/ulstu/extractor/gitrepository/model/FilterForm.java index d25271f..f883c82 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/model/FilterForm.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/model/FilterForm.java @@ -6,7 +6,7 @@ package ru.ulstu.extractor.gitrepository.model; import org.springframework.data.domain.Page; -import ru.ulstu.extractor.model.Commit; +import ru.ulstu.extractor.commit.model.Commit; public class FilterForm { private String filter; diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/service/FilteringService.java b/src/main/java/ru/ulstu/extractor/gitrepository/service/FilteringService.java index ccc29de..d3b2a23 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/service/FilteringService.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/service/FilteringService.java @@ -10,9 +10,9 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import ru.ulstu.extractor.author.repository.AuthorRepository; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.repository.CommitRepository; import ru.ulstu.extractor.gitrepository.repository.GitRepositoryRepository; -import ru.ulstu.extractor.model.Commit; import java.util.List; import java.util.Map; diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/service/GitRepositoryService.java b/src/main/java/ru/ulstu/extractor/gitrepository/service/GitRepositoryService.java index e986260..2802edf 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/service/GitRepositoryService.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/service/GitRepositoryService.java @@ -20,6 +20,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import ru.ulstu.extractor.author.model.Author; import ru.ulstu.extractor.branch.model.Branch; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.gitrepository.model.FileChange; import ru.ulstu.extractor.gitrepository.model.GitRepository; import ru.ulstu.extractor.gitrepository.model.LineChange; @@ -28,7 +29,6 @@ import ru.ulstu.extractor.heuristic.model.BusinessLogicUnit; import ru.ulstu.extractor.heuristic.model.EntityUnit; import ru.ulstu.extractor.heuristic.model.ResourceUnit; import ru.ulstu.extractor.heuristic.service.StructuralUnitService; -import ru.ulstu.extractor.model.Commit; import java.io.ByteArrayOutputStream; import java.io.File; diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java b/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java index 5ceb162..b510338 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java @@ -12,9 +12,9 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.ulstu.extractor.branch.model.Branch; import ru.ulstu.extractor.branch.service.BranchService; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.gitrepository.model.GitRepository; import ru.ulstu.extractor.gitrepository.repository.GitRepositoryRepository; -import ru.ulstu.extractor.model.Commit; import ru.ulstu.extractor.ts.creator.AbstractTimeSeriesCreator; import java.io.IOException; @@ -40,6 +40,11 @@ public class IndexService { this.timeSeriesCreators = timeSeriesCreators; } + public void index(@NotNull Integer branchId) throws GitAPIException, IOException { + Branch branch = branchService.findByBranchId(branchId).orElseThrow(() -> new RuntimeException("Ветка репозитория не найдена по id")); + index(branch.getGitRepository().getUrl(), branch.getName()); + } + public void index(@NotNull String repositoryUrl, @NotNull String branchName) throws GitAPIException, IOException { GitRepository gitRepository = gitRepositoryRepository.findByUrl(repositoryUrl); if (gitRepository == null) { diff --git a/src/main/java/ru/ulstu/extractor/ts/creator/AuthorTS.java b/src/main/java/ru/ulstu/extractor/ts/creator/AuthorTS.java index e4fb786..f2fd7cf 100644 --- a/src/main/java/ru/ulstu/extractor/ts/creator/AuthorTS.java +++ b/src/main/java/ru/ulstu/extractor/ts/creator/AuthorTS.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Component; import ru.ulstu.extractor.author.model.Author; import ru.ulstu.extractor.author.service.AuthorService; import ru.ulstu.extractor.branch.service.BranchService; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.gitrepository.model.GitRepository; import ru.ulstu.extractor.gitrepository.service.GitRepositoryService; @@ -45,7 +46,7 @@ public class AuthorTS extends AbstractTimeSeriesCreator { List timeSeriesResult = new ArrayList<>(); List authors = authorService.findAll(); GitRepository gitRepository = gitRepositoryService.findById(repositoryId); - List commits = new ArrayList<>(commitService.findByRepositoryIdAndName(repositoryId, branchName)); + List commits = new ArrayList<>(commitService.findByRepositoryIdAndName(repositoryId, branchName)); for (Author author : authors) { TimeSeries timeSeries = new TimeSeries( String.format("%s %s %s %s", @@ -55,7 +56,7 @@ public class AuthorTS extends AbstractTimeSeriesCreator { getTimeSeriesType().getDescription()), branchService.findByRepositoryAndName(gitRepository, branchName), getTimeSeriesType()); - for (ru.ulstu.extractor.model.Commit commit : commits) { + for (Commit commit : commits) { if (commit.getAuthor().equals(author)) { timeSeries.getValues().add(new TimeSeriesValue(commit.getDate(), 1.0)); } diff --git a/src/main/java/ru/ulstu/extractor/ts/creator/EntityTS.java b/src/main/java/ru/ulstu/extractor/ts/creator/EntityTS.java index eee1017..b20dabd 100644 --- a/src/main/java/ru/ulstu/extractor/ts/creator/EntityTS.java +++ b/src/main/java/ru/ulstu/extractor/ts/creator/EntityTS.java @@ -2,6 +2,7 @@ package ru.ulstu.extractor.ts.creator; import org.springframework.stereotype.Component; import ru.ulstu.extractor.branch.service.BranchService; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.gitrepository.model.FileChange; import ru.ulstu.extractor.gitrepository.model.GitRepository; @@ -61,9 +62,9 @@ public class EntityTS extends AbstractTimeSeriesCreator { } public Double findEntity(Integer repositoryId, String branchName) { - List commits = new ArrayList<>(commitService.findByRepositoryIdAndName(repositoryId, branchName)); + List commits = new ArrayList<>(commitService.findByRepositoryIdAndName(repositoryId, branchName)); double value = 0; - for (ru.ulstu.extractor.model.Commit commit : commits) { + for (Commit commit : commits) { for (FileChange fileChange : commit.getFileChanges()) { if ((fileChange.getContainsEntity() != null) && (fileChange.getContainsEntity())) { value = value + 1; diff --git a/src/main/java/ru/ulstu/extractor/ts/creator/FileTS.java b/src/main/java/ru/ulstu/extractor/ts/creator/FileTS.java index 7ab007d..5d5f21a 100644 --- a/src/main/java/ru/ulstu/extractor/ts/creator/FileTS.java +++ b/src/main/java/ru/ulstu/extractor/ts/creator/FileTS.java @@ -2,11 +2,11 @@ package ru.ulstu.extractor.ts.creator; import org.springframework.stereotype.Component; import ru.ulstu.extractor.branch.service.BranchService; +import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.gitrepository.model.FileChange; import ru.ulstu.extractor.gitrepository.model.GitRepository; import ru.ulstu.extractor.gitrepository.service.GitRepositoryService; -import ru.ulstu.extractor.model.Commit; import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesValue; diff --git a/src/main/java/ru/ulstu/extractor/ts/service/TimeSeriesService.java b/src/main/java/ru/ulstu/extractor/ts/service/TimeSeriesService.java index 2faf0bf..43d385e 100644 --- a/src/main/java/ru/ulstu/extractor/ts/service/TimeSeriesService.java +++ b/src/main/java/ru/ulstu/extractor/ts/service/TimeSeriesService.java @@ -12,7 +12,6 @@ import org.springframework.stereotype.Service; import ru.ulstu.extractor.branch.model.Branch; import ru.ulstu.extractor.http.HttpService; import ru.ulstu.extractor.http.JsonTimeSeries; -import ru.ulstu.extractor.http.SmoothingTimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesValue; @@ -115,9 +114,9 @@ public class TimeSeriesService { } public Double getLastTimeSeriesTendency(TimeSeries ts) { - JSONObject response = httpService.post(TIME_SERIES_TENDENCY_URL, new JSONObject(new SmoothingTimeSeries(ts))); + //JSONObject response = httpService.post(TIME_SERIES_TENDENCY_URL, new JSONObject(new SmoothingTimeSeries(ts))); LOG.debug("Успешно отправлен на сервис сглаживания"); - response.get("timeSeries"); + //response.get("timeSeries"); return 0.0; } } diff --git a/src/main/resources/templates/listBranches.html b/src/main/resources/templates/listBranches.html index 596a990..b8e32f8 100644 --- a/src/main/resources/templates/listBranches.html +++ b/src/main/resources/templates/listBranches.html @@ -22,6 +22,10 @@ th:text="${branch.name}"/> + + +