import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class ArgumentParser {
/**
* Parses command-line arguments with retry logic.
* @param args Command-line arguments.
* @param config A map containing configuration parameters for retry.
* @return A map containing the parsed arguments and their values.
* @throws IllegalArgumentException If args is null.
*/
public static Map<String, String> parseArguments(String[] args, Map<String, Integer> config) {
if (args == null) {
throw new IllegalArgumentException("Arguments cannot be null.");
}
Map<String, String> parsedArgs = new HashMap<>();
Map<String, Integer> retryConfig = new HashMap<>(config); //avoid modifying original config
for (int i = 0; i < args.length; i++) {
String arg = args[i];
if (arg.startsWith("--")) {
String paramName = arg.substring(2); // Remove "--" prefix
if (i + 1 < args.length) {
String paramValue = args[i + 1];
parsedArgs.put(paramName, paramValue);
i++; // Skip the value argument
} else {
throw new IllegalArgumentException("Missing value for parameter: " + paramName);
}
}
}
return parsedArgs;
}
public static void main(String[] args) {
//Example Usage
Map<String, Integer> retryConfig = new HashMap<>();
retryConfig.put("maxRetries", 3);
retryConfig.put("retryDelay", 1000); // milliseconds
String[] commandLineArgs = {"--name", "John Doe", "--age", "30", "--city", "New York"};
try {
Map<String, String> parsedArgs = parseArguments(commandLineArgs, retryConfig);
System.out.println(parsedArgs);
} catch (IllegalArgumentException e) {
System.err.println("Error: " + e.getMessage());
}
}
}
Add your comment