package com.plectix.simulator.util.io; import java.io.PrintStream; import java.util.LinkedList; import java.util.List; public class BackingUpPrintStream extends PrintStream { public List<String> content = new LinkedList<String>(); private StringBuffer currentLine = new StringBuffer(); public BackingUpPrintStream() { super(System.out); } @Override public void println() { flushBuffer(); } @Override public void println(String s) { print(s); println(); } private void trimBuffer() { String[] words = currentLine.toString().split("\n"); for (int i = 0; i < words.length - 1; i++) { this.println(words[i]); } currentLine = new StringBuffer(words[words.length - 1]); } private void flushBuffer() { addWord(currentLine.toString()); currentLine = new StringBuffer(); } public void addWord(String s) { if (!s.trim().isEmpty()) { content.add(s.trim()); } } @Override public void print(String s) { currentLine.append(s); trimBuffer(); } public String getContentItem(int index) { if (index < content.size()) { return content.get(index); } else { return null; } } public final boolean hasEqualContent(BackingUpPrintStream stream2) { return this.content.equals(stream2.content); } }