View Javadoc
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   * @author code4crafter@gmail.com
16   * @since 0.4.1
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  }