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