package org.atomhopper.server; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AtomHopperServer { private static final Logger LOG = LoggerFactory.getLogger(AtomHopperServer.class); private static final int MAX_PORT_NUMBER = 49150; private static final int MIN_PORT_NUMBER = 1024; private AtomHopperServer(){} public static void main(String[] args) { CommandLineArguments commandLineArgs = new CommandLineArguments(); CmdLineParser cmdLineParser = new CmdLineParser(commandLineArgs); AtomHopperServerControl serverControl = new AtomHopperServerControl(commandLineArgs); try { cmdLineParser.parseArgument(args); } catch (CmdLineException e) { displayUsage(cmdLineParser, e); return; } if ((!(portIsInRange(commandLineArgs.port))) || (!(portIsInRange(commandLineArgs.stopport)))) { LOG.info("Invalid Atom Hopper port setting, use a value between 1024 and 49150"); return; } if (commandLineArgs.action.equalsIgnoreCase(CommandLineArguments.ACTION_START)) { serverControl.startAtomHopper(); } if (commandLineArgs.action.equalsIgnoreCase(CommandLineArguments.ACTION_STOP)) { serverControl.stopAtomHopper(); } } private static void displayUsage(CmdLineParser cmdLineParser, Exception e) { System.err.println(e.getMessage()); System.err.println("java -jar AtomHopperServer.jar [options...] arguments..."); cmdLineParser.printUsage(System.err); } private static boolean portIsInRange(int portNum) { return (portNum <= MAX_PORT_NUMBER) && (portNum >= MIN_PORT_NUMBER); } }