Kagee

Untitled

Mar 14th, 2011
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. package no.hild1;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStream;
  9. import java.io.OutputStreamWriter;
  10. import java.io.PrintWriter;
  11. import java.util.concurrent.LinkedBlockingQueue;
  12.  
  13. public class mainClass {
  14.  
  15.     /**
  16.      * @param args
  17.      * @throws IOException
  18.      * @throws InterruptedException
  19.      */
  20.     public static void main(String[] args) throws IOException, InterruptedException {
  21.         testCat();
  22.     }
  23.     public static void testCat() throws IOException, InterruptedException {
  24.         //Runtime rt = Runtime.getRuntime();
  25.         String cmd ="tee ouput.log";
  26.         cmd = "cat";
  27.         cmd ="cs2cs -f '%.13f' +proj=tmerc +lat_0=58 +lon_0=10.722917 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs +to +proj=latlong +datum=WGS84";
  28.         //Process tee = rt.exec(cmd);
  29.         Process tee = new ProcessBuilder(cmd.split(" ")).start();
  30.         InputWrapper teeStderr = new InputWrapper(tee.getErrorStream(), "STDERR");
  31.         InputWrapper teeStdout = new InputWrapper(tee.getInputStream(), "STDOUT");
  32.         OutputWrapper teeStdinn = new OutputWrapper(tee.getOutputStream(), "STDINN");
  33.         Thread stdinnThread = new Thread(teeStdinn);
  34.         Thread stderrThread = new Thread(teeStderr);
  35.         Thread stdoutThread = new Thread(teeStdout);
  36.         stdinnThread.start();
  37.         stderrThread.start();
  38.         stdoutThread.start();
  39.         synchronized (stdinnThread) {
  40.             teeStdinn.add("100 111");
  41.             teeStdinn.add("200 222");
  42.             teeStdinn.add("300 333");
  43.             teeStdinn.add("400 444");
  44.         }
  45.         while(true) {
  46.             Thread.yield();
  47.             Thread.sleep(100);
  48.         }
  49.     }
  50. }
  51. class InputWrapper implements Runnable {
  52.     InputStream inputStream;
  53.     String tag;
  54.     BufferedReader bufferedReader;
  55.     /**
  56.      * @param inputStream
  57.      */
  58.     public InputWrapper(InputStream inputStream, String tag) {
  59.         this.inputStream = inputStream;
  60.         this.tag = tag;
  61.         InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
  62.         bufferedReader = new BufferedReader(inputStreamReader);
  63.     }
  64.     @Override
  65.     public void run() {
  66.         try {
  67.             String line = null;
  68.             while((line = bufferedReader.readLine()) != null) {
  69.                 System.out.println(tag + " read : " + line);
  70.                 System.out.flush();
  71.             }
  72.         } catch (IOException e) {
  73.             // TODO Auto-generated catch block
  74.             e.printStackTrace();
  75.         }
  76.     }
  77.  
  78. }
  79. class OutputWrapper implements Runnable {
  80.     OutputStream outputStream;
  81.     String tag;
  82.     PrintWriter printWriter;
  83.     BufferedWriter bufferedWriter;
  84.     LinkedBlockingQueue<String>  lbq = new LinkedBlockingQueue<String>();
  85.     /**
  86.      * @param outputStream
  87.      */
  88.     public OutputWrapper(OutputStream outputStream, String tag) {
  89.         this.outputStream = outputStream;
  90.         this.tag = tag;
  91.         bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
  92.         printWriter = new PrintWriter(bufferedWriter);
  93.     }
  94.  
  95.     @Override
  96.     public void run() {
  97.         try {
  98.             while(true) {
  99.                 String line = lbq.take();  
  100.                 printWriter.println(line);
  101.                 printWriter.flush();
  102.                 System.out.println(tag + " wrote : " + line);
  103.                 System.out.flush();
  104.             }
  105.         } catch (InterruptedException e) {
  106.             // TODO Auto-generated catch block
  107.             e.printStackTrace();
  108.         }
  109.     }
  110.     public void add(String line)  {
  111.         synchronized (lbq) {
  112.             System.out.println(tag + " added : " + line + " to queue");
  113.             System.out.flush();
  114.             lbq.add(line); 
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment