diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2016-08-06 22:57:40 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2016-08-06 22:57:40 +0300 |
| commit | 9bfa39305ba8611d2f41e2db7c278edfe6b21257 (patch) | |
| tree | 9124e7f14c1612a673116e31f4496e8f756038dc /src/main/com/jantuomi/tunkki/utils | |
| parent | 0f5331fe7448d935d783f927dcb870589bbb0c52 (diff) | |
Handle input and output differently on Windows and other systems
Create IOHandler interface
Create classes WindowsIOHandler and StandardIOHandler that implement IOHandler
Diffstat (limited to 'src/main/com/jantuomi/tunkki/utils')
| -rw-r--r-- | src/main/com/jantuomi/tunkki/utils/IO.java | 84 |
1 files changed, 72 insertions, 12 deletions
diff --git a/src/main/com/jantuomi/tunkki/utils/IO.java b/src/main/com/jantuomi/tunkki/utils/IO.java index 03e575c..88d1a5c 100644 --- a/src/main/com/jantuomi/tunkki/utils/IO.java +++ b/src/main/com/jantuomi/tunkki/utils/IO.java @@ -1,45 +1,105 @@ package com.jantuomi.tunkki.utils; import jline.console.ConsoleReader; +import org.apache.commons.lang3.SystemUtils; import java.io.IOException; import java.io.PrintWriter; +import java.util.Scanner; /** * Created by jan on 4.8.2016. */ public class IO { private static IO instance = new IO(); - private ConsoleReader reader; - private PrintWriter printer; + private IOHandler ioHandler; public static IO getInstance() { return instance; } private IO() { - try { - reader = new ConsoleReader(); - printer = new PrintWriter(System.out); - } catch (IOException e) { - e.printStackTrace(); + if (SystemUtils.IS_OS_WINDOWS) { + ioHandler = new WindowsIOHandler(); + } else { + ioHandler = new StandardIOHandler(); } - reader.setBellEnabled(false); - reader.setExpandEvents(false); } public String readLine(String promptMessage) throws IOException { System.out.print(promptMessage); - String line = reader.readLine(); + + String line = ioHandler.readLine(); return line.trim(); } public void printLine(String line) { - printer.println(line); + ioHandler.printLine(line); } public void flush() { - printer.flush(); + ioHandler.flush(); + } + + private class WindowsIOHandler implements IOHandler { + private Scanner scanner = new Scanner(System.in); + + @Override + public String readLine() { + return scanner.nextLine(); + } + + @Override + public void printLine(String line) { + System.out.println(line); + } + + @Override + public void flush() { + System.out.flush(); + } + } + + private class StandardIOHandler implements IOHandler { + private ConsoleReader reader; + private PrintWriter writer; + + public StandardIOHandler() { + try { + reader = new ConsoleReader(); + writer = new PrintWriter(System.out); + } catch (IOException e) { + e.printStackTrace(); + } + reader.setBellEnabled(false); + reader.setExpandEvents(false); + } + + @Override + public String readLine() { + try { + return reader.readLine(); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + @Override + public void printLine(String line) { + writer.println(line); + } + + @Override + public void flush() { + writer.flush(); + } + } + + private interface IOHandler { + String readLine(); + void printLine(String line); + void flush(); } } |
