Skip to content

Commit 38a601c

Browse files
refactor: organize code into additional packages
1 parent 66dbf18 commit 38a601c

14 files changed

Lines changed: 65 additions & 37 deletions

File tree

src/main/java/org/variantsync/vevos/extraction/PCAnalysis.java renamed to src/main/java/org/variantsync/vevos/extraction/GTExtraction.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
import org.variantsync.diffdetective.variation.diff.DiffNode;
77
import org.variantsync.diffdetective.variation.diff.DiffType;
88
import org.variantsync.diffdetective.variation.diff.Time;
9+
import org.variantsync.vevos.extraction.common.*;
10+
import org.variantsync.vevos.extraction.error.MatchingException;
911

1012
import java.util.Map;
1113

12-
public interface PCAnalysis {
14+
public interface GTExtraction {
1315

1416
/**
1517
* Analyzes the given node and applies its annotation to the file's ground truth

src/main/java/org/variantsync/vevos/extraction/BlockAnnotation.java renamed to src/main/java/org/variantsync/vevos/extraction/common/BlockAnnotation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.common;
22

33
import java.io.Serializable;
44
import java.util.Objects;

src/main/java/org/variantsync/vevos/extraction/FeatureMapping.java renamed to src/main/java/org/variantsync/vevos/extraction/common/FeatureMapping.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.common;
22

33
public record FeatureMapping(String mapping) {
44

src/main/java/org/variantsync/vevos/extraction/FileGT.java renamed to src/main/java/org/variantsync/vevos/extraction/common/FileGT.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.common;
22

33
import org.tinylog.Logger;
44
import org.variantsync.diffdetective.util.Assert;
55
import org.variantsync.diffdetective.util.LineRange;
6+
import org.variantsync.vevos.extraction.error.MatchingException;
67

78
import java.io.Serializable;
89
import java.util.*;
@@ -53,7 +54,7 @@ public int size() {
5354
* @param index Index in the range of [0, annotation.size())
5455
* @return The annotation at the given index
5556
*/
56-
protected LineAnnotation get(int index) {
57+
public LineAnnotation get(int index) {
5758
return this.annotations.get(index);
5859
}
5960

@@ -112,6 +113,15 @@ public void growIfRequired(int size) {
112113
}
113114
}
114115

116+
/**
117+
*
118+
* @return A flag that states whether this ground truth has been consumed by completing it. If true, the ground truth
119+
* can no longer be changed.
120+
*/
121+
public boolean isConsumed() {
122+
return consumed;
123+
}
124+
115125
@Override
116126
public Iterator<LineAnnotation> iterator() {
117127
return this.annotations.iterator();

src/main/java/org/variantsync/vevos/extraction/GroundTruth.java renamed to src/main/java/org/variantsync/vevos/extraction/common/GroundTruth.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.common;
22

33
import java.io.Serializable;
44
import java.util.*;

src/main/java/org/variantsync/vevos/extraction/LineAnnotation.java renamed to src/main/java/org/variantsync/vevos/extraction/common/LineAnnotation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.common;
22

33

44
import java.io.Serializable;

src/main/java/org/variantsync/vevos/extraction/PresenceCondition.java renamed to src/main/java/org/variantsync/vevos/extraction/common/PresenceCondition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.common;
22

33
public record PresenceCondition(String condition) {
44
@Override

src/main/java/org/variantsync/vevos/extraction/MatchingException.java renamed to src/main/java/org/variantsync/vevos/extraction/error/MatchingException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.error;
22

33
public class MatchingException extends Exception {
44

src/main/java/org/variantsync/vevos/extraction/FastExtraction.java renamed to src/main/java/org/variantsync/vevos/extraction/fast/FastExtraction.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.fast;
22

33
import org.tinylog.Logger;
44
import org.variantsync.diffdetective.AnalysisRunner;
@@ -160,7 +160,7 @@ private BiConsumer<Repository, Path> buildRunner() {
160160
Path resultsRoot = extractionDir.resolve(repo.getRepositoryName());
161161
boolean printEnabled = Boolean.parseBoolean(this.properties.getProperty(PRINT_ENABLED));
162162

163-
FastPCAnalysis analysis = new FastPCAnalysis(printEnabled, resultsRoot,
163+
FastGTExtraction analysis = new FastGTExtraction(printEnabled, resultsRoot,
164164
Boolean.parseBoolean(properties.getProperty(IGNORE_PC_CHANGES)),
165165
Boolean.parseBoolean(properties.getProperty(EXTRACT_CODE_MATCHING)));
166166
final BiFunction<Repository, Path, Analysis> AnalysisFactory = (r, out) -> new Analysis(
@@ -188,7 +188,7 @@ private BiConsumer<Repository, Path> buildRunner() {
188188

189189
Analysis.forEachCommit(() -> AnalysisFactory.apply(repo, repoOutputDir), batchSize, availableProcessors);
190190

191-
FastPCAnalysis.numProcessed = 0;
191+
FastGTExtraction.numProcessed = 0;
192192
};
193193
}
194194

src/main/java/org/variantsync/vevos/extraction/FastPCAnalysis.java renamed to src/main/java/org/variantsync/vevos/extraction/fast/FastGTExtraction.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.variantsync.vevos.extraction;
1+
package org.variantsync.vevos.extraction.fast;
22

33
import org.eclipse.jgit.diff.DiffEntry;
44
import org.eclipse.jgit.revwalk.RevCommit;
@@ -7,6 +7,11 @@
77
import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses;
88
import org.variantsync.diffdetective.metadata.EditClassCount;
99
import org.variantsync.diffdetective.variation.diff.Time;
10+
import org.variantsync.vevos.extraction.GTExtraction;
11+
import org.variantsync.vevos.extraction.common.FileGT;
12+
import org.variantsync.vevos.extraction.common.GroundTruth;
13+
import org.variantsync.vevos.extraction.error.MatchingException;
14+
import org.variantsync.vevos.extraction.io.Serde;
1015

1116
import java.io.IOException;
1217
import java.io.UncheckedIOException;
@@ -19,7 +24,7 @@
1924
* Extracts ground truths for all repositories in a dataset. The ground truth consists of presence
2025
* conditions for each file, a list of all variables, and commit metadata.
2126
*/
22-
public class FastPCAnalysis implements Analysis.Hooks, PCAnalysis {
27+
public class FastGTExtraction implements Analysis.Hooks, GTExtraction {
2328
private final static String SUCCESS_COMMIT_FILE = "SUCCESS_COMMITS.txt";
2429
private final static String ERROR_COMMIT_FILE = "ERROR_COMMITS.txt";
2530
private final static String EMPTY_COMMIT_FILE = "EMPTY_COMMITS.txt";
@@ -39,7 +44,7 @@ public class FastPCAnalysis implements Analysis.Hooks, PCAnalysis {
3944
private final Path resultsRoot;
4045
private final boolean extractCodeMatching;
4146

42-
public FastPCAnalysis(boolean printEnabled, Path resultsRoot, boolean ignorePCChanges, boolean extractCodeMatching) {
47+
public FastGTExtraction(boolean printEnabled, Path resultsRoot, boolean ignorePCChanges, boolean extractCodeMatching) {
4348
this.printEnabled = printEnabled;
4449
this.resultsRoot = resultsRoot;
4550
this.threadBatches = new ConcurrentHashMap<>();
@@ -77,7 +82,7 @@ public void onFailedParse(Analysis analysis) {
7782
}
7883

7984
private void extractionFailed(RevCommit commit) {
80-
synchronized (FastPCAnalysis.class) {
85+
synchronized (FastGTExtraction.class) {
8186
Logger.warn("Was not able to extract ground truth for commit " + commit.getName());
8287
Serde.appendText(resultsRoot.resolve(ERROR_COMMIT_FILE), commit.getName() + "\n");
8388
failedCommits.add(commit.getName());
@@ -88,10 +93,10 @@ private void extractionFailed(RevCommit commit) {
8893
public void endCommit(Analysis analysis) {
8994
RevCommit commit = analysis.getCurrentCommit();
9095

91-
synchronized (FastPCAnalysis.class) {
92-
FastPCAnalysis.numProcessed++;
93-
if (FastPCAnalysis.numProcessed % 1_000 == 0) {
94-
Logger.info("End Processing of Commit ({}): {}", FastPCAnalysis.numProcessed,
96+
synchronized (FastGTExtraction.class) {
97+
FastGTExtraction.numProcessed++;
98+
if (FastGTExtraction.numProcessed % 1_000 == 0) {
99+
Logger.info("End Processing of Commit ({}): {}", FastGTExtraction.numProcessed,
95100
commit.name());
96101
}
97102
}
@@ -116,16 +121,16 @@ public void endCommit(Analysis analysis) {
116121
// Return early and do not save any data, if the ground truths are both empty.
117122
// In this case, no changes have been analyzed, and we are not interested in the commit's
118123
// data.
119-
synchronized (FastPCAnalysis.class) {
124+
synchronized (FastGTExtraction.class) {
120125
Logger.debug("No code changes for " + commit.getName());
121126
Serde.appendText(resultsRoot.resolve(EMPTY_COMMIT_FILE), commit.getName() + "\n");
122127
failedCommits.add(commit.getName());
123128
}
124129
return;
125130
}
126131

127-
PCAnalysis.makeComplete(groundTruthBefore);
128-
PCAnalysis.makeComplete(groundTruthAfter);
132+
GTExtraction.makeComplete(groundTruthBefore);
133+
GTExtraction.makeComplete(groundTruthAfter);
129134

130135
if (printEnabled) {
131136
print(groundTruthBefore, commit.getName());
@@ -169,7 +174,7 @@ public void endCommit(Analysis analysis) {
169174
s -> Serde.writeToFile(commitSaveDir.resolve(COMMIT_PARENTS_FILE), s),
170175
() -> Serde.writeToFile(commitSaveDir.resolve(COMMIT_PARENTS_FILE), ""));
171176

172-
synchronized (FastPCAnalysis.class) {
177+
synchronized (FastGTExtraction.class) {
173178
Serde.appendText(resultsRoot.resolve(SUCCESS_COMMIT_FILE), commit.getName() + "\n");
174179
}
175180

@@ -239,11 +244,11 @@ public boolean analyzeVariationDiff(Analysis analysis) {
239244
// Logger.debug("Node: {}", node);
240245
// If the file is not completely new, we consider the before case
241246
if (!(changeType == DiffEntry.ChangeType.ADD)) {
242-
PCAnalysis.analyzeNode(fileGTBefore, node, Time.BEFORE, ignorePCChanges);
247+
GTExtraction.analyzeNode(fileGTBefore, node, Time.BEFORE, ignorePCChanges);
243248
}
244249
if (!(changeType == DiffEntry.ChangeType.DELETE)) {
245250
// If the file has not been deleted, we consider the after case
246-
PCAnalysis.analyzeNode(fileGTAfter, node, Time.AFTER, ignorePCChanges);
251+
GTExtraction.analyzeNode(fileGTAfter, node, Time.AFTER, ignorePCChanges);
247252
}
248253
} catch (MatchingException e) {
249254
Logger.error("unhandled exception while analyzing {} -> {} for commit {}.",

0 commit comments

Comments
 (0)