The class below RunCommand is Observable the class after that is my
Observer. The Observer does not display the data until the below class
finishes executing not before. Is there a bug with the event handler using
Observable?
Any other ideas?

import java.io.*;
import java.util.*;
public class RunCommand extends Observable {

     static String drvltr = null;
     static String logon  = null;
     static String action = null;
     private static String v = null;
     
public RunCommand(String drive,String auth, String dbaction, Observer ob)
{
    drvltr = drive;
    logon =  auth +"@samsdb.gee as sysdba";
    action = dbaction;
    addObserver(ob);
    }
    
  public void run() {
        String s;
        boolean finished = false;
      while (!finished) {
        try {
           if (action.equals("down")) {
            String[] cmd = {drvltr + ":\\oracle\\ora81\\bin\\sqlplus.exe",
logon,"@C:\\temp\\downdb.sql"};
            Process p = Runtime.getRuntime().exec(cmd);
            
            BufferedReader stdInput = new BufferedReader(new 
                 InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new 
                 InputStreamReader(p.getErrorStream()));

            
            // read the output from the command
            
            System.out.println("Here is the standard output of the
command:\n");
            while ((s = stdInput.readLine()) != null) {
                setChanged();
                notifyObservers(s);
                System.out.println(s);
            }
            
            // read any errors from the attempted command

            System.out.println("Here is the standard error of the command
(if any):\n");
            while ((s = stdError.readLine()) != null) {
                setChanged();
                notifyObservers(s);
                System.out.println(s);
            }
            
            
            finished = true;
        }
        
        if (action.equals("up")) {
             String[] cmd = {drvltr + ":\\oracle\\ora81\\bin\\sqlplus.exe",
logon,"@C:\\temp\\strtdb.sql"};
             Process p = Runtime.getRuntime().exec(cmd);
            BufferedReader stdInput = new BufferedReader(new 
                 InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new 
                 InputStreamReader(p.getErrorStream()));

            
            // read the output from the command
            
            System.out.println("Here is the standard output of the
command:\n");
            while ((s = stdInput.readLine()) != null) {
                setChanged();
                notifyObservers(s);
                System.out.println(s);
            }
            
            // read any errors from the attempted command

            System.out.println("Here is the standard error of the command
(if any):\n");
            while ((s = stdError.readLine()) != null) {
                setChanged();
                notifyObservers(s);
                System.out.println(s);
            }
            
            
            finished = true;
            // run shutdown command
           
        } // end if
          
        } //end try
        catch (IOException e) {
            System.out.println("exception happened - here's what I know: ");
            e.printStackTrace();
            finished = true;
        } //end catch
        finished = true;
      } // end while
        
  } //end run
} // end class

The observer class is an inner class of a class that builds ther frame ,
panels, ect.,defined as:
class JInstallerTextArea extends JTextArea implements Observer
    {
        public JInstallerTextArea()
        {
            setRows(5);
            setColumns(20);
        }
        public void update(Observable o, Object str)
        {
            append(str.toString());
            append("\n");
         }
     }

_______________________________________________
Swing mailing list
[EMAIL PROTECTED]
http://eos.dk/mailman/listinfo/swing

Reply via email to