Changeset 22063


Ignore:
Timestamp:
2010-05-07T15:33:37+12:00 (14 years ago)
Author:
sjm84
Message:

This now prints a processes STDIN and STDERR simultaneously

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/admin/guiext/Command.java

    r22012 r22063  
    9494       
    9595        BufferedReader stdInput = new BufferedReader(new InputStreamReader(commandLineProc.getInputStream()));
    96         BufferedReader errInput = new BufferedReader(new InputStreamReader(commandLineProc.getErrorStream()));
    97         String s= "";
    98        
    99         while ((s = stdInput.readLine()) != null) {
    100         messageArea.append(s + "\n");
    101         messageArea.setSelectionEnd(messageArea.getDocument().getLength());
    102         } 
    103        
    104         boolean error = false;
    105         while ((s = errInput.readLine()) != null){
    106         messageArea.append(s + "\n");
    107         error = true;
    108         } 
    109        
    110         if(error){
    111         JOptionPane.showMessageDialog(new JFrame(), "There was an error while running the command line process");   
    112         _parent.threadError();
    113         return;
    114         }
     96
     97        Thread stdPrinter = new PrinterThread(messageArea, stdInput);
     98        stdPrinter.start();
     99
     100        BufferedReader stdError = new BufferedReader(new InputStreamReader(commandLineProc.getErrorStream()));
     101
     102        Thread errPrinter = new PrinterThread(messageArea, stdError);
     103        errPrinter.start();
    115104       
    116105        int success = commandLineProc.waitFor();
     
    158147    return (String)_osCommands.get("default");
    159148    }
     149
     150    public class PrinterThread extends Thread
     151    {
     152    JTextArea _messageArea = null;
     153    BufferedReader _output = null;
     154
     155    public PrinterThread(JTextArea messageArea, BufferedReader output)
     156    {
     157        _messageArea = messageArea;
     158        _output = output;
     159    }
     160   
     161    public void run()
     162    {
     163        String s = "";
     164
     165        try{
     166        while ((s = _output.readLine()) != null) {
     167            _messageArea.append(s + "\n");
     168            _messageArea.setSelectionEnd(_messageArea.getDocument().getLength());
     169        } 
     170        }
     171        catch(Exception ex){
     172        ex.printStackTrace();
     173        }
     174    }
     175    }
    160176}
Note: See TracChangeset for help on using the changeset viewer.