View Javadoc

1   // BSD License (http://www.galagosearch.org/license)
2    
3   package org.galagosearch.tupleflow.execution;
4   
5   import org.galagosearch.tupleflow.Utility;
6   import java.util.Arrays;
7   
8   /***
9    *
10   * @author trevor
11   */
12  public class StageExecutorFactory {
13      public static StageExecutor newInstance(String name, String... args) {
14          if (name == null) {
15              name = "local";
16          }
17          name = name.toLowerCase();
18  
19          if (name.startsWith("class=")) {
20              String[] fields = name.split("=");
21              assert fields.length >= 2;
22              String className = fields[1];
23  
24              try {
25                  Class actual = Class.forName(className);
26                  return (StageExecutor) actual.newInstance();
27              } catch (Exception e) {
28                  return null;
29              }
30          } else if (name.startsWith("thread") || name.startsWith("local")) {
31              return new ThreadedStageExecutor();
32          } else if (name.startsWith("ssh")) {
33              return new SSHStageExecutor(args[0], Arrays.asList(Utility.subarray(args, 1)));
34          } else if (name.equals("remotedebug")) {
35              return new LocalRemoteStageExecutor();
36          } else {
37              return new LocalStageExecutor();
38          }
39      }
40  }