package net.mms_projects.copy_it.ui.interactive_shell; import net.mms_projects.copy_it.ui.interactive_shell.commands.CopyIt; import net.mms_projects.copy_it.ui.interactive_shell.commands.PasteIt; import net.mms_projects.irc.channel_bots.pb.CommandHandler; import net.mms_projects.irc.channel_bots.pb.commands.Help; import java.io.*; public class Shell { private String prompt; private InputStream inputStream; private OutputStream outputStream; private CommandHandler commandHandler; public CommandHandler getCommandHandler() { return commandHandler; } public void setCommandHandler(CommandHandler commandHandler) { this.commandHandler = commandHandler; } public Shell(InputStream inputStream, OutputStream outputStream, CommandHandler commandHandler) { this.setInputStream(inputStream); this.setOutputStream(outputStream); this.setCommandHandler(commandHandler); } public String getPrompt() { return prompt; } public void setPrompt(String prompt) { this.prompt = prompt; } public InputStream getInputStream() { return inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } public OutputStream getOutputStream() { return outputStream; } public void setOutputStream(OutputStream outputStream) { this.outputStream = outputStream; } public void loop() { PrintStream printStream = new PrintStream(this.outputStream); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(this.inputStream)); printStream.print(this.getPrompt()); try { String line = null; while ((line = bufferedReader.readLine()) != null) { boolean handled = commandHandler.handle(line); if (!handled) { printStream.println("Unknown command"); } printStream.print(this.getPrompt()); } } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } }