package edu.cmu.sphinx.demo; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Map; import java.util.TreeMap; import edu.cmu.sphinx.demo.aligner.AlignerDemo; import edu.cmu.sphinx.demo.dialog.DialogDemo; import edu.cmu.sphinx.demo.speakerid.SpeakerIdentificationDemo; import edu.cmu.sphinx.demo.transcriber.TranscriberDemo; import static java.util.Arrays.copyOfRange; public class DemoRunner { static final Class<?>[] paramTypes = new Class<?>[] {String[].class}; private static final Map<String, Class<?>> classes = new TreeMap<String, Class<?>>(); static { classes.put("aligner", AlignerDemo.class); classes.put("dialog", DialogDemo.class); classes.put("speakerid", SpeakerIdentificationDemo.class); classes.put("transcriber", TranscriberDemo.class); } public static void printUsage() { System.err.println("Usage: DemoRunner <DEMO> [<ARG> ...]\n"); System.err.println("Demo names:"); for (String name : classes.keySet()) System.err.println(" " + name); } public static void main(String[] args) throws Throwable { if (0 == args.length || !classes.containsKey(args[0])) { printUsage(); System.exit(1); } try { Method main = classes.get(args[0]).getMethod("main", paramTypes); main.invoke(null, new Object[]{copyOfRange(args, 1, args.length)}); } catch (InvocationTargetException e) { throw e.getCause(); } } }