1
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 }