package cz.cuni.mff.d3s.been.client; import java.io.PrintWriter; import java.util.LinkedList; import java.util.List; import jline.console.ConsoleReader; import jline.console.completer.Completer; import jline.console.completer.StringsCompleter; import cz.cuni.mff.d3s.been.api.BeenApiException; import cz.cuni.mff.d3s.been.persistence.DAOException; /** * @author Martin Sixta * * WARNING: this code is in incubator phase * */ abstract class AbstractMode implements IMode { protected String prompt; protected String[] actions; protected ConsoleReader reader; protected PrintWriter out; @Override public String getPrompt() { return prompt; } @Override public String[] getActions() { return actions; } protected AbstractMode(ConsoleReader reader, String prompt, String[] actions) { this.prompt = prompt; this.actions = actions; setup(reader); } @Override public void setup(ConsoleReader reader) { this.reader = reader; out = new PrintWriter(reader.getOutput()); for (Completer completer : reader.getCompleters()) { reader.removeCompleter(completer); } List<Completer> completors = new LinkedList<>(); completors.add(new StringsCompleter(actions)); for (Completer c : completors) { reader.addCompleter(c); } reader.setPrompt(prompt); } @Override public IMode takeAction(String[] args) throws DAOException, BeenApiException { for (String arg : args) { out.println(arg); } return this; } }