001    package org.ujmp.core.util;
002    
003    import java.io.PrintStream;
004    
005    import org.ujmp.core.util.io.RingBufferOutputStream;
006    import org.ujmp.core.util.io.TeeStream;
007    
008    public class ConsoleUtil {
009    
010            private static int systemOutBufferSize = 1024 * 1024;
011    
012            private static int systemErrBufferSize = 1024 * 1024;
013    
014            private static final PrintStream systemOut = System.out;
015    
016            private static final PrintStream systemErr = System.err;
017    
018            private static RingBufferOutputStream out = new RingBufferOutputStream(systemOutBufferSize);
019    
020            private static RingBufferOutputStream err = new RingBufferOutputStream(systemErrBufferSize);
021    
022            public static void startRecordSystemOut() {
023                    System.setOut(new TeeStream(System.out, out));
024            }
025    
026            public static void startRecordSystemErr() {
027                    System.setErr(new TeeStream(System.err, err));
028            }
029    
030            public static void stopRecordSystemOut() {
031                    System.setOut(systemOut);
032            }
033    
034            public static void stopRecordSystemErr() {
035                    System.setErr(systemErr);
036            }
037    
038            public static String getSystemOut() {
039                    return out.toString();
040            }
041    
042            public static String getSystemErr() {
043                    return err.toString();
044            }
045    }