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.LinkedHashMap;
- 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"});
- if(!validateArgs(parsedArgs, rules, true, true))
- return;
- for(Map.Entry<String, List<String>> arg: parsedArgs.entrySet()) {
- System.out.println(arg.getKey());
- if(arg.getValue() != null)
- 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 LinkedHashMap<String, List<String>>();
- List<String> params = null;
- for(String arg: args)
- if(arg.startsWith("-"))
- result.put(arg, params = new ArrayList<String>());
- else if(params != null)
- params.add(arg);
- else
- result.put(arg, null);
- return result;
- }
- public static Boolean validateArgs(Map<String, List<String>> args, Map<String, String[]> rules, Boolean anonArgs, Boolean aLeastOne) {
- Boolean result = true;
- if(aLeastOne && args.isEmpty())
- System.err.println("E necessario ao menos um argumento!");
- for(Map.Entry<String, List<String>> arg: args.entrySet()) {
- String[] params = rules.get(arg.getKey());
- if(rules.containsKey(arg.getKey())) {
- if(params != null && (arg.getValue() == null || arg.getValue().size() != params.length)) {
- String Msg = String.format("O argumento <%s> espera %d parametro(s).\nModo de uso: <%s>"
- , arg.getKey(), params.length, arg.getKey());
- for(String str: params)
- Msg += " <" + str + ">";
- System.err.println(Msg);
- result = false;
- }
- } else if(arg.getValue() != null || !anonArgs) {
- System.err.println(String.format("Argumento desconhecido <%s>", arg.getKey()));
- result = false;
- }
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement