Explorar o código

Clean-up result interface by removing method that implicitly used the options. This means getAllComparisons() is now named getComparisons().

Timur Sağlam %!s(int64=5) %!d(string=hai) anos
pai
achega
7f18cb8f91

+ 1 - 1
jplag/src/main/java/de/jplag/CLI.java

@@ -56,7 +56,7 @@ public class CLI {
             System.out.println("JPlag initialized");
             JPlagResult result = program.run();
             File reportDir = new File(arguments.getString(RESULT_FOLDER.flagWithoutDash()));
-            Report report = new Report(reportDir);
+            Report report = new Report(reportDir, options);
             report.writeResult(result);
         } catch (ExitException exception) {
             System.out.println("Error: " + exception.getReport());

+ 2 - 14
jplag/src/main/java/de/jplag/JPlagResult.java

@@ -66,22 +66,10 @@ public class JPlagResult {
     }
 
     /**
-     * @return a list of all comparisons sorted by percentage (descending).
-     */
-    public List<JPlagComparison> getAllComparisons() {
-        return comparisons;
-    }
-
-    /**
-     * @return a list of comparisons sorted by percentage (descending). the maximum number of comparisons is limited by the
-     * settings set in JPlagOptions
+     * @return a list of all comparisons sorted by percentage (descending)
      */
     public List<JPlagComparison> getComparisons() {
-        if (this.options.getMaximumNumberOfComparisons() == -1) {
-            return this.getAllComparisons();
-        } else {
-            return this.getComparisons(this.options.getMaximumNumberOfComparisons());
-        }
+        return comparisons;
     }
 
     /**

+ 13 - 10
jplag/src/main/java/de/jplag/reporting/Report.java

@@ -36,6 +36,7 @@ public class Report { // Mostly legacy code with some minor improvements.
     private final Map<JPlagComparison, Integer> comparisonToIndex = new HashMap<>();
     private final Messages msg;
     private final File reportDir;
+    private final JPlagOptions options;
 
     private JPlagResult result;
 
@@ -43,9 +44,10 @@ public class Report { // Mostly legacy code with some minor improvements.
     private int matchWritingProgess = 0;
     private int matchesWritten = 0;
 
-    public Report(File reportDir) throws ExitException {
+    public Report(File reportDir, JPlagOptions options) throws ExitException {
         this.reportDir = reportDir;
-        this.msg = new Messages("en");
+        this.options = options;
+        msg = new Messages("en");
 
         validateReportDir();
     }
@@ -55,7 +57,7 @@ public class Report { // Mostly legacy code with some minor improvements.
         System.out.println("Writing report...");
         writeIndex();
         copyStaticFiles();
-        writeMatches(result.getComparisons());
+        writeMatches(result.getComparisons(options.getMaximumNumberOfComparisons()));
         System.out.println("Report exported to " + reportDir.getAbsolutePath());
     }
 
@@ -140,7 +142,8 @@ public class Report { // Mostly legacy code with some minor improvements.
 
         htmlFile.println("<TABLE BORDER=\"1\" CELLSPACING=\"0\" BGCOLOR=\"#d0d0d0\">");
         htmlFile.println("<TR><TH><TH>" + comparison.getFirstSubmission().getName() + " (" + comparison.similarityOfFirst() + "%)<TH>"
-                + comparison.getSecondSubmission().getName() + " (" + comparison.similarityOfSecond() + "%)<TH>" + msg.getString("AllMatches.Tokens"));
+                + comparison.getSecondSubmission().getName() + " (" + comparison.similarityOfSecond() + "%)<TH>"
+                + msg.getString("AllMatches.Tokens"));
 
         for (int i = 0; i < comparison.getMatches().size(); i++) {
             match = comparison.getMatches().get(i);
@@ -444,11 +447,11 @@ public class Report { // Mostly legacy code with some minor improvements.
                     + result.getOptions().getBaseCodeSubmissionName() + "</TD></TR>");
         }
 
-        if (result.getComparisons().size() > 0) {
+        if (options.getMaximumNumberOfComparisons() > 0) {
             htmlFile.println("<TR BGCOLOR=#aaaaff VALIGN=top><TD>" + msg.getString("Report.Matches_displayed") + ":</TD>" + "<TD>");
-
-            htmlFile.println(result.getComparisons().size() + " of " + result.getAllComparisons().size() + " (" + msg.getString("Report.Treshold")
-                    + ": " + result.getOptions().getSimilarityThreshold() + "%)<br>");
+            // TODO TS every instance of getComparisons must be replaced by get N in this class!
+            htmlFile.println(options.getMaximumNumberOfComparisons() + " of " + result.getComparisons().size() + " ("
+                    + msg.getString("Report.Treshold") + ": " + result.getOptions().getSimilarityThreshold() + "%)<br>");
 
             htmlFile.println("</TD></TR>");
         }
@@ -553,7 +556,7 @@ public class Report { // Mostly legacy code with some minor improvements.
     }
 
     private void writeLinksToComparisons(HTMLFile htmlFile, String headerStr, String csvFile) {
-        List<JPlagComparison> comparisons = result.getComparisons(); // should be already sorted!
+        List<JPlagComparison> comparisons = result.getComparisons(options.getMaximumNumberOfComparisons()); // should be already sorted!
 
         htmlFile.println(headerStr + " (<a href=\"help-sim-" + "en" // Country tag
                 + ".html\"><small><font color=\"#000088\">" + msg.getString("Report.WhatIsThis") + "</font></small></a>):</H4>");
@@ -649,7 +652,7 @@ public class Report { // Mostly legacy code with some minor improvements.
     private void writeMatchesCSV(String fileName) {
         FileWriter writer = null;
         File csvFile = new File(reportDir, fileName);
-        List<JPlagComparison> comparisons = result.getComparisons();
+        List<JPlagComparison> comparisons = result.getComparisons(options.getMaximumNumberOfComparisons());
 
         try {
             csvFile.createNewFile();

+ 4 - 4
jplag/src/test/java/de/jplag/NormalComparisonTest.java

@@ -32,7 +32,7 @@ public class NormalComparisonTest extends TestBase {
         assertEquals(3, result.getNumberOfSubmissions());
         assertEquals(3, result.getComparisons().size());
 
-        result.getAllComparisons().forEach(comparison -> {
+        result.getComparisons().forEach(comparison -> {
             assertEquals(0f, comparison.similarity(), 0.1f);
         });
     }
@@ -50,10 +50,10 @@ public class NormalComparisonTest extends TestBase {
         JPlagResult result = runJPlagWithDefaultOptions("PartialPlagiarism");
 
         assertEquals(5, result.getNumberOfSubmissions());
-        assertEquals(10, result.getAllComparisons().size());
+        assertEquals(10, result.getComparisons().size());
 
         // All comparisons with E shall have no matches
-        result.getAllComparisons()
+        result.getComparisons()
                 .stream()
                 .filter(comparison ->
                         comparison.getSecondSubmission().getName().equals("E") ||
@@ -86,7 +86,7 @@ public class NormalComparisonTest extends TestBase {
     }
 
     private Optional<JPlagComparison> getSelectedComparison(JPlagResult result, String nameA, String nameB) {
-        return result.getAllComparisons().stream()
+        return result.getComparisons().stream()
                 .filter(comparison ->
                         comparison.getFirstSubmission().getName().equals(nameA) &&
                                 comparison.getSecondSubmission().getName().equals(nameB) ||

+ 4 - 4
jplag/src/test/java/de/jplag/ParallelComparisonTest.java

@@ -39,7 +39,7 @@ public class ParallelComparisonTest extends TestBase {
         assertEquals(3, result.getNumberOfSubmissions());
         assertEquals(3, result.getComparisons().size());
 
-        result.getAllComparisons().forEach(comparison -> {
+        result.getComparisons().forEach(comparison -> {
             assertEquals(0f, comparison.similarity(), DELTA);
         });
     }
@@ -54,10 +54,10 @@ public class ParallelComparisonTest extends TestBase {
         JPlagResult result = runJPlag("PartialPlagiarism", it -> it.setComparisonMode(PARALLEL));
 
         assertEquals(5, result.getNumberOfSubmissions());
-        assertEquals(10, result.getAllComparisons().size());
+        assertEquals(10, result.getComparisons().size());
 
         // All comparisons with E shall have no matches
-        result.getAllComparisons().stream()
+        result.getComparisons().stream()
                 .filter(comparison -> comparison.getSecondSubmission().getName().equals("E") || comparison.getFirstSubmission().getName().equals("E"))
                 .forEach(comparison -> assertEquals(0f, comparison.similarity(), DELTA));
 
@@ -83,7 +83,7 @@ public class ParallelComparisonTest extends TestBase {
     }
 
     private Optional<JPlagComparison> getSelectedComparison(JPlagResult result, String nameA, String nameB) {
-        return result.getAllComparisons().stream()
+        return result.getComparisons().stream()
                 .filter(comparison -> comparison.getFirstSubmission().getName().equals(nameA) && comparison.getSecondSubmission().getName().equals(nameB)
                         || comparison.getFirstSubmission().getName().equals(nameB) && comparison.getSecondSubmission().getName().equals(nameA))
                 .findFirst();

+ 2 - 2
jplag/src/test/java/de/jplag/VolumeTest.java

@@ -48,10 +48,10 @@ public class VolumeTest extends TestBase {
 
         var csv = readCSVResults(String.format("%s/%s", this.getBasePath(), "matches_avg.csv"));
 
-        assertEquals(csv.size(), results.getAllComparisons().size());
+        assertEquals(csv.size(), results.getComparisons().size());
         System.out.println("Volume test size: " + csv.size());
 
-        results.getAllComparisons().forEach(result -> {
+        results.getComparisons().forEach(result -> {
             var key = result.getFirstSubmission().getName() + result.getSecondSubmission().getName();
 
             assertTrue(csv.containsKey(key));