|
|
@@ -1,6 +1,6 @@
|
|
|
package de.jplag.reporting.reportobject;
|
|
|
|
|
|
-import static de.jplag.reporting.jsonfactory.DirectoryCreator.createDirectory;
|
|
|
+import static de.jplag.reporting.jsonfactory.DirectoryManager.*;
|
|
|
import static de.jplag.reporting.reportobject.mapper.SubmissionNameToIdMapper.buildSubmissionNameToIdMap;
|
|
|
|
|
|
import java.io.File;
|
|
|
@@ -41,26 +41,37 @@ public class ReportObjectFactory {
|
|
|
private Map<String, Map<String, String>> submissionNameToNameToComparisonFileName;
|
|
|
|
|
|
/**
|
|
|
- * Creates all necessary report viewer files and writes them to the disk.
|
|
|
+ * Creates all necessary report viewer files, writes them to the disk as zip.
|
|
|
* @param result The JPlagResult to be converted into a report.
|
|
|
* @param path The Path to save the report to
|
|
|
*/
|
|
|
public void createAndSaveReport(JPlagResult result, String path) {
|
|
|
|
|
|
- buildSubmissionToIdMap(result);
|
|
|
try {
|
|
|
createDirectory(path);
|
|
|
+ buildSubmissionToIdMap(result);
|
|
|
+
|
|
|
copySubmissionFilesToReport(path, result);
|
|
|
|
|
|
writeComparisons(result, path);
|
|
|
writeOverview(result, path);
|
|
|
|
|
|
+ zipAndDelete(path);
|
|
|
} catch (IOException e) {
|
|
|
logger.error("Could not create directory " + path + " for report viewer generation", e);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private void zipAndDelete(String path) {
|
|
|
+ boolean zipWasSuccessful = zipDirectory(path);
|
|
|
+ if (zipWasSuccessful) {
|
|
|
+ deleteDirectory(path);
|
|
|
+ } else {
|
|
|
+ logger.error("Could not zip results. The results are still available uncompressed at " + path);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void buildSubmissionToIdMap(JPlagResult result) {
|
|
|
submissionNameToIdMap = buildSubmissionNameToIdMap(result);
|
|
|
submissionToIdFunction = (Submission submission) -> submissionNameToIdMap.get(submission.getName());
|
|
|
@@ -68,19 +79,19 @@ public class ReportObjectFactory {
|
|
|
|
|
|
private void copySubmissionFilesToReport(String path, JPlagResult result) {
|
|
|
List<JPlagComparison> comparisons = result.getComparisons(result.getOptions().getMaximumNumberOfComparisons());
|
|
|
- var submissions = getSubmissions(comparisons);
|
|
|
- var submissionsPath = createSubmissionsDirectory(path);
|
|
|
+ Set<Submission> submissions = getSubmissions(comparisons);
|
|
|
+ File submissionsPath = createSubmissionsDirectory(path);
|
|
|
if (submissionsPath == null) {
|
|
|
return;
|
|
|
}
|
|
|
Language language = result.getOptions().getLanguage();
|
|
|
- for (var submission : submissions) {
|
|
|
+ for (Submission submission : submissions) {
|
|
|
File directory = createSubmissionDirectory(path, submissionsPath, submission);
|
|
|
if (directory == null) {
|
|
|
continue;
|
|
|
}
|
|
|
- for (var file : submission.getFiles()) {
|
|
|
- var fileToCopy = language.useViewFiles() ? new File(file.getPath() + language.viewFileSuffix()) : file;
|
|
|
+ for (File file : submission.getFiles()) {
|
|
|
+ File fileToCopy = language.useViewFiles() ? new File(file.getPath() + language.viewFileSuffix()) : file;
|
|
|
try {
|
|
|
Files.copy(fileToCopy.toPath(), (new File(directory, file.getName())).toPath(), StandardCopyOption.REPLACE_EXISTING);
|
|
|
} catch (IOException e) {
|
|
|
@@ -141,7 +152,7 @@ public class ReportObjectFactory {
|
|
|
}
|
|
|
|
|
|
private Set<Submission> getSubmissions(List<JPlagComparison> comparisons) {
|
|
|
- var submissions = comparisons.stream().map(JPlagComparison::getFirstSubmission).collect(Collectors.toSet());
|
|
|
+ Set<Submission> submissions = comparisons.stream().map(JPlagComparison::getFirstSubmission).collect(Collectors.toSet());
|
|
|
Set<Submission> secondSubmissions = comparisons.stream().map(JPlagComparison::getSecondSubmission).collect(Collectors.toSet());
|
|
|
submissions.addAll(secondSubmissions);
|
|
|
return submissions;
|