package de.hpi.ddm; import com.beust.jcommander.JCommander; import com.beust.jcommander.ParameterException; import de.hpi.ddm.configuration.CommandMaster; import de.hpi.ddm.configuration.CommandSlave; import de.hpi.ddm.configuration.ConfigurationSingleton; public class Main { public static void main(String[] args) throws Exception { CommandMaster commandMaster = new CommandMaster(); CommandSlave commandSlave = new CommandSlave(); JCommander jCommander = JCommander.newBuilder() .addCommand(MasterSystem.MASTER_ROLE, commandMaster) .addCommand(SlaveSystem.SLAVE_ROLE, commandSlave) .build(); try { jCommander.parse(args); if (jCommander.getParsedCommand() == null) throw new ParameterException("No command given."); switch (jCommander.getParsedCommand()) { case MasterSystem.MASTER_ROLE: ConfigurationSingleton.get().update(commandMaster); MasterSystem.start(); break; case SlaveSystem.SLAVE_ROLE: ConfigurationSingleton.get().update(commandSlave); SlaveSystem.start(); break; default: throw new AssertionError(); } } catch (ParameterException e) { System.out.printf("Could not parse args: %s\n", e.getMessage()); if (jCommander.getParsedCommand() == null) { jCommander.usage(); } else { jCommander.usage(jCommander.getParsedCommand()); } System.exit(1); } } }