Skip to content

Commit c6ec74b

Browse files
Computing changeCountsByTimeStamps only once
1 parent f843218 commit c6ec74b

File tree

2 files changed

+6
-11
lines changed

2 files changed

+6
-11
lines changed

change-proneness-ranker/src/main/java/org/hjug/git/ChangePronenessRanker.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,18 @@
1111
@Slf4j
1212
public class ChangePronenessRanker {
1313

14-
private Repository repository;
15-
private GitLogReader repositoryLogReader;
14+
private final TreeMap<Integer, Integer> changeCountsByTimeStamps = new TreeMap<>();
1615

1716
public ChangePronenessRanker(Repository repository, GitLogReader repositoryLogReader) {
18-
this.repositoryLogReader = repositoryLogReader;
19-
this.repository = repository;
20-
}
21-
22-
public void rankChangeProneness(List<ScmLogInfo> scmLogInfos) {
23-
TreeMap<Integer, Integer> changeCountsByTimeStamps = new TreeMap<>();
24-
2517
try {
2618
log.info("Capturing change count based on commit timestamps");
2719
changeCountsByTimeStamps.putAll(repositoryLogReader.captureChangeCountByCommitTimestamp(repository));
2820
} catch (IOException | GitAPIException e) {
2921
log.error("Error reading from repository: {}", e.getMessage());
3022
}
23+
}
3124

25+
public void rankChangeProneness(List<ScmLogInfo> scmLogInfos) {
3226
for (ScmLogInfo scmLogInfo : scmLogInfos) {
3327
int commitsInRepositorySinceCreation =
3428
changeCountsByTimeStamps.tailMap(scmLogInfo.getEarliestCommit()).values().stream()

change-proneness-ranker/src/test/java/org/hjug/git/ChangePronenessRankerTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@
1111
import org.junit.jupiter.api.BeforeEach;
1212
import org.junit.jupiter.api.Test;
1313

14-
public class ChangePronenessRankerTest {
14+
class ChangePronenessRankerTest {
1515

1616
private ChangePronenessRanker changePronenessRanker;
1717
private GitLogReader repositoryLogReader;
1818

1919
@BeforeEach
2020
public void setUp() {
2121
repositoryLogReader = mock(GitLogReader.class);
22-
changePronenessRanker = new ChangePronenessRanker(null, repositoryLogReader);
2322
}
2423

2524
// TODO: this should probably be a cucumber test
@@ -34,6 +33,7 @@ void testChangePronenessCalculation() throws IOException, GitAPIException {
3433

3534
when(repositoryLogReader.captureChangeCountByCommitTimestamp(any())).thenReturn(commitsWithChangeCounts);
3635

36+
changePronenessRanker = new ChangePronenessRanker(null, repositoryLogReader);
3737
List<ScmLogInfo> scmLogInfos = new ArrayList<>();
3838
scmLogInfos.add(scmLogInfo);
3939
changePronenessRanker.rankChangeProneness(scmLogInfos);
@@ -58,6 +58,7 @@ void testRankChangeProneness() throws IOException, GitAPIException {
5858
commitsWithChangeCounts.put(scmLogInfo2.getEarliestCommit() + 10 * 60, 5);
5959

6060
when(repositoryLogReader.captureChangeCountByCommitTimestamp(any())).thenReturn(commitsWithChangeCounts);
61+
changePronenessRanker = new ChangePronenessRanker(null, repositoryLogReader);
6162

6263
List<ScmLogInfo> scmLogInfos = new ArrayList<>();
6364
scmLogInfos.add(scmLogInfo);

0 commit comments

Comments
 (0)