/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.pieshare.service.commandParser; import javax.annotation.PostConstruct; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentAction; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.MutuallyExclusiveGroup; import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; import net.sourceforge.argparse4j.inf.Subparsers; import org.pieshare.service.commandParser.ActionExit; import org.pieshare.service.commandParser.ActionLogin; import org.pieshare.service.commandParser.IAction; import org.pieshare.service.commandParser.ICommandParserService; import org.pieshare.service.pieception.IPieceptionService; /** * * @author vauvenal5 */ public class Argparse4jService implements ICommandParserService { private ArgumentParser parser; private IAction actionExit; private IAction actionLogin; public Argparse4jService() { this.parser = ArgumentParsers.newArgumentParser("pieshare"); } @PostConstruct public void postArgparse4jService() { //TODO: change fixed names like "username" and "exit" to be looked up in the database! Subparsers parsers = this.parser.addSubparsers(); Subparser parser = parsers.addParser("exit").setDefault("func", this.actionExit); parser = parsers.addParser("login").setDefault("func", this.actionLogin); parser.addArgument("username").type(String.class); } @Override public void parseArgs(String[] args) throws Exception { Namespace n = parser.parseArgs(args); ((IAction)n.get("func")).doAction(n.getAttrs()); } @Override public void setActionExit(IAction action) { this.actionExit = action; } @Override public void setActionLogin(IAction action) { this.actionLogin = action; } }