1 package com.github.searls.jasmine.runner; 2 3 import com.github.searls.jasmine.config.JasmineConfiguration; 4 import com.github.searls.jasmine.io.IOUtilsWrapper; 5 import com.github.searls.jasmine.io.scripts.ScriptResolver; 6 import org.apache.commons.io.FileUtils; 7 8 import java.io.File; 9 import java.io.IOException; 10 11 public class HtmlGeneratorConfiguration { 12 private final String sourceEncoding; 13 private final ReporterType reporterType; 14 private final File customRunnerTemplate; 15 private final File customRunnerConfiguration; 16 private final IOUtilsWrapper ioUtilsWrapper; 17 private final SpecRunnerTemplate specRunnerTemplate; 18 private final ScriptResolver scriptResolver; 19 private final String srcDirectoryName; 20 private final String specDirectoryName; 21 private final int autoRefreshInterval; 22 private final boolean autoRefresh; 23 24 public HtmlGeneratorConfiguration(ReporterType reporterType, JasmineConfiguration configuration, ScriptResolver scriptResolver) throws IOException { 25 this(new IOUtilsWrapper(), reporterType, configuration, scriptResolver); 26 } 27 28 public HtmlGeneratorConfiguration(IOUtilsWrapper ioUtilsWrapper, ReporterType reporterType, JasmineConfiguration configuration, ScriptResolver scriptResolver) throws IOException { 29 this.ioUtilsWrapper = ioUtilsWrapper; 30 this.sourceEncoding = configuration.getSourceEncoding(); 31 this.reporterType = reporterType; 32 this.customRunnerTemplate = configuration.getCustomRunnerTemplate(); 33 this.specRunnerTemplate = configuration.getSpecRunnerTemplate(); 34 this.scriptResolver = scriptResolver; 35 this.customRunnerConfiguration = configuration.getCustomRunnerConfiguration(); 36 this.srcDirectoryName = configuration.getSrcDirectoryName(); 37 this.specDirectoryName = configuration.getSpecDirectoryName(); 38 this.autoRefreshInterval = configuration.getAutoRefreshInterval(); 39 this.autoRefresh = this.autoRefreshInterval > 0 && ReporterType.HtmlReporter.equals(reporterType); 40 } 41 42 public String getSourceEncoding() { 43 return this.sourceEncoding; 44 } 45 46 public ReporterType getReporterType() { 47 return this.reporterType; 48 } 49 50 public File getCustomRunnerTemplate() { 51 return this.customRunnerTemplate; 52 } 53 54 public String IOtoString(String defaultHtmlTemplatePath) throws IOException { 55 return this.ioUtilsWrapper.toString(defaultHtmlTemplatePath); 56 } 57 58 public String getRunnerTemplate() throws IOException { 59 if (this.getCustomRunnerTemplate() != null) { 60 return FileUtils.readFileToString(this.getCustomRunnerTemplate()); 61 } else { 62 SpecRunnerTemplate template = this.getSpecRunnerTemplate(); 63 if (template == null) { 64 template = SpecRunnerTemplate.DEFAULT; 65 } 66 return this.IOtoString(template.getTemplate()); 67 } 68 } 69 70 public SpecRunnerTemplate getSpecRunnerTemplate() { 71 return this.specRunnerTemplate; 72 } 73 74 public ScriptResolver getScriptResolver() { 75 return this.scriptResolver; 76 } 77 78 @Override 79 public boolean equals(Object o) { 80 if (this == o) return true; 81 if (o == null || this.getClass() != o.getClass()) return false; 82 83 HtmlGeneratorConfiguration that = (HtmlGeneratorConfiguration) o; 84 85 if (this.customRunnerTemplate != null ? !this.customRunnerTemplate.equals(that.customRunnerTemplate) : that.customRunnerTemplate != null) 86 return false; 87 if (this.reporterType != that.reporterType) return false; 88 if (this.sourceEncoding != null ? !this.sourceEncoding.equals(that.sourceEncoding) : that.sourceEncoding != null) 89 return false; 90 if (this.specRunnerTemplate != null ? !this.specRunnerTemplate.equals(that.specRunnerTemplate) : that.specRunnerTemplate != null) 91 return false; 92 93 return true; 94 } 95 96 @Override 97 public int hashCode() { 98 int result = this.sourceEncoding != null ? this.sourceEncoding.hashCode() : 0; 99 result = 31 * result + (this.reporterType != null ? this.reporterType.hashCode() : 0); 100 result = 31 * result + (this.customRunnerTemplate != null ? this.customRunnerTemplate.hashCode() : 0); 101 result = 31 * result + (this.specRunnerTemplate != null ? this.specRunnerTemplate.hashCode() : 0); 102 return result; 103 } 104 105 public String getCustomRunnerConfiguration() throws IOException { 106 return this.customRunnerConfiguration == null ? null : FileUtils.readFileToString(this.customRunnerConfiguration); 107 } 108 109 public String getSrcDirectoryName() { 110 return this.srcDirectoryName; 111 } 112 113 public String getSpecDirectoryName() { 114 return this.specDirectoryName; 115 } 116 117 public int getAutoRefreshInterval() { 118 return this.autoRefreshInterval; 119 } 120 121 public boolean getAutoRefresh() { 122 return this.autoRefresh; 123 } 124 } 125 126