Github user stefanobaghino commented on a diff in the pull request: https://github.com/apache/flink/pull/1536#discussion_r50399418 --- Diff: flink-examples/flink-examples-batch/src/main/java/org/apache/flink/examples/java/clustering/KMeans.java --- @@ -291,31 +297,54 @@ public Centroid map(Tuple3<Integer, Point, Long> value) { private static String centersPath = null; private static String outputPath = null; private static int numIterations = 10; - - private static boolean parseParameters(String[] programArguments) { - - if(programArguments.length > 0) { - // parse input arguments + + private static final Option POINTS_PATH_OPTION = + new Option("points").alt("P").help("The path to the input points"); + private static final Option CENTERS_PATH_OPTION = + new Option("centroids").alt("C").help("The path to the input centroids"); + private static final Option OUTPUT_PATH_OPTION = + new Option("output").alt("O").help("The path where the output will be written"); + private static final Option NUM_ITERATIONS_OPTION = + new Option("iterations").alt("I").help("The number of iteration performed by the K-Means algorithm"); + + private static boolean parseParameters(final ParameterTool params) throws RequiredParametersException { + + final RequiredParameters requiredParameters = new RequiredParameters(); + boolean parseStatus = false; + + requiredParameters.add(POINTS_PATH_OPTION); + requiredParameters.add(CENTERS_PATH_OPTION); + requiredParameters.add(OUTPUT_PATH_OPTION); + requiredParameters.add(NUM_ITERATIONS_OPTION); + + try { + requiredParameters.applyTo(params); + pointsPath = params.get(POINTS_PATH_OPTION.getName()); + centersPath = params.get(CENTERS_PATH_OPTION.getName()); + outputPath = params.get(OUTPUT_PATH_OPTION.getName()); + numIterations = params.getInt(NUM_ITERATIONS_OPTION.getName()); fileOutput = true; - if(programArguments.length == 4) { - pointsPath = programArguments[0]; - centersPath = programArguments[1]; - outputPath = programArguments[2]; - numIterations = Integer.parseInt(programArguments[3]); + parseStatus = true; + } catch (RequiredParametersException e) { + if (params.getNumberOfParameters() == 0) { + printRunWithDefaultParams(); + parseStatus = true; } else { - System.err.println("Usage: KMeans <points path> <centers path> <result path> <num iterations>"); - return false; + System.out.println(requiredParameters.getHelp(e.getMissingArguments())); } - } else { - System.out.println("Executing K-Means example with default parameters and built-in default data."); - System.out.println(" Provide parameters to read input data from files."); - System.out.println(" See the documentation for the correct format of input files."); - System.out.println(" We provide a data generator to create synthetic input files for this program."); - System.out.println(" Usage: KMeans <points path> <centers path> <result path> <num iterations>"); } - return true; + + return parseStatus; } - + + private static void printRunWithDefaultParams() { + System.out.println("Executing K-Means example with default parameters and built-in default data."); + System.out.println(" Provide parameters to read input data from files."); + System.out.println(" See the documentation for the correct format of input files."); + System.out.println(" We provide a data generator to create synthetic input files for this program."); + System.out.println(" Usage: KMeans <points path> <centers path> <result path> <num iterations>"); --- End diff -- Thanks for making me notice it, I'll fix it right away!
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---