Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Map;
- import java.util.HashMap;
- import java.util.List;
- import java.util.ArrayList;
- import java.util.InputMismatchException;
- public class ArgParser{
- public static void main(String[] args) {
- Map<String, List<String>> parsedArgs = ParseArgs(args);
- Map<String, String[]> rules = new HashMap<String, String[]>();
- rules.put("filmes", new String[]{"nome_ator1", "nome_ator2", "decada"});
- rules.put("episodios", new String[]{"nome_ator", "titulo_serie"});
- rules.put("generos", new String[]{"nome_ator"});
- ValidateArgs(parsedArgs, rules);
- for(Map.Entry<String, List<String>> arg: parsedArgs.entrySet()) {
- System.out.println(arg.getKey());
- for(String subArg: arg.getValue())
- System.out.println("\t" + subArg);
- }
- }
- public static Map<String, List<String>> ParseArgs(String[] args) {
- Map<String, List<String>> result = new HashMap<String, List<String>>();
- List<String> subArgs = null;
- for(String arg: args)
- if(arg.startsWith("-"))
- result.put(arg.substring(1), subArgs = new ArrayList<String>());
- else if(subArgs != null)
- subArgs.add(arg);
- else
- throw new IllegalArgumentException("Argumento Invalido!");
- return result;
- }
- public static void ValidateArgs(Map<String, List<String>> args, Map<String, String[]> rules) {
- for(Map.Entry<String, String[]> rule: rules.entrySet()) {
- List<String> subArgs = args.get(rule.getKey());
- String[] argNames = rule.getValue();
- if(subArgs == null || subArgs.size() != argNames.length) {
- String Msg = String.format("O parametro <%s> espera %d subargumentos.\nModo de uso: <-%s>"
- , rule.getKey(), argNames.length, rule.getKey());
- for(String str: argNames)
- Msg += " <" + str + ">";
- throw new InputMismatchException(Msg);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement