home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / rmi / server / LogStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.9 KB  |  131 lines

  1. package java.rmi.server;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.OutputStream;
  6. import java.io.OutputStreamWriter;
  7. import java.io.PrintStream;
  8. import java.util.Date;
  9. import java.util.Hashtable;
  10.  
  11. public class LogStream extends PrintStream {
  12.    private static Hashtable known = new Hashtable(5);
  13.    private static PrintStream defaultStream;
  14.    private String name;
  15.    private OutputStream logOut;
  16.    private OutputStreamWriter logWriter;
  17.    private StringBuffer buffer = new StringBuffer();
  18.    private ByteArrayOutputStream bufOut;
  19.    public static final int SILENT = 0;
  20.    public static final int BRIEF = 10;
  21.    public static final int VERBOSE = 20;
  22.  
  23.    private LogStream(String var1, OutputStream var2) {
  24.       super(new ByteArrayOutputStream());
  25.       this.bufOut = (ByteArrayOutputStream)super.out;
  26.       this.name = var1;
  27.       this.setOutputStream(var2);
  28.    }
  29.  
  30.    public static LogStream log(String var0) {
  31.       Hashtable var2 = known;
  32.       synchronized(var2) {
  33.          LogStream var1 = (LogStream)known.get(var0);
  34.          if (var1 == null) {
  35.             var1 = new LogStream(var0, defaultStream);
  36.          }
  37.  
  38.          known.put(var0, var1);
  39.          return var1;
  40.       }
  41.    }
  42.  
  43.    public static synchronized PrintStream getDefaultStream() {
  44.       return defaultStream;
  45.    }
  46.  
  47.    public static synchronized void setDefaultStream(PrintStream var0) {
  48.       defaultStream = var0;
  49.    }
  50.  
  51.    public synchronized OutputStream getOutputStream() {
  52.       return this.logOut;
  53.    }
  54.  
  55.    public synchronized void setOutputStream(OutputStream var1) {
  56.       this.logOut = var1;
  57.       this.logWriter = new OutputStreamWriter(this.logOut);
  58.    }
  59.  
  60.    public void write(int var1) {
  61.       if (var1 == 10) {
  62.          synchronized(this) {
  63.             OutputStream var3 = this.logOut;
  64.             synchronized(var3) {
  65.                this.buffer.setLength(0);
  66.                this.buffer.append((new Date()).toString());
  67.                this.buffer.append(':');
  68.                this.buffer.append(this.name);
  69.                this.buffer.append(':');
  70.                this.buffer.append(Thread.currentThread().getName());
  71.                this.buffer.append(':');
  72.  
  73.                try {
  74.                   this.logWriter.write(this.buffer.toString());
  75.                   this.logWriter.flush();
  76.                   this.bufOut.writeTo(this.logOut);
  77.                   this.logOut.write(var1);
  78.                   this.logOut.flush();
  79.                } catch (IOException var13) {
  80.                   ((PrintStream)this).setError();
  81.                } finally {
  82.                   this.bufOut.reset();
  83.                }
  84.             }
  85.          }
  86.       } else {
  87.          super.write(var1);
  88.       }
  89.  
  90.    }
  91.  
  92.    public void write(byte[] var1, int var2, int var3) {
  93.       if (var3 < 0) {
  94.          throw new ArrayIndexOutOfBoundsException(var3);
  95.       } else {
  96.          for(int var4 = 0; var4 < var3; ++var4) {
  97.             this.write(var1[var2 + var4]);
  98.          }
  99.  
  100.       }
  101.    }
  102.  
  103.    public String toString() {
  104.       return this.name;
  105.    }
  106.  
  107.    public static int parseLevel(String var0) {
  108.       if (var0 != null && var0.length() >= 1) {
  109.          try {
  110.             return Integer.parseInt(var0);
  111.          } catch (NumberFormatException var2) {
  112.             if (var0.length() < 1) {
  113.                return -1;
  114.             } else if ("SILENT".startsWith(var0.toUpperCase())) {
  115.                return 0;
  116.             } else if ("BRIEF".startsWith(var0.toUpperCase())) {
  117.                return 10;
  118.             } else {
  119.                return "VERBOSE".startsWith(var0.toUpperCase()) ? 20 : -1;
  120.             }
  121.          }
  122.       } else {
  123.          return -1;
  124.       }
  125.    }
  126.  
  127.    static {
  128.       defaultStream = System.err;
  129.    }
  130. }
  131.