Changeset 22063

Show
Ignore:
Timestamp:
07.05.2010 15:33:37 (9 years ago)
Author:
sjm84
Message:

This now prints a processes STDIN and STDERR simultaneously

Files:
1 modified

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}