home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 27 / CDROM27.iso / share / wnt / jig / data1.cab / Program_Executable_Files / lib / jig.jar / ProcessThread.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-08-19  |  2.6 KB  |  102 lines

  1. import java.io.DataInputStream;
  2. import java.io.IOException;
  3.  
  4. class ProcessThread extends Thread {
  5.    Monolog output;
  6.    boolean busy = true;
  7.    String done;
  8.    ProcessThread waitThread;
  9.    String test;
  10.  
  11.    public ProcessThread(String var1, Monolog var2, String var3) {
  12.       super(var1);
  13.       this.output = var2;
  14.       this.done = var3;
  15.    }
  16.  
  17.    public boolean isBusy() {
  18.       return this.busy;
  19.    }
  20.  
  21.    private void output(String var1) {
  22.       if (this.output == null) {
  23.          System.out.println(var1);
  24.       } else {
  25.          this.output.output(var1 + "\n");
  26.       }
  27.    }
  28.  
  29.    public void run() {
  30.       if (this.waitThread != null) {
  31.          try {
  32.             while(this.waitThread.isBusy()) {
  33.                Thread.sleep(100L);
  34.             }
  35.          } catch (InterruptedException var1) {
  36.          }
  37.       }
  38.  
  39.       if (this.test == null || this.waitThread.getOutput().indexOf(this.test) == -1) {
  40.          this.output.show();
  41.          this.command(((Thread)this).getName());
  42.          this.busy = false;
  43.       }
  44.    }
  45.  
  46.    private boolean command(String var1) {
  47.       Runtime var3 = Runtime.getRuntime();
  48.       this.output(var1);
  49.  
  50.       try {
  51.          Process var2 = var3.exec(var1);
  52.          DataInputStream var4 = new DataInputStream(var2.getErrorStream());
  53.          DataInputStream var5 = new DataInputStream(var2.getInputStream());
  54.          PrintThread var6 = new PrintThread("StdOut", var5, this.output);
  55.          PrintThread var7 = new PrintThread("StdErr", var4, this.output);
  56.          ((Thread)var6).start();
  57.          ((Thread)var7).start();
  58.  
  59.          try {
  60.             while(((Thread)var6).isAlive() || ((Thread)var7).isAlive()) {
  61.                Thread.sleep(100L, 0);
  62.                Thread.sleep(100L, 0);
  63.             }
  64.          } catch (InterruptedException var8) {
  65.          }
  66.       } catch (IOException var9) {
  67.          this.output(BrowserOptions.messages.getString("IOExceptio"));
  68.       }
  69.  
  70.       this.output(this.done);
  71.       return true;
  72.    }
  73.  
  74.    public static void main(String[] var0) {
  75.       if (var0.length < 1) {
  76.          System.out.println("Usage: java ProcessThread <cmd> [<args>]");
  77.          System.exit(0);
  78.       }
  79.  
  80.       String var1 = "";
  81.  
  82.       for(int var2 = 0; var2 < var0.length; ++var2) {
  83.          var1 = var1 + var0[var2] + " ";
  84.       }
  85.  
  86.       ProcessThread var3 = new ProcessThread(var1, (Monolog)null, BrowserOptions.messages.getString("Done"));
  87.       var3.run();
  88.    }
  89.  
  90.    public String getOutput() {
  91.       return this.output.getText();
  92.    }
  93.  
  94.    public ProcessThread(String var1, Monolog var2, String var3, ProcessThread var4, String var5) {
  95.       super(var1);
  96.       this.output = var2;
  97.       this.done = var3;
  98.       this.waitThread = var4;
  99.       this.test = var5;
  100.    }
  101. }
  102.