#58 -- save time series on indexing
parent
4f8d25e56e
commit
156cdbc672
@ -1,69 +0,0 @@
|
||||
package ru.ulstu.extractor.loader;
|
||||
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.ulstu.extractor.branch.BranchService;
|
||||
import ru.ulstu.extractor.gitrepository.GitRepositoryService;
|
||||
import ru.ulstu.extractor.model.Branch;
|
||||
import ru.ulstu.extractor.model.OffsetablePageRequest;
|
||||
import ru.ulstu.extractor.model.Repository;
|
||||
import ru.ulstu.extractor.service.IndexService;
|
||||
import ru.ulstu.extractor.ts.AbstractTSExtractor;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class GitScheduler {
|
||||
private final static int DEFAULT_PAGE_SIZE = 100;
|
||||
private final Logger log = LoggerFactory.getLogger(GitScheduler.class);
|
||||
private final GitRepositoryService gitRepositoryService;
|
||||
private final BranchService branchService;
|
||||
private final IndexService indexService;
|
||||
private final List<AbstractTSExtractor> tsExtractors;
|
||||
|
||||
public GitScheduler(GitRepositoryService gitRepositoryService,
|
||||
BranchService branchService,
|
||||
IndexService indexService,
|
||||
List<AbstractTSExtractor> tsExtractors) {
|
||||
this.gitRepositoryService = gitRepositoryService;
|
||||
this.branchService = branchService;
|
||||
this.indexService = indexService;
|
||||
this.tsExtractors = tsExtractors;
|
||||
}
|
||||
|
||||
@Scheduled(cron = "* */5 * * * *")
|
||||
public void getCommitsCount() {
|
||||
log.debug("Load commits count started");
|
||||
int repositoryPageNumber = 0;
|
||||
Page<Repository> repositoryPage;
|
||||
do {
|
||||
int branchPageNumber = 0;
|
||||
repositoryPage = gitRepositoryService.findAll(
|
||||
new OffsetablePageRequest(repositoryPageNumber, DEFAULT_PAGE_SIZE));
|
||||
Page<Branch> branchPage;
|
||||
for (Repository repository : repositoryPage.getContent()) {
|
||||
do {
|
||||
branchPage = branchService.findByRepository(repository,
|
||||
new OffsetablePageRequest(branchPageNumber, DEFAULT_PAGE_SIZE));
|
||||
for (Branch branch : branchPage.getContent()) {
|
||||
try {
|
||||
indexService.index(repository.getUrl(), branch.getName());
|
||||
tsExtractors.forEach(tsExtractor -> tsExtractor.addPoint(repository.getId(), branch.getName()));
|
||||
} catch (GitAPIException | IOException ex) {
|
||||
log.warn(ex.getMessage());
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
branchPageNumber++;
|
||||
} while (!branchPage.isEmpty());
|
||||
}
|
||||
repositoryPageNumber++;
|
||||
} while (!repositoryPage.isEmpty());
|
||||
log.debug("Load commits count finished");
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package ru.ulstu.extractor.ts;
|
||||
|
||||
import ru.ulstu.extractor.service.TimeSeriesService;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public abstract class AbstractTSExtractor {
|
||||
|
||||
public abstract String getTSName();
|
||||
|
||||
public abstract int getNewTSValue(Integer repositoryId, String branchName);
|
||||
|
||||
public abstract TimeSeriesService getTimeSeriesService();
|
||||
|
||||
public void addPoint(Integer repositoryId, String branchName) {
|
||||
getTimeSeriesService().addTimeSeriesValue(
|
||||
String.format("%s %s %s", getTSName(), repositoryId, branchName),
|
||||
new Date(),
|
||||
getNewTSValue(repositoryId, branchName));
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package ru.ulstu.extractor.ts;
|
||||
|
||||
import ru.ulstu.extractor.model.TimeSeriesValue;
|
||||
import ru.ulstu.extractor.service.TimeSeriesService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class AbstractTimeSeriesCreator {
|
||||
|
||||
public abstract String getTimeSeriesName();
|
||||
|
||||
public abstract List<TimeSeriesValue> getTimeSeriesValues(Integer repositoryId, String branchName);
|
||||
|
||||
public abstract TimeSeriesService getTimeSeriesService();
|
||||
|
||||
public void addTimeSeries(Integer repositoryId, String branchName) {
|
||||
getTimeSeriesService().save(
|
||||
String.format("%s %s %s", getTimeSeriesName(), repositoryId, branchName),
|
||||
TimeSeriesDateMapper.mapTimeSeriesToInterval(getTimeSeriesService().getTimeSeriesInterval(),
|
||||
getTimeSeriesValues(repositoryId, branchName)));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue