WIP: страницы для правил #62

Closed
Ghost wants to merge 132 commits from master into 61-rules-pages
15 changed files with 98 additions and 253 deletions
Showing only changes of commit aeab50cfb8 - Show all commits

View File

@ -10,4 +10,8 @@ public interface GitApi {
Integer getOpenIssuesCount(Branch branch); Integer getOpenIssuesCount(Branch branch);
String getFormattedUrl(String gitRepositoryUrl, String template); String getFormattedUrl(String gitRepositoryUrl, String template);
Integer getAuthorsCompletedIssues(Branch branch);
Integer getAuthorsCount(Branch branch);
} }

View File

@ -10,6 +10,8 @@ public class GitAtheneApi implements GitApi {
private static final String BRANCHES_COUNT_URL = "%s/api/v1/repos/%s/%s/branches"; private static final String BRANCHES_COUNT_URL = "%s/api/v1/repos/%s/%s/branches";
private static final String STARS_COUNT_URL = "%s/api/v1/repos/%s/%s"; private static final String STARS_COUNT_URL = "%s/api/v1/repos/%s/%s";
private static final String OPEN_ISSUES_URL = "%s/api/v1/repos/%s/%s/issues?state=open"; private static final String OPEN_ISSUES_URL = "%s/api/v1/repos/%s/%s/issues?state=open";
private static final String AUTHOR_COMPLETED_ISSUES_URL = "%s/api/v1/repos/%s/%s/issues?state=open";
private static final String AUTHORS_COUNT_URL = "%s/api/v1/repos/%s/%s/branches";
public GitAtheneApi(HttpService httpService) { public GitAtheneApi(HttpService httpService) {
this.httpService = httpService; this.httpService = httpService;
@ -42,4 +44,18 @@ public class GitAtheneApi implements GitApi {
String[] urlParts = gitRepositoryUrl.split("/"); String[] urlParts = gitRepositoryUrl.split("/");
return String.format(template, urlParts[0] + "/" + urlParts[1] + "/" + urlParts[2], urlParts[3], urlParts[4]); return String.format(template, urlParts[0] + "/" + urlParts[1] + "/" + urlParts[2], urlParts[3], urlParts[4]);
} }
@Override
public Integer getAuthorsCompletedIssues(Branch branch) {
return httpService
.get(getFormattedUrl(branch.getGitRepository().getUrl(), AUTHOR_COMPLETED_ISSUES_URL))
.length();
}
@Override
public Integer getAuthorsCount(Branch branch) {
return httpService
.get(getFormattedUrl(branch.getGitRepository().getUrl(), AUTHORS_COUNT_URL))
.length();
}
} }

View File

@ -79,7 +79,7 @@ public class IndexService {
commits = gitRepositoryService.getCommits(gitRepository.getUrl(), branch.getName(), commitsFrom, commitsTo, false); commits = gitRepositoryService.getCommits(gitRepository.getUrl(), branch.getName(), commitsFrom, commitsTo, false);
} }
final Branch branchForSave = branch; final Branch branchForSave = branch;
timeSeriesCreators.forEach(tsCreator -> tsCreator.addTimeSeries(gitRepository, branchForSave)); timeSeriesCreators.forEach(tsCreator -> tsCreator.addTimeSeries(branchForSave));
branchService.updateStatus(branch, IndexingStatus.FINISHED); branchService.updateStatus(branch, IndexingStatus.FINISHED);
LOG.debug("Complete indexing {} branch", branch.getName()); LOG.debug("Complete indexing {} branch", branch.getName());
} }

View File

@ -3,10 +3,10 @@ package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.author.model.Author; import ru.ulstu.extractor.author.model.Author;
import ru.ulstu.extractor.author.service.AuthorService; import ru.ulstu.extractor.author.service.AuthorService;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.model.Commit;
import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.commit.service.CommitService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.model.TimeSeriesValue; import ru.ulstu.extractor.ts.model.TimeSeriesValue;
@ -38,18 +38,20 @@ public class AuthorsCommitTS extends DBTimeSeriesCreator {
} }
@Override @Override
public List<TimeSeries> getTimeSeries(GitRepository gitRepository, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
List<TimeSeries> timeSeriesResult = new ArrayList<>(); List<TimeSeries> timeSeriesResult = new ArrayList<>();
List<Author> authors = authorService.findAll(); List<Author> authors = authorService.findAll();
List<Commit> commits = new ArrayList<>(commitService.findByRepositoryIdAndName(gitRepository.getId(), branchName)); List<Commit> commits = new ArrayList<>(commitService.findByRepositoryIdAndName(branch.getGitRepository().getId(),
branch.getName()));
for (Author author : authors) { for (Author author : authors) {
TimeSeries timeSeries = new TimeSeries( TimeSeries timeSeries = new TimeSeries(
String.format("%s %s %s %s", String.format("%s %s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
author.getName(), author.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(),
branch.getName()),
getTimeSeriesType()); getTimeSeriesType());
for (Commit commit : commits) { for (Commit commit : commits) {
if (commit.getAuthor().equals(author)) { if (commit.getAuthor().equals(author)) {

View File

@ -1,10 +1,8 @@
package ru.ulstu.extractor.ts.creator.scheduled; package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.gitrepository.service.GitRepositoryService;
import ru.ulstu.extractor.ts.creator.AbstractTimeSeriesCreator;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.service.TimeSeriesService; import ru.ulstu.extractor.ts.service.TimeSeriesService;
@ -14,30 +12,25 @@ import java.util.Collections;
import java.util.List; import java.util.List;
@Component @Component
public class ClassTS extends AbstractTimeSeriesCreator { public class ClassTS extends DBTimeSeriesCreator {
private final TimeSeriesService timeSeriesService; private final TimeSeriesService timeSeriesService;
private final BranchService branchService; private final BranchService branchService;
private final GitRepositoryService gitRepositoryService;
public ClassTS(TimeSeriesService timeSeriesService, public ClassTS(TimeSeriesService timeSeriesService,
BranchService branchService, BranchService branchService) {
GitRepositoryService gitRepositoryService) {
this.timeSeriesService = timeSeriesService; this.timeSeriesService = timeSeriesService;
this.branchService = branchService; this.branchService = branchService;
this.gitRepositoryService = gitRepositoryService;
} }
@Override @Override
public List<TimeSeries> getTimeSeries(Integer repositoryId, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
GitRepository gitRepository = gitRepositoryService.findById(repositoryId);
return Collections.singletonList( return Collections.singletonList(
new TimeSeries( new TimeSeries(
String.format("%s %s %s", String.format("%s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(), branch.getName()),
getTimeSeriesType(), getTimeSeriesType(),
Dummy.getDefaultTimeSeries())); Dummy.getDefaultTimeSeries()));
} }

View File

@ -1,9 +1,9 @@
package ru.ulstu.extractor.ts.creator.db; package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.commit.service.CommitService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.model.TimeSeriesValue; import ru.ulstu.extractor.ts.model.TimeSeriesValue;
@ -28,17 +28,19 @@ public class CommitsTS extends DBTimeSeriesCreator {
} }
@Override @Override
public List<TimeSeries> getTimeSeries(GitRepository gitRepository, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
//TODO: добавить постраничное чтение //TODO: добавить постраничное чтение
return Collections.singletonList( return Collections.singletonList(
new TimeSeries( new TimeSeries(
String.format("%s %s %s", String.format("%s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(),
branch.getName()),
getTimeSeriesType(), getTimeSeriesType(),
commitService.findByRepositoryIdAndName(gitRepository.getId(), branchName) commitService.findByRepositoryIdAndName(branch.getGitRepository().getId(),
branch.getName())
.stream() .stream()
.map(c -> new TimeSeriesValue(c.getDate(), 1.0)) .map(c -> new TimeSeriesValue(c.getDate(), 1.0))
.collect(Collectors.toList()))); .collect(Collectors.toList())));

View File

@ -1,7 +1,6 @@
package ru.ulstu.extractor.ts.creator.db; package ru.ulstu.extractor.ts.creator.db;
import ru.ulstu.extractor.branch.model.Branch; import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.ts.creator.AbstractTimeSeriesCreator; import ru.ulstu.extractor.ts.creator.AbstractTimeSeriesCreator;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesValue; import ru.ulstu.extractor.ts.model.TimeSeriesValue;
@ -15,21 +14,19 @@ public abstract class DBTimeSeriesCreator extends AbstractTimeSeriesCreator {
/** /**
* Извлечь список точек временных рядов * Извлечь список точек временных рядов
* *
* @param gitRepository * @param branch
* @param branchName
* @return * @return
*/ */
public abstract List<TimeSeries> getTimeSeries(GitRepository gitRepository, String branchName); public abstract List<TimeSeries> getTimeSeries(Branch branch);
/** /**
* Сохранить извлеченные временные ряды * Сохранить извлеченные временные ряды
* *
* @param gitRepository
* @param branch * @param branch
*/ */
public void addTimeSeries(GitRepository gitRepository, Branch branch) { public void addTimeSeries(Branch branch) {
// извлеченные временных рядов // извлеченные временных рядов
List<TimeSeries> timeSeries = getTimeSeries(gitRepository, branch.getName()); List<TimeSeries> timeSeries = getTimeSeries(branch);
// сгруппированные по временным интервалам точки временных рядов // сгруппированные по временным интервалам точки временных рядов
timeSeries.forEach(ts -> ts.setValues(mapTimeSeriesToInterval(getTimeSeriesService().getTimeSeriesInterval(), ts.getValues()))); timeSeries.forEach(ts -> ts.setValues(mapTimeSeriesToInterval(getTimeSeriesService().getTimeSeriesInterval(), ts.getValues())));

View File

@ -1,10 +1,8 @@
package ru.ulstu.extractor.ts.creator.scheduled; package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.gitrepository.service.GitRepositoryService;
import ru.ulstu.extractor.ts.creator.AbstractTimeSeriesCreator;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.service.TimeSeriesService; import ru.ulstu.extractor.ts.service.TimeSeriesService;
@ -14,30 +12,25 @@ import java.util.Collections;
import java.util.List; import java.util.List;
@Component @Component
public class DependenceTS extends AbstractTimeSeriesCreator { public class DependenceTS extends DBTimeSeriesCreator {
private final TimeSeriesService timeSeriesService; private final TimeSeriesService timeSeriesService;
private final BranchService branchService; private final BranchService branchService;
private final GitRepositoryService gitRepositoryService;
public DependenceTS(TimeSeriesService timeSeriesService, public DependenceTS(TimeSeriesService timeSeriesService,
BranchService branchService, BranchService branchService) {
GitRepositoryService gitRepositoryService) {
this.timeSeriesService = timeSeriesService; this.timeSeriesService = timeSeriesService;
this.branchService = branchService; this.branchService = branchService;
this.gitRepositoryService = gitRepositoryService;
} }
@Override @Override
public List<TimeSeries> getTimeSeries(Integer repositoryId, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
GitRepository gitRepository = gitRepositoryService.findById(repositoryId);
return Collections.singletonList( return Collections.singletonList(
new TimeSeries( new TimeSeries(
String.format("%s %s %s", String.format("%s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(), branch.getName()),
getTimeSeriesType(), getTimeSeriesType(),
Dummy.getDefaultTimeSeries())); Dummy.getDefaultTimeSeries()));
} }

View File

@ -1,13 +1,11 @@
package ru.ulstu.extractor.ts.creator.scheduled; package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.model.Commit;
import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.commit.service.CommitService;
import ru.ulstu.extractor.gitrepository.model.FileChange; 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.ts.creator.AbstractTimeSeriesCreator;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.model.TimeSeriesValue; import ru.ulstu.extractor.ts.model.TimeSeriesValue;
@ -19,36 +17,32 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
public class EntityTS extends AbstractTimeSeriesCreator { public class EntityTS extends DBTimeSeriesCreator {
private final TimeSeriesService timeSeriesService; private final TimeSeriesService timeSeriesService;
private final CommitService commitService; private final CommitService commitService;
private final GitRepositoryService gitRepositoryService;
private final BranchService branchService; private final BranchService branchService;
public EntityTS(TimeSeriesService timeSeriesService, public EntityTS(TimeSeriesService timeSeriesService,
CommitService commitService, CommitService commitService,
GitRepositoryService gitRepositoryService,
BranchService branchService) { BranchService branchService) {
this.timeSeriesService = timeSeriesService; this.timeSeriesService = timeSeriesService;
this.commitService = commitService; this.commitService = commitService;
this.gitRepositoryService = gitRepositoryService;
this.branchService = branchService; this.branchService = branchService;
} }
@Override @Override
public List<TimeSeries> getTimeSeries(Integer repositoryId, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
GitRepository gitRepository = gitRepositoryService.findById(repositoryId);
return Collections.singletonList( return Collections.singletonList(
new TimeSeries( new TimeSeries(
String.format("%s %s %s", String.format("%s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(), branch.getName()),
getTimeSeriesType(), getTimeSeriesType(),
commitService.findByRepositoryIdAndName(repositoryId, branchName) commitService.findByRepositoryIdAndName(branch.getGitRepository().getId(), branch.getName())
.stream() .stream()
.map(c -> new TimeSeriesValue(c.getDate(), findEntity(repositoryId, branchName))) .map(c -> new TimeSeriesValue(c.getDate(), findEntity(branch.getGitRepository().getId(), branch.getName())))
.collect(Collectors.toList()))); .collect(Collectors.toList())));
} }

View File

@ -1,11 +1,11 @@
package ru.ulstu.extractor.ts.creator.db; package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.commit.model.Commit; import ru.ulstu.extractor.commit.model.Commit;
import ru.ulstu.extractor.commit.service.CommitService; import ru.ulstu.extractor.commit.service.CommitService;
import ru.ulstu.extractor.gitrepository.model.FileChange; import ru.ulstu.extractor.gitrepository.model.FileChange;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.model.TimeSeriesValue; import ru.ulstu.extractor.ts.model.TimeSeriesValue;
@ -29,16 +29,18 @@ public class FileTS extends DBTimeSeriesCreator {
} }
@Override @Override
public List<TimeSeries> getTimeSeries(GitRepository gitRepository, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
List<TimeSeries> timeSeriesResult = new ArrayList<>(); List<TimeSeries> timeSeriesResult = new ArrayList<>();
List<Commit> commits = new ArrayList<>(commitService.findByRepositoryIdAndName(gitRepository.getId(), branchName)); List<Commit> commits = new ArrayList<>(commitService.findByRepositoryIdAndName(branch.getGitRepository().getId(),
branch.getName()));
double value = 0; double value = 0;
TimeSeries timeSeries = new TimeSeries( TimeSeries timeSeries = new TimeSeries(
String.format("%s %s %s", String.format("%s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(),
branch.getName()),
getTimeSeriesType()); getTimeSeriesType());
for (Commit commit : commits) { for (Commit commit : commits) {
for (FileChange fileChange : commit.getFileChanges()) { for (FileChange fileChange : commit.getFileChanges()) {

View File

@ -1,10 +1,8 @@
package ru.ulstu.extractor.ts.creator.scheduled; package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.gitrepository.service.GitRepositoryService;
import ru.ulstu.extractor.ts.creator.AbstractTimeSeriesCreator;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.service.TimeSeriesService; import ru.ulstu.extractor.ts.service.TimeSeriesService;
@ -14,30 +12,25 @@ import java.util.Collections;
import java.util.List; import java.util.List;
@Component @Component
public class InterfaceTS extends AbstractTimeSeriesCreator { public class InterfaceTS extends DBTimeSeriesCreator {
private final TimeSeriesService timeSeriesService; private final TimeSeriesService timeSeriesService;
private final BranchService branchService; private final BranchService branchService;
private final GitRepositoryService gitRepositoryService;
public InterfaceTS(TimeSeriesService timeSeriesService, public InterfaceTS(TimeSeriesService timeSeriesService,
BranchService branchService, BranchService branchService) {
GitRepositoryService gitRepositoryService) {
this.timeSeriesService = timeSeriesService; this.timeSeriesService = timeSeriesService;
this.branchService = branchService; this.branchService = branchService;
this.gitRepositoryService = gitRepositoryService;
} }
@Override @Override
public List<TimeSeries> getTimeSeries(Integer repositoryId, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
GitRepository gitRepository = gitRepositoryService.findById(repositoryId);
return Collections.singletonList( return Collections.singletonList(
new TimeSeries( new TimeSeries(
String.format("%s %s %s", String.format("%s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(), branch.getName()),
getTimeSeriesType(), getTimeSeriesType(),
Dummy.getDefaultTimeSeries())); Dummy.getDefaultTimeSeries()));
} }

View File

@ -1,9 +1,8 @@
package ru.ulstu.extractor.ts.creator.scheduled; package ru.ulstu.extractor.ts.creator.db;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.branch.service.BranchService; import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.gitrepository.service.GitRepositoryService;
import ru.ulstu.extractor.ts.model.TimeSeries; import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.service.TimeSeriesService; import ru.ulstu.extractor.ts.service.TimeSeriesService;
@ -13,30 +12,25 @@ import java.util.Collections;
import java.util.List; import java.util.List;
@Component @Component
public class ProcessTS extends ScheduledTimeSeriesCreator { public class ProcessTS extends DBTimeSeriesCreator {
private final TimeSeriesService timeSeriesService; private final TimeSeriesService timeSeriesService;
private final BranchService branchService; private final BranchService branchService;
private final GitRepositoryService gitRepositoryService;
public ProcessTS(TimeSeriesService timeSeriesService, public ProcessTS(TimeSeriesService timeSeriesService,
BranchService branchService, BranchService branchService) {
GitRepositoryService gitRepositoryService) {
this.timeSeriesService = timeSeriesService; this.timeSeriesService = timeSeriesService;
this.branchService = branchService; this.branchService = branchService;
this.gitRepositoryService = gitRepositoryService;
} }
@Override @Override
public List<TimeSeries> getTimeSeries(Integer repositoryId, String branchName) { public List<TimeSeries> getTimeSeries(Branch branch) {
GitRepository gitRepository = gitRepositoryService.findById(repositoryId);
return Collections.singletonList( return Collections.singletonList(
new TimeSeries( new TimeSeries(
String.format("%s %s %s", String.format("%s %s %s",
gitRepository.getName(), branch.getGitRepository().getName(),
branchName, branch.getName(),
getTimeSeriesType().getDescription()), getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName), branchService.findByRepositoryAndName(branch.getGitRepository(), branch.getName()),
getTimeSeriesType(), getTimeSeriesType(),
Dummy.getDefaultTimeSeries())); Dummy.getDefaultTimeSeries()));
} }

View File

@ -1,38 +1,20 @@
package ru.ulstu.extractor.ts.creator.scheduled; package ru.ulstu.extractor.ts.creator.scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.extractor.author.model.Author; import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.author.service.AuthorService; import ru.ulstu.extractor.gitrepository.service.GitApi;
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;
import ru.ulstu.extractor.ts.creator.db.DBTimeSeriesCreator;
import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType; import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.model.TimeSeriesValue; import ru.ulstu.extractor.ts.model.TimeSeriesValue;
import ru.ulstu.extractor.ts.service.TimeSeriesService; import ru.ulstu.extractor.ts.service.TimeSeriesService;
import java.util.ArrayList;
import java.util.List;
@Component @Component
public class AuthorTS extends DBTimeSeriesCreator { public class AuthorTS extends ScheduledTimeSeriesCreator {
private final TimeSeriesService timeSeriesService; private final TimeSeriesService timeSeriesService;
private final CommitService commitService; private final GitApi gitApi;
private final AuthorService authorService;
private final BranchService branchService;
public AuthorTS(TimeSeriesService timeSeriesService, public AuthorTS(TimeSeriesService timeSeriesService, GitApi gitApi) {
CommitService commitService,
AuthorService authorService,
GitRepositoryService gitRepositoryService,
BranchService branchService) {
this.timeSeriesService = timeSeriesService; this.timeSeriesService = timeSeriesService;
this.commitService = commitService; this.gitApi = gitApi;
this.authorService = authorService;
this.branchService = branchService;
} }
@Override @Override
@ -41,29 +23,8 @@ public class AuthorTS extends DBTimeSeriesCreator {
} }
@Override @Override
public List<TimeSeries> getTimeSeries(GitRepository gitRepository, String branchName) { public TimeSeriesValue getNewTimeSeriesValue(Branch branch) {
List<TimeSeries> timeSeriesResult = new ArrayList<>(); return new TimeSeriesValue(gitApi.getAuthorsCount(branch));
List<Author> authors = authorService.findAll();
List<Commit> commits = new ArrayList<>(commitService.findByRepositoryIdAndName(gitRepository.getId(), branchName));
for (Author author : authors) {
TimeSeries timeSeries = new TimeSeries(
String.format("%s %s %s %s",
gitRepository.getName(),
branchName,
author.getName(),
getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName),
getTimeSeriesType());
for (Commit commit : commits) {
if (commit.getAuthor().equals(author)) {
timeSeries.getValues().add(new TimeSeriesValue(commit.getDate(), 1.0));
}
}
if (!timeSeries.getValues().isEmpty()) {
timeSeriesResult.add(timeSeries);
}
}
return timeSeriesResult;
} }
@Override @Override

View File

@ -1,53 +0,0 @@
package ru.ulstu.extractor.ts.creator.scheduled;
import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.gitrepository.service.GitRepositoryService;
import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.service.TimeSeriesService;
import ru.ulstu.extractor.ts.util.Dummy;
import java.util.Collections;
import java.util.List;
@Component
public class AuthorsCompletedIssueTS extends ScheduledTimeSeriesCreator {
private final TimeSeriesService timeSeriesService;
private final BranchService branchService;
private final GitRepositoryService gitRepositoryService;
public AuthorsCompletedIssueTS(TimeSeriesService timeSeriesService,
BranchService branchService,
GitRepositoryService gitRepositoryService) {
this.timeSeriesService = timeSeriesService;
this.branchService = branchService;
this.gitRepositoryService = gitRepositoryService;
}
@Override
public List<TimeSeries> getTimeSeries(GitRepository gitRepository, String branchName) {
//TODO: добавить постраничное чтение
return Collections.singletonList(
new TimeSeries(
String.format("%s %s %s",
gitRepository.getName(),
branchName,
getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName),
getTimeSeriesType(),
Dummy.getDefaultTimeSeries()));
}
@Override
public TimeSeriesService getTimeSeriesService() {
return timeSeriesService;
}
@Override
public TimeSeriesType getTimeSeriesType() {
return TimeSeriesType.AUTHOR_COMPLETED_ISSUES;
}
}

View File

@ -1,53 +0,0 @@
package ru.ulstu.extractor.ts.creator.scheduled;
import org.springframework.stereotype.Component;
import ru.ulstu.extractor.branch.service.BranchService;
import ru.ulstu.extractor.gitrepository.model.GitRepository;
import ru.ulstu.extractor.gitrepository.service.GitRepositoryService;
import ru.ulstu.extractor.ts.model.TimeSeries;
import ru.ulstu.extractor.ts.model.TimeSeriesType;
import ru.ulstu.extractor.ts.service.TimeSeriesService;
import ru.ulstu.extractor.ts.util.Dummy;
import java.util.Collections;
import java.util.List;
@Component
public class AuthorsIssueTS extends ScheduledTimeSeriesCreator {
private final TimeSeriesService timeSeriesService;
private final BranchService branchService;
private final GitRepositoryService gitRepositoryService;
public AuthorsIssueTS(TimeSeriesService timeSeriesService,
BranchService branchService,
GitRepositoryService gitRepositoryService) {
this.timeSeriesService = timeSeriesService;
this.branchService = branchService;
this.gitRepositoryService = gitRepositoryService;
}
@Override
public List<TimeSeries> getTimeSeries(Integer repositoryId, String branchName) {
GitRepository gitRepository = gitRepositoryService.findById(repositoryId);
return Collections.singletonList(
new TimeSeries(
String.format("%s %s %s",
gitRepository.getName(),
branchName,
getTimeSeriesType().getDescription()),
branchService.findByRepositoryAndName(gitRepository, branchName),
getTimeSeriesType(),
Dummy.getDefaultTimeSeries()));
}
@Override
public TimeSeriesService getTimeSeriesService() {
return timeSeriesService;
}
@Override
public TimeSeriesType getTimeSeriesType() {
return TimeSeriesType.AUTHOR_ISSUES;
}
}