001package org.kuali.common.util.inform;
002
003import java.io.PrintStream;
004
005import org.kuali.common.util.Assert;
006import org.kuali.common.util.log.LogMsg;
007
008public final class Inform {
009
010        public static final PrintStream DEFAULT_PRINT_STREAM = System.out;
011        public static final String DEFAULT_START_TOKEN = "[INFO] Progress: ";
012        public static final String DEFAULT_PROGRESS_TOKEN = ".";
013        public static final String DEFAULT_COMPLETE_TOKEN = "\n";
014        public static final LogMsg DEFAULT_START_MESSAGE = LogMsg.NOOP;
015        public static final LogMsg DEFAULT_STOP_MESSAGE = LogMsg.NOOP;
016
017        public static final Inform DEFAULT_INFORM = new Inform();
018
019        public Inform() {
020                this(DEFAULT_PRINT_STREAM, DEFAULT_START_TOKEN, DEFAULT_PROGRESS_TOKEN, DEFAULT_COMPLETE_TOKEN, DEFAULT_START_MESSAGE, DEFAULT_STOP_MESSAGE);
021        }
022
023        public Inform(LogMsg startMessage) {
024                this(DEFAULT_PRINT_STREAM, DEFAULT_START_TOKEN, DEFAULT_PROGRESS_TOKEN, DEFAULT_COMPLETE_TOKEN, startMessage, DEFAULT_STOP_MESSAGE);
025        }
026
027        public Inform(LogMsg startMessage, LogMsg stopMessage) {
028                this(DEFAULT_PRINT_STREAM, DEFAULT_START_TOKEN, DEFAULT_PROGRESS_TOKEN, DEFAULT_COMPLETE_TOKEN, startMessage, stopMessage);
029        }
030
031        public Inform(PrintStream printStream, String startToken, String progressToken, String completeToken, LogMsg startMessage, LogMsg stopMessage) {
032                Assert.noNulls(printStream, startMessage, stopMessage, completeToken);
033                // Printing a whitespace character to indicate progress completion is ok
034                // Assert.noBlanks(startToken, progressToken,completeToken);
035                Assert.noBlanks(startToken, progressToken);
036                this.printStream = printStream;
037                this.startToken = startToken;
038                this.progressToken = progressToken;
039                this.completeToken = completeToken;
040                this.startMessage = startMessage;
041                this.stopMessage = stopMessage;
042        }
043
044        private final PrintStream printStream;
045        private final String startToken;
046        private final String progressToken;
047        private final String completeToken;
048        private final LogMsg startMessage;
049        private final LogMsg stopMessage;
050
051        public PrintStream getPrintStream() {
052                return printStream;
053        }
054
055        public String getStartToken() {
056                return startToken;
057        }
058
059        public String getCompleteToken() {
060                return completeToken;
061        }
062
063        public LogMsg getStartMessage() {
064                return startMessage;
065        }
066
067        public LogMsg getStopMessage() {
068                return stopMessage;
069        }
070
071        public String getProgressToken() {
072                return progressToken;
073        }
074
075}