public static void main(String... args) throws Exception { if (args.length == 0) { usage(); return; } // check the first args if (!CMDS.contains(args[0])) { usage(); return; } HistPriceDownloader d = new HistPriceDownloader(); String startMsg = "Starting to {0} hist price data..."; String endMsg = "{0} hist price data completed successfully."; for (int i = 0; i < args.length; i++) { String cmd = args[i]; logger.log(Level.INFO, startMsg, cmd); if (cmd.equals("truncate")) { if (++i >= args.length) { usage(); return; } Date date = TimeUtils.parseIsoDate(args[i]); d.truncate(date); break; } Set<Symbol> symbols = getSymbols(args, i); if (cmd.equals("clean")) { d.clean(); } else if (cmd.equals("download")) { d.download(symbols); } else if (cmd.equals("load")) { d.load(symbols); } else if (cmd.equals("update")) { d.update(symbols); } i += symbols.size(); logger.log(Level.INFO, endMsg, cmd); } }