Browse Source

[192-webreport] Improved readability in ReportObjectFactory, made fields in models final,copying list

Evgeni 4 years ago
parent
commit
2d3b676fd5

+ 2 - 2
jplag/src/main/java/de/jplag/reportingV2/JsonReport.java

@@ -25,8 +25,8 @@ public class JsonReport implements Report {
     public boolean saveReport(JPlagResult result, String path) {
         JPlagReport report = ReportObjectFactory.getReportObject(result);
         File dir = new File(path);
-        if(!dir.exists()) {
-            if(!dir.mkdir()) {
+        if (!dir.exists()) {
+            if (!dir.mkdir()) {
                 System.out.println("Failed to create dir.");
             }
         }

+ 0 - 1
jplag/src/main/java/de/jplag/reportingV2/jsonfactory/JsonFactory.java

@@ -1,6 +1,5 @@
 package de.jplag.reportingV2.jsonfactory;
 
-import java.io.File;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.ArrayList;

+ 23 - 13
jplag/src/main/java/de/jplag/reportingV2/reportobject/ReportObjectFactory.java

@@ -63,12 +63,22 @@ public class ReportObjectFactory {
      */
     private static List<ComparisonReport> generateComparisonReports(JPlagResult result) {
         List<ComparisonReport> comparisons = new ArrayList<>();
-        result.getComparisons().forEach(c -> comparisons.add(new ComparisonReport(c.getFirstSubmission().getName(), c.getSecondSubmission().getName(),
-                c.similarity(), getFilesForSubmission(c.getFirstSubmission()), getFilesForSubmission(c.getSecondSubmission()), c.getMatches().stream()
-                        .map(m -> convertMatchToReportMatch(c, m, result.getOptions().getLanguage().usesIndex())).collect(Collectors.toList()))));
+        result.getComparisons().forEach(comparison -> comparisons.add( //
+                new ComparisonReport(comparison.getFirstSubmission().getName(), //
+                        comparison.getSecondSubmission().getName(), //
+                        comparison.similarity(), //
+                        getFilesForSubmission(comparison.getFirstSubmission()), //
+                        getFilesForSubmission(comparison.getSecondSubmission()), //
+                        convertMatchesToReportMatches(result, comparison, comparison.getMatches()) //
+                )));
         return comparisons;
     }
 
+    private static List<Match> convertMatchesToReportMatches(JPlagResult result, JPlagComparison comparison, List<de.jplag.Match> matches) {
+        return matches.stream().map(match -> convertMatchToReportMatch(comparison, match, result.getOptions().getLanguage().usesIndex()))
+                .collect(Collectors.toList());
+    }
+
     /**
      * Gets the names of all submissions.
      * @return A list containing all submission names.
@@ -162,18 +172,18 @@ public class ReportObjectFactory {
     private static Match convertMatchToReportMatch(JPlagComparison comparison, de.jplag.Match match, Boolean usesIndex) {
         TokenList tokensFirst = comparison.getFirstSubmission().getTokenList();
         TokenList tokensSecond = comparison.getSecondSubmission().getTokenList();
-        Token startFirstToken = tokensFirst.getToken(match.getStartOfFirst());
-        Token endFirstToken = tokensFirst.getToken(match.getStartOfFirst() + match.getLength() - 1);
-        Token startSecondToken = tokensSecond.getToken(match.getStartOfSecond());
-        Token endSecondToken = tokensSecond.getToken(match.getStartOfSecond() + match.getLength() - 1);
-
-        int startFirst = usesIndex ? startFirstToken.getIndex() : startFirstToken.getLine();
-        int endFirst = usesIndex ? endFirstToken.getIndex() : endFirstToken.getLine();
-        int startSecond = usesIndex ? startSecondToken.getIndex() : startSecondToken.getLine();
-        int endSecond = usesIndex ? endSecondToken.getIndex() : endSecondToken.getLine();
+        Token startTokenFirst = tokensFirst.getToken(match.getStartOfFirst());
+        Token endTokenFirst = tokensFirst.getToken(match.getStartOfFirst() + match.getLength() - 1);
+        Token startTokenSecond = tokensSecond.getToken(match.getStartOfSecond());
+        Token endTokenSecond = tokensSecond.getToken(match.getStartOfSecond() + match.getLength() - 1);
+
+        int startFirst = usesIndex ? startTokenFirst.getIndex() : startTokenFirst.getLine();
+        int endFirst = usesIndex ? endTokenFirst.getIndex() : endTokenFirst.getLine();
+        int startSecond = usesIndex ? startTokenSecond.getIndex() : startTokenSecond.getLine();
+        int endSecond = usesIndex ? endTokenSecond.getIndex() : endTokenSecond.getLine();
         int tokens = match.getLength();
 
-        return new Match(startFirstToken.file, startSecondToken.file, startFirst, endFirst, startSecond, endSecond, tokens);
+        return new Match(startTokenFirst.file, startTokenSecond.file, startFirst, endFirst, startSecond, endSecond, tokens);
     }
 
     // TODO implement after PR Readd clustering #281

+ 1 - 1
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/Cluster.java

@@ -10,7 +10,7 @@ public class Cluster {
     public Cluster(float average_similarity, float strength, List<String> members) {
         this.average_similarity = average_similarity;
         this.strength = strength;
-        this.members = members;
+        this.members = List.copyOf(members);
     }
 
     public float getAverage_similarity() {

+ 8 - 32
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/ComparisonReport.java

@@ -4,12 +4,12 @@ import java.util.List;
 
 public class ComparisonReport {
 
-    private String first_submission_id;
-    private String second_submission_id;
-    private float match_percentage;
-    private List<FilesOfSubmission> files_of_first_submission;
-    private List<FilesOfSubmission> files_of_second_submission;
-    private List<Match> matches;
+    private final String first_submission_id;
+    private final String second_submission_id;
+    private final float match_percentage;
+    private final List<FilesOfSubmission> files_of_first_submission;
+    private final List<FilesOfSubmission> files_of_second_submission;
+    private final List<Match> matches;
 
     public ComparisonReport(String first_submission_id, String second_submission_id, float match_percentage,
             List<FilesOfSubmission> files_of_first_submission, List<FilesOfSubmission> files_of_second_submission, List<Match> matches) {
@@ -17,8 +17,8 @@ public class ComparisonReport {
         this.first_submission_id = first_submission_id;
         this.second_submission_id = second_submission_id;
         this.match_percentage = match_percentage;
-        this.files_of_first_submission = files_of_first_submission;
-        this.files_of_second_submission = files_of_second_submission;
+        this.files_of_first_submission = List.copyOf(files_of_first_submission);
+        this.files_of_second_submission = List.copyOf(files_of_second_submission);
         this.matches = matches;
     }
 
@@ -45,28 +45,4 @@ public class ComparisonReport {
     public List<Match> getMatches() {
         return matches;
     }
-
-    public void setFirst_submission_id(String first_submission_id) {
-        this.first_submission_id = first_submission_id;
-    }
-
-    public void setSecond_submission_id(String second_submission_id) {
-        this.second_submission_id = second_submission_id;
-    }
-
-    public void setMatch_percentage(float match_percentage) {
-        this.match_percentage = match_percentage;
-    }
-
-    public void setFiles_of_first_submission(List<FilesOfSubmission> files_of_first_submission) {
-        this.files_of_first_submission = files_of_first_submission;
-    }
-
-    public void setFiles_of_second_submission(List<FilesOfSubmission> files_of_second_submission) {
-        this.files_of_second_submission = files_of_second_submission;
-    }
-
-    public void setMatches(List<Match> matches) {
-        this.matches = matches;
-    }
 }

+ 3 - 10
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/FilesOfSubmission.java

@@ -4,12 +4,12 @@ import java.util.List;
 
 public class FilesOfSubmission {
 
-    private String file_name;
-    private List<String> lines;
+    private final String file_name;
+    private final List<String> lines;
 
     public FilesOfSubmission(String file_name, List<String> file_code) {
         this.file_name = file_name;
-        this.lines = file_code;
+        this.lines = List.copyOf(file_code);
     }
 
     public String getFile_name() {
@@ -20,11 +20,4 @@ public class FilesOfSubmission {
         return lines;
     }
 
-    public void setFile_name(String file_name) {
-        this.file_name = file_name;
-    }
-
-    public void setLines(List<String> lines) {
-        this.lines = lines;
-    }
 }

+ 1 - 1
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/JPlagReport.java

@@ -8,7 +8,7 @@ public class JPlagReport {
 
     public JPlagReport(OverviewReport overviewReport, List<ComparisonReport> comparisons) {
         this.overviewReport = overviewReport;
-        this.comparisons = comparisons;
+        this.comparisons = List.copyOf(comparisons);
     }
 
     public OverviewReport getOverviewReport() {

+ 7 - 36
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/Match.java

@@ -2,17 +2,16 @@ package de.jplag.reportingV2.reportobject.model;
 
 public class Match {
 
-    private String first_file_name;
-    private String second_file_name;
-    private int start_in_first;
-    private int end_in_first;
-    private int start_in_second;
-    private int end_in_second;
-    private int tokens;
+    private final String first_file_name;
+    private final String second_file_name;
+    private final int start_in_first;
+    private final int end_in_first;
+    private final int start_in_second;
+    private final int end_in_second;
+    private final int tokens;
 
     public Match(String first_file_name, String second_file_name, int start_in_first, int end_in_first, int start_in_second, int end_in_second,
             int tokens) {
-
         this.first_file_name = first_file_name;
         this.second_file_name = second_file_name;
         this.start_in_first = start_in_first;
@@ -49,32 +48,4 @@ public class Match {
     public int getTokens() {
         return tokens;
     }
-
-    public void setFirst_file_name(String first_file_name) {
-        this.first_file_name = first_file_name;
-    }
-
-    public void setSecond_file_name(String second_file_name) {
-        this.second_file_name = second_file_name;
-    }
-
-    public void setStart_in_first(int start_in_first) {
-        this.start_in_first = start_in_first;
-    }
-
-    public void setEnd_in_first(int end_in_first) {
-        this.end_in_first = end_in_first;
-    }
-
-    public void setStart_in_second(int start_in_second) {
-        this.start_in_second = start_in_second;
-    }
-
-    public void setEnd_in_second(int end_in_second) {
-        this.end_in_second = end_in_second;
-    }
-
-    public void setTokens(int tokens) {
-        this.tokens = tokens;
-    }
 }

+ 2 - 2
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/Metric.java

@@ -11,8 +11,8 @@ public class Metric {
     public Metric(String name, float threshold, List<Integer> distribution, List<TopComparison> topComparisons) {
         this.name = name;
         this.threshold = threshold;
-        this.distribution = distribution;
-        this.topComparisons = topComparisons;
+        this.distribution = List.copyOf(distribution);
+        this.topComparisons = List.copyOf(topComparisons);
     }
 
     public String getName() {

+ 7 - 7
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/OverviewReport.java

@@ -105,19 +105,19 @@ public class OverviewReport {
     }
 
     public void setFile_extensions(List<String> file_extensions) {
-        this.file_extensions = file_extensions;
+        this.file_extensions = List.copyOf(file_extensions);
     }
 
     public void setSubmission_ids(List<String> submission_ids) {
-        this.submission_ids = submission_ids;
+        this.submission_ids = List.copyOf(submission_ids);
     }
 
     public void setFailed_submission_names(List<String> failed_submission_names) {
-        this.failed_submission_names = failed_submission_names;
+        this.failed_submission_names = List.copyOf(failed_submission_names);
     }
 
     public void setExcluded_files(List<String> excluded_files) {
-        this.excluded_files = excluded_files;
+        this.excluded_files = List.copyOf(excluded_files);
     }
 
     public void setMatch_sensitivity(int match_sensitivity) {
@@ -133,14 +133,14 @@ public class OverviewReport {
     }
 
     public void setComparison_names(List<String> comparison_names) {
-        this.comparison_names = comparison_names;
+        this.comparison_names = List.copyOf(comparison_names);
     }
 
     public void setMetrics(List<Metric> metrics) {
-        this.metrics = metrics;
+        this.metrics = List.copyOf(metrics);
     }
 
     public void setClusters(List<Cluster> clusters) {
-        this.clusters = clusters;
+        this.clusters = List.copyOf(clusters);
     }
 }

+ 3 - 14
jplag/src/main/java/de/jplag/reportingV2/reportobject/model/TopComparison.java

@@ -2,9 +2,9 @@ package de.jplag.reportingV2.reportobject.model;
 
 public class TopComparison {
 
-    private String first_submission;
-    private String second_submission;
-    private float match_percentage;
+    private final String first_submission;
+    private final String second_submission;
+    private final float match_percentage;
 
     public TopComparison(String first_submission, String second_submission, float match_percentage) {
         this.first_submission = first_submission;
@@ -24,15 +24,4 @@ public class TopComparison {
         return match_percentage;
     }
 
-    public void setFirst_submission(String first_submission) {
-        this.first_submission = first_submission;
-    }
-
-    public void setSecond_submission(String second_submission) {
-        this.second_submission = second_submission;
-    }
-
-    public void setMatch_percentage(float match_percentage) {
-        this.match_percentage = match_percentage;
-    }
 }