Package org.eclipse.maven.core

Source Code of org.eclipse.maven.core.OutPutHandler

package org.eclipse.maven.core;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;

import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.console.MessageConsoleStream;

public class OutPutHandler implements Runnable {
  private MessageConsole console;
  private BufferedReader input;
  private PrintStream printStream;
 
  private volatile boolean end;
 
  private static final String CONSOLE_NAME = "CONSOLE_MAVEN";

  public OutPutHandler() {
    InputStream in = new PipedInputStream();
    OutputStream out;
    try {
      out = new PipedOutputStream((PipedInputStream) in);
      printStream = new PrintStream(out);
    } catch (IOException e) {
      System.err.println(e);
    }

    input = new BufferedReader(new InputStreamReader(in));
  }

  public void write(String line) {
    if (console == null)
      console = findConsole(CONSOLE_NAME);

    MessageConsoleStream out = console.newMessageStream();
    out.println(line);
    try {
      out.close();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
 
  public void run() {
   
    end = false;
   
    if (console == null)
      console = findConsole(CONSOLE_NAME);

    MessageConsoleStream out = console.newMessageStream();
    String line = null;
   
    try {
      while ((line = input.readLine()) != null) {
        out.println(line);
      }

    } catch (IOException e) {
      if ( !end )
        e.printStackTrace();
    } finally {
      try {
        out.close();
        input.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
 
  public synchronized void outPutEnd() {
    end = true;
  }
 
  private MessageConsole findConsole(String name) {
    ConsolePlugin plugin = ConsolePlugin.getDefault();
    IConsoleManager conMan = plugin.getConsoleManager();
    IConsole[] existing = conMan.getConsoles();

    for (IConsole iCons : existing)
      if (name.equals(iCons.getName()))
        return (MessageConsole) iCons;

    // on n'a pas trouv� la console, on en cr�e une nouvelle
    MessageConsole myConsole = new MessageConsole(name, null);
    conMan.addConsoles(new IConsole[] { myConsole });

    return myConsole;
  }
 

  public PrintStream getPrintStream() {
    return printStream;
  }


  public void setPrintStream(PrintStream printStream) {
    this.printStream = printStream;
  }

}
TOP

Related Classes of org.eclipse.maven.core.OutPutHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.