aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2016-08-06 22:57:40 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2016-08-06 22:57:40 +0300
commit9bfa39305ba8611d2f41e2db7c278edfe6b21257 (patch)
tree9124e7f14c1612a673116e31f4496e8f756038dc /src
parent0f5331fe7448d935d783f927dcb870589bbb0c52 (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')
-rw-r--r--src/main/com/jantuomi/tunkki/utils/IO.java84
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();
}
}