Sfoglia il codice sorgente

Reduce Report Creation Class Complexity

Nesta Bentum 4 anni fa
parent
commit
0f94e761a9

+ 3 - 5
jplag.cli/src/main/java/de/jplag/CLI.java

@@ -27,8 +27,7 @@ import de.jplag.options.JPlagOptions;
 import de.jplag.options.LanguageOption;
 import de.jplag.options.SimilarityMetric;
 import de.jplag.options.Verbosity;
-import de.jplag.reporting.JsonReport;
-import de.jplag.reporting.Report;
+import de.jplag.reporting.reportobject.ReportObjectFactory;
 import de.jplag.strategy.ComparisonMode;
 
 /**
@@ -65,9 +64,8 @@ public final class CLI {
             JPlag program = new JPlag(options);
             logger.info("JPlag initialized");
             JPlagResult result = program.run();
-            Report report = new JsonReport();
-            report.saveReport(result, arguments.getString(RESULT_FOLDER.flagWithoutDash()));
-            finalizeLogger();
+            ReportObjectFactory.createAndSaveReport(result, arguments.getString(RESULT_FOLDER.flagWithoutDash()));
+
         } catch (ExitException exception) {
             logger.error(exception.getMessage(), exception);
             finalizeLogger();

+ 0 - 25
jplag/src/main/java/de/jplag/reporting/JsonReport.java

@@ -1,25 +0,0 @@
-package de.jplag.reporting;
-
-import java.io.File;
-
-import de.jplag.JPlagResult;
-import de.jplag.reporting.reportobject.ReportObjectFactory;
-
-/**
- * A report generator which reports the JPlagResult in Json format.
- */
-public class JsonReport implements Report {
-
-    @Override
-    public void saveReport(JPlagResult result, String path) {
-        File directory = new File(path);
-        if (!directory.exists()) {
-            if (!directory.mkdirs()) {
-                logger.error("Failed to create dir.");
-            }
-        }
-        ReportObjectFactory.saveReport(result, path);
-
-    }
-
-}

+ 0 - 21
jplag/src/main/java/de/jplag/reporting/Report.java

@@ -1,21 +0,0 @@
-package de.jplag.reporting;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import de.jplag.JPlagResult;
-
-/**
- * Strategy interface for reporting. A report generator should implement this interface.
- */
-public interface Report {
-
-    Logger logger = LoggerFactory.getLogger(Report.class);
-
-    /**
-     * Creates and saves JPlag report files to the disk.
-     * @param result The result of a JPlag comparison.
-     * @param path Path to the directory where the report should be saved.
-     */
-    void saveReport(JPlagResult result, String path);
-}

+ 16 - 12
jplag/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java

@@ -32,16 +32,30 @@ public class ReportObjectFactory {
     private static final FileWriter fileWriter = new FileWriter();
 
     /**
-     * @return JPlagReport for the given JPlagResult.
      * @param result The JPlagResult to be converted into a report.
      * @param path The Path to save the report to
      */
-    public static void saveReport(JPlagResult result, String path) {
+    public static void createAndSaveReport(JPlagResult result, String path) {
+        createDirectory(path);
         writeOverview(result, path);
         copySubmissionFilesToReport(path, result);
         comparisonReportMapper.writeComparisonReports(result, path);
     }
 
+    private static File createDirectory(String path, String name) {
+        File directory = new File(path.concat("/").concat(name));
+        if (!directory.exists()) {
+            if (!directory.mkdirs()) {
+                logger.error("Failed to create dir.");
+            }
+        }
+        return directory;
+    }
+
+    private static void createDirectory(String path) {
+        createDirectory(path, "");
+    }
+
     private static void writeOverview(JPlagResult result, String path) {
         List<JPlagComparison> comparisons = getComparisons(result);
         OverviewReport overviewReport = new OverviewReport();
@@ -94,16 +108,6 @@ public class ReportObjectFactory {
         return submissions;
     }
 
-    private static File createDirectory(String path, String name) {
-        File directory = new File(path.concat("/").concat(name));
-        if (!directory.exists()) {
-            if (!directory.mkdirs()) {
-                logger.error("Failed to create dir.");
-            }
-        }
-        return directory;
-    }
-
     private static List<JPlagComparison> getComparisons(JPlagResult result) {
         int numberOfComparisons = result.getOptions().getMaximumNumberOfComparisons();
         return result.getComparisons(numberOfComparisons);