1 package us.codecraft.webmagic.scripts;
2
3
4 import java.io.FileInputStream;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.nio.charset.Charset;
8 import org.apache.commons.io.IOUtils;
9
10 import us.codecraft.webmagic.scripts.languages.Javascript;
11 import us.codecraft.webmagic.scripts.languages.Language;
12
13
14
15
16
17
18 public class ScriptProcessorBuilder {
19
20 private static final Language DefaultLanguage = new Javascript();
21
22 private Language language = DefaultLanguage;
23
24 private String script;
25
26 private int threadNum = 1;
27
28 private ScriptProcessorBuilder() {
29 }
30
31 public static ScriptProcessorBuilder custom() {
32 return new ScriptProcessorBuilder();
33 }
34
35 public ScriptProcessorBuilder language(Language language) {
36 this.language = language;
37 return this;
38 }
39
40 public ScriptProcessorBuilder scriptFromFile(String fileName) {
41 try {
42 InputStream resourceAsStream = new FileInputStream(fileName);
43 this.script = IOUtils.toString(resourceAsStream, Charset.defaultCharset());
44 } catch (IOException e) {
45 throw new IllegalArgumentException(e);
46 }
47 return this;
48 }
49
50 public ScriptProcessorBuilder scriptFromClassPathFile(String fileName) {
51 try {
52 InputStream resourceAsStream = ScriptProcessor.class.getClassLoader().getResourceAsStream(fileName);
53 this.script = IOUtils.toString(resourceAsStream, Charset.defaultCharset());
54 } catch (IOException e) {
55 throw new IllegalArgumentException(e);
56 }
57 return this;
58 }
59
60 public ScriptProcessorBuilder script(String script) {
61 this.script = script;
62 return this;
63 }
64
65 public ScriptProcessorBuilder thread(int threadNum) {
66 this.threadNum = threadNum;
67 return this;
68 }
69
70 public ScriptProcessor build(){
71 return new ScriptProcessor(language,script,threadNum);
72 }
73
74 }