package org.das2.qstream.filter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.nio.channels.ReadableByteChannel; import java.text.ParseException; import org.das2.datum.Datum; import org.das2.datum.Units; import org.das2.qstream.FormatStreamHandler; import org.das2.qstream.StreamException; import org.das2.qstream.StreamTool; /** * Allow filters to be used from the command line. Currently this just uses the reduce filter. * @author jbf */ public class PipeFilter { public static void doit( InputStream in, OutputStream out, Datum cadence ) { ReduceFilter pipe= new ReduceFilter(); pipe.setCadence( cadence ); ReadableByteChannel rin= java.nio.channels.Channels.newChannel( in ); FormatStreamHandler fsh= new FormatStreamHandler(); fsh.setOutputStream( out ); pipe.sink= fsh; try { StreamTool.readStream( rin, pipe ); } catch ( StreamException ex ) { // the exception has already been forwarded onto the output stream. } } public static void main( String[] args ) throws StreamException, MalformedURLException, IOException, ParseException { if ( args.length<1 || args[0].trim().length()==0 ) { System.err.println("java -jar autoplot.jar org.qstream.filter.PipeFilter [urlin] [fileout]"); System.exit(-1); } InputStream in= System.in; OutputStream out= System.out; if ( args.length>1 ) { if ( args[1].startsWith("/") ) { in= new FileInputStream(args[1]); System.err.println("reading "+args[1] ); } else { URL urlin= new java.net.URL(args[1]); in= urlin.openStream(); System.err.println("reading "+urlin ); } } if ( args.length>2 ) { out= new FileOutputStream(args[2]); System.err.println("writing "+args[2] ); } Datum cadence= Units.seconds.parse(args[0]); doit( in, out, cadence ); //doit( new java.net.URL("file:///home/jbf/project/autoplot/vap/pw/bill/20130506/notreduced.okay.qds").openStream(), new java.io.FileOutputStream("/home/jbf/project/autoplot/vap/pw/bill/20130506/reduced.okay.reduced.qds"), cadence ); //doit( new java.net.URL("file:///home/jbf/project/autoplot/vap/pw/bill/20130506/notreduced.notokay.qds").openStream(), new java.io.FileOutputStream("/home/jbf/project/autoplot/vap/pw/bill/20130506/reduced.notokay.reduced.qds"), cadence ); if ( in!=System.in ) in.close(); if ( out!=System.out ) out.close(); //doit( new java.net.URL("file:///tmp/0B000800408DD710.20120302.qds").openStream(), new FileOutputStream("/tmp/0B000800408DD710.20120302.reduce.qds"), cadence ); //doit( new java.net.URL("file:///tmp/po_h0_hyd_20000128.qds").openStream(), new FileOutputStream("/tmp/po_h0_hyd_20000128.reduce.qds"), cadence ); //doit( new java.net.URL("file:///home/jbf/data.nobackup/qds/doesntReduce.ascii.qds").openStream(), new java.io.FileOutputStream("/home/jbf/data.nobackup/qds/doesntReduce.reduced.qds"), cadence ); } }