Просмотр исходного кода

Extended the comparison mode to enable the parallel strategy.

Timur Sağlam 5 лет назад
Родитель
Сommit
1e2d189abd

+ 5 - 5
jplag/src/main/java/jplag/JPlag.java

@@ -18,9 +18,9 @@ import java.util.stream.Collectors;
 
 import jplag.options.JPlagOptions;
 import jplag.options.LanguageOption;
-import jplag.strategy.ComparisonMode;
 import jplag.strategy.ComparisonStrategy;
 import jplag.strategy.NormalComparisonStrategy;
+import jplag.strategy.ParallelComparisonStrategy;
 
 /**
  * This class coordinates the whole program flow.
@@ -222,11 +222,11 @@ public class JPlag implements ProgramI {
     }
 
     private void initializeComparisonStrategy() throws ExitException {
-        ComparisonMode mode = options.getComparisonMode();
-        switch (mode) { // TODO TS: Currently only one comparison strategy supported
+        switch (options.getComparisonMode()) {
         case NORMAL:
-            this.comparisonStrategy = new NormalComparisonStrategy(options, gSTiling);
-            return;
+            comparisonStrategy = new NormalComparisonStrategy(options, gSTiling); break;
+        case PARALLEL:
+            comparisonStrategy = new ParallelComparisonStrategy(options, gSTiling); break;
         default:
             throw new ExitException("Illegal comparison mode: " + options.getComparisonMode());
         }

+ 2 - 1
jplag/src/main/java/jplag/strategy/ComparisonMode.java

@@ -4,5 +4,6 @@ package jplag.strategy;
  * The comparison mode determines which `ComparisonStrategy` is used to compare submissions.
  */
 public enum ComparisonMode {
-    NORMAL // TODO TS: Currently only one comparison strategy supported
+    NORMAL,
+    PARALLEL
 }

+ 2 - 2
jplag/src/main/java/jplag/strategy/NormalComparisonStrategy.java

@@ -43,8 +43,8 @@ public class NormalComparisonStrategy extends AbstractComparisonStrategy {
                 // TODO SH: Why does this differ from the results shown in the result web page?
                 System.out.println("Comparing " + first.name + "-" + second.name + ": " + comparison.percent());
                 if (baseCodeSubmission != null) {
-                    comparison.bcMatchesA = baseCodeMatches.get(comparison.firstSubmission.name);
-                    comparison.bcMatchesB = baseCodeMatches.get(comparison.secondSubmission.name);
+                    comparison.baseCodeMatchesA = baseCodeMatches.get(comparison.firstSubmission.name);
+                    comparison.baseCodeMatchesB = baseCodeMatches.get(comparison.secondSubmission.name);
                 }
                 if (isAboveSimilarityThreshold(comparison)) {
                     comparisons.add(comparison);

+ 2 - 2
jplag/src/main/java/jplag/strategy/ParallelComparisonStrategy.java

@@ -44,8 +44,8 @@ public class ParallelComparisonStrategy extends AbstractComparisonStrategy  {
             JPlagComparison comparison = greedyStringTiling.compare(it.getLeft(), it.getRight());
             System.out.println("Comparing " + it.getLeft().name + "-" + it.getRight().name + ": " + comparison.percent());
             if (baseCodeSubmission != null) {
-                comparison.bcMatchesA = baseCodeMatches.get(comparison.firstSubmission.name);
-                comparison.bcMatchesB = baseCodeMatches.get(comparison.secondSubmission.name);
+                comparison.baseCodeMatchesA = baseCodeMatches.get(comparison.firstSubmission.name);
+                comparison.baseCodeMatchesB = baseCodeMatches.get(comparison.secondSubmission.name);
             }
             if (isAboveSimilarityThreshold(comparison)) {
                 synchronized (comparisons) {