package ch.elexis.connect.afinion;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import ch.rgw.tools.TimeTool;
public class Logger {
PrintStream _log;
public Logger(){
_log = System.out;
}
public Logger(String filename) throws FileNotFoundException{
_log = new PrintStream(new FileOutputStream(filename, true));
}
public Logger(boolean enable){
if (enable) {
_log = System.out;
} else {
_log = new PrintStream(new DummyPrintStream());
}
}
private String replaceBinaryChar(String s){
String debug = s.replace("<", "<LT>").replace(">", "<GT>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
debug = debug.replace("\000", "<NUL>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\001", "<SOH>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\002", "<STX>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\003", "<ETX>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\004", "<EOT>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\005", "<ENQ>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\006", "<ACK>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\007", "<007>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\008", "<008>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\009", "<009>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\010", "<010>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\011", "<011>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\012", "<012>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\013", "<013>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\014", "<014>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\015", "<015>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\016", "<DLE>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\017", "<017>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\018", "<018>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\019", "<019>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\020", "<020>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\021", "<NAK>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\022", "<022>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\023", "<ETB>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\024", "<024>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\025", "<025>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\026", "<026"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\027", "<027>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\028", "<028>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\029", "<029>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\030", "<030>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\031", "<031>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace(" ", "<SPACE>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\n", "<LF>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\t", "<HT>"); //$NON-NLS-1$ //$NON-NLS-2$
debug = debug.replace("\"", "<QUOTE>"); //$NON-NLS-1$ //$NON-NLS-2$
return debug;
}
public void logRX(String s){
_log.println("<-- \"" + s + "\""); //$NON-NLS-1$ //$NON-NLS-2$
}
// public void logTX(String s)
// {
//
// _log.println("--> \"" + replaceBinaryChar(s) + "\""); //$NON-NLS-1$ //$NON-NLS-2$
// }
public void logRaw(String s){
_log.println(s);
}
public void log(String s){
_log.println("-*- \"" + replaceBinaryChar(s) + "\""); //$NON-NLS-1$ //$NON-NLS-2$
}
public void logStart(){
_log.println("-S- \"" + new TimeTool().toDBString(true) + "\""); //$NON-NLS-1$ //$NON-NLS-2$
}
public void logEnd(){
_log.println("-E- \"" + new TimeTool().toDBString(true) + "\""); //$NON-NLS-1$ //$NON-NLS-2$
}
class DummyPrintStream extends OutputStream {
@Override
public void write(int b) throws IOException{
// Do nothing
}
}
}