1 package com.github.searls.jasmine.mojo;
2
3 import com.github.searls.jasmine.model.FileSystemReporter;
4 import com.github.searls.jasmine.model.Reporter;
5 import com.google.inject.Inject;
6 import org.apache.maven.plugin.MojoExecutionException;
7 import org.apache.maven.project.MavenProject;
8
9 import java.io.File;
10 import java.util.List;
11
12 public class ReporterRetriever {
13 public static final String STANDARD_REPORTER = "/lib/buildReport.js";
14 private static final String STANDARD_REPORTER_KEY = "STANDARD";
15
16 private static final String JUNIT_XML_FILENAME = "TEST-jasmine.xml";
17 private static final String JUNIT_XML_KEY = "JUNIT_XML";
18 public static final String JUNIT_XML_REPORTER = "lib/createJunitXml.js";
19
20 private final ResourceRetriever resourceRetriever;
21
22 @Inject
23 public ReporterRetriever(final ResourceRetriever resourceRetriever) {
24 this.resourceRetriever = resourceRetriever;
25 }
26
27 List<FileSystemReporter> retrieveFileSystemReporters(final List<FileSystemReporter> reporters, final File targetDirectory, final MavenProject mavenProject) throws MojoExecutionException {
28 if (reporters.isEmpty()) {
29 reporters.add(new FileSystemReporter(JUNIT_XML_FILENAME, JUNIT_XML_KEY));
30 }
31
32 for (FileSystemReporter reporter : reporters) {
33 if (JUNIT_XML_KEY.equals(reporter.reporterName)) {
34 reporter.reporterName = JUNIT_XML_REPORTER;
35 }
36 reporter.reporterFile = getReporter(reporter.reporterName, mavenProject);
37 reporter.file = new File(targetDirectory, reporter.fileName);
38 }
39
40 return reporters;
41 }
42
43 List<Reporter> retrieveReporters(final List<Reporter> reporters, final MavenProject mavenProject) throws MojoExecutionException {
44 if (reporters.isEmpty()) {
45 reporters.add(new Reporter(STANDARD_REPORTER_KEY));
46 }
47
48 for (Reporter reporter : reporters) {
49 if (STANDARD_REPORTER_KEY.equals(reporter.reporterName)) {
50 reporter.reporterName = STANDARD_REPORTER;
51 }
52 reporter.reporterFile = getReporter(reporter.reporterName, mavenProject);
53 }
54
55 return reporters;
56 }
57
58 private File getReporter(final String reporter, final MavenProject mavenProject) throws MojoExecutionException {
59 return resourceRetriever.getResourceAsFile("reporter", reporter, mavenProject);
60 }
61 }