package com.cloudera.sa.hcu.io.route;
import java.io.File;
import java.io.FileInputStream;
import java.lang.reflect.Constructor;
import java.util.HashSet;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.regex.Pattern;
import com.cloudera.sa.hcu.io.route.scheduler.IRouteWorker;
public class RouteMain
{
public static final String CONF_ROOT_ROUTES = "route.";
public static void main(String[] args) throws Exception
{
if (args.length < 1)
{
System.out.println("Route Help:");
System.out.println("Parameters: <propertyFilePath>");
System.out.println();
return;
}
Properties p = new Properties();
p.load(new FileInputStream(new File(args[0])));
Pattern pattern = Pattern.compile("\\.");
for (Entry<Object, Object> entry: p.entrySet())
{
String[] keySplit = pattern.split(entry.getKey().toString());
if (keySplit.length == 2)
{
if (keySplit[0].equals("route"))
{
String routePrefix = keySplit[0] + "." + keySplit[1];
String routeClass = entry.getValue().toString();
try
{
Constructor constructor = Class.forName(routeClass).getConstructor(String.class, Properties.class);
IRouteWorker route = (IRouteWorker)constructor.newInstance(routePrefix, p);
route.start();
}catch(Exception e)
{
throw new RuntimeException(routePrefix + " value of '" + routeClass + "' was unable to construct into a " + IRouteWorker.class.getName(), e);
}
}
}
}
}
}