#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