/* * */ package captor.lib.util; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; import java.util.Calendar; import java.util.GregorianCalendar; import org.apache.commons.io.FileUtils; import captor.modelsystem.Model; /** * //Este m�todo redireciona a sa�da System.err para a um elemento da GUI * */ public class FITPrintStream extends PrintStream { private File logFile; PrintWriter out; PrintStream defaultOut; Model model; public FITPrintStream(Model model, BufferedOutputStream bos, boolean b) { super(bos, b); this.model = model; defaultOut = System.out; System.setOut(this); System.setErr(this); File logDir = new File(model.getConfig().getSystemConfig().getInstallPath() + "/log/"); if ( !logDir.exists() ) { try { FileUtils.forceMkdir(logDir); } catch (IOException e) { throw new RuntimeException("Cannot create log dir."); } } logFile = new File(logDir, getDate() + ".log"); if ( !logFile.exists() ) { try { logFile.createNewFile(); FileOutputStream outputStream; try { outputStream = new FileOutputStream(logFile.getAbsoluteFile()); } catch ( FileNotFoundException e ) { model.getGui().getGuiView().setErrorView("<br>Cannot initalize logger.<br>Cannot open file: " + logFile.getAbsolutePath()); return ; } out = new PrintWriter(outputStream); } catch (IOException e) { model.getGui().getGuiView().setErrorView("<br>Cannot initalize logger.<br>Cannot create file: " + logFile.getAbsolutePath()); } } } //------------------------------------------------------------------------- private String getDate() { Calendar calendar = new GregorianCalendar(); int ano = calendar.get(Calendar.YEAR); int mes = calendar.get(Calendar.MONTH); int dia = calendar.get(Calendar.DAY_OF_MONTH); int hora = calendar.get(Calendar.HOUR); int minuto = calendar.get(Calendar.MINUTE); int segundo = calendar.get(Calendar.SECOND); String ret = "y" + ano + "_m" + mes + "_d" + dia + "__h" + hora + "_m" + minuto + "_s" + segundo; return ret; } //------------------------------------------------------------------------- public void print(boolean b) { super.print(b); if ( out != null ) { out.println(new Boolean(b).toString()); out.flush(); defaultOut.println(new Boolean(b).toString()); defaultOut.flush(); } } public void print(char c) { super.print(c); char []ca = new char[1]; ca[0] = c; if ( out != null ) { out.println(new String(ca)); out.flush(); defaultOut.println(new String(ca)); defaultOut.flush(); } } public void print(char[] s) { super.print(s); if ( s == null ) return; if ( s == null ) return; if ( out != null ) { out.println(new String(s)); out.flush(); defaultOut.println(new String(s)); defaultOut.flush(); } } public void print(double d) { super.print(d); if ( out != null ) { out.println(new Double(d).toString()); out.flush(); defaultOut.println(new Double(d).toString()); defaultOut.flush(); } } public void print(float f) { super.print(f); if ( out != null ) { out.println(new Float(f).toString()); out.flush(); defaultOut.println(new Float(f).toString()); defaultOut.flush(); } } public void print(int i) { super.print(i); if ( out != null ) { out.println(new Integer(i).toString()); out.flush(); defaultOut.println(new Integer(i).toString()); defaultOut.flush(); } } public void print(long l) { super.print(l); if ( out != null ) { out.println(new Long(l).toString()); out.flush(); defaultOut.println(new Long(l).toString()); defaultOut.flush(); } } public void print(Object obj) { super.print(obj); if ( obj == null ) return; if ( out != null ) { out.println(obj.toString()); out.flush(); defaultOut.println(obj.toString()); defaultOut.flush(); } } public void print(String s) { super.print(s + "\n"); if ( s == null ) return; if ( out != null ) { out.println(s); out.flush(); defaultOut.println(s); defaultOut.flush(); } } }