Browse Source

Fix options

Dominik Fuchß 4 years ago
parent
commit
67cd00057a
1 changed files with 27 additions and 3 deletions
  1. 27 3
      jplag/src/main/java/de/jplag/options/JPlagOptions.java

+ 27 - 3
jplag/src/main/java/de/jplag/options/JPlagOptions.java

@@ -77,6 +77,27 @@ public record JPlagOptions(Language language, ComparisonMode comparisonMode, boo
         );
         );
     }
     }
 
 
+    public JPlagOptions(Language language, ComparisonMode comparisonMode, boolean debugParser, List<String> fileSuffixes, float similarityThreshold,
+            Integer maximumNumberOfComparisons, SimilarityMetric similarityMetric, Integer minimumTokenMatch, String exclusionFileName,
+            List<String> submissionDirectories, List<String> oldSubmissionDirectories, String baseCodeSubmissionName, String subdirectoryName,
+            Verbosity verbosity, ClusteringOptions clusteringOptions) {
+        this.language = language;
+        this.comparisonMode = comparisonMode;
+        this.debugParser = debugParser;
+        this.fileSuffixes = fileSuffixes == null ? null : fileSuffixes.stream().toList();
+        this.similarityThreshold = fixSimilarityThreshold(similarityThreshold);
+        this.maximumNumberOfComparisons = fixMaximumNumberOfComparisons(maximumNumberOfComparisons);
+        this.similarityMetric = similarityMetric;
+        this.minimumTokenMatch = minimumTokenMatch;
+        this.exclusionFileName = exclusionFileName;
+        this.submissionDirectories = submissionDirectories == null ? null : submissionDirectories.stream().toList();
+        this.oldSubmissionDirectories = oldSubmissionDirectories == null ? null : oldSubmissionDirectories.stream().toList();
+        this.baseCodeSubmissionName = baseCodeSubmissionName;
+        this.subdirectoryName = subdirectoryName;
+        this.verbosity = verbosity;
+        this.clusteringOptions = clusteringOptions;
+    }
+
     public JPlagOptions withLanguageOption(Language language) {
     public JPlagOptions withLanguageOption(Language language) {
         return new JPlagOptions(language, comparisonMode, debugParser, fileSuffixes, similarityThreshold, maximumNumberOfComparisons,
         return new JPlagOptions(language, comparisonMode, debugParser, fileSuffixes, similarityThreshold, maximumNumberOfComparisons,
                 similarityMetric, minimumTokenMatch, exclusionFileName, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 similarityMetric, minimumTokenMatch, exclusionFileName, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
@@ -109,9 +130,8 @@ public record JPlagOptions(Language language, ComparisonMode comparisonMode, boo
 
 
     public JPlagOptions withMaximumNumberOfComparisons(Integer maximumNumberOfComparisons) {
     public JPlagOptions withMaximumNumberOfComparisons(Integer maximumNumberOfComparisons) {
         return new JPlagOptions(language, comparisonMode, debugParser, fileSuffixes, similarityThreshold,
         return new JPlagOptions(language, comparisonMode, debugParser, fileSuffixes, similarityThreshold,
-                maximumNumberOfComparisons == null ? null : Math.max(maximumNumberOfComparisons, -1), similarityMetric, minimumTokenMatch,
-                exclusionFileName, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName, subdirectoryName, verbosity,
-                clusteringOptions);
+                fixMaximumNumberOfComparisons(maximumNumberOfComparisons), similarityMetric, minimumTokenMatch, exclusionFileName,
+                submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName, subdirectoryName, verbosity, clusteringOptions);
     }
     }
 
 
     public JPlagOptions withSimilarityMetric(SimilarityMetric similarityMetric) {
     public JPlagOptions withSimilarityMetric(SimilarityMetric similarityMetric) {
@@ -238,4 +258,8 @@ public record JPlagOptions(Language language, ComparisonMode comparisonMode, boo
             return similarityThreshold;
             return similarityThreshold;
         }
         }
     }
     }
+
+    private Integer fixMaximumNumberOfComparisons(Integer maximumNumberOfComparisons) {
+        return maximumNumberOfComparisons == null ? null : Math.max(maximumNumberOfComparisons, SHOW_ALL_COMPARISONS);
+    }
 }
 }