public void run()

in util/src/main/java/com/epam/deltix/util/csvx/CSVFilter.java [47:123]


    public void         run () throws Exception {
        File                inFile = getFileArg ("-in");
        File                outFile = getFileArg ("-out");
        char                delimiter = getArgValue ("-d", ",").charAt (0);
        boolean             headers = !isArgSpecified ("-nh");
        boolean             trim = isArgSpecified ("-trim");
        String []           filterHeaders = getArgValues ("-c");
        String              encoding = getArgValue ("-e", "UTF-8");
        int                 numLines = getIntArgValue ("-first", Integer.MAX_VALUE);
            
        if (isArgSpecified ("-u"))
            uniq = new CharSequenceSet (1000);
        
        CSVXReader          in = 
            inFile == null ?
                new CSVXReader (System.in, delimiter, true, "<stdin>") :
                new CSVXReader (inFile, delimiter);
        
        if (headers)
            in.readHeaders ();
        
        int []              sequence;
        
        if (filterHeaders == null)
            sequence = null;
        else {
            sequence = new int [filterHeaders.length];
            
            for (int ii = 0; ii < filterHeaders.length; ii++) {
                String      spec = filterHeaders [ii];
                
                if (headers)
                    sequence [ii] = in.getHeaderIndexEx (spec);
                else
                    sequence [ii] = Integer.parseInt (spec);
            }
        }
        
        OutputStream        os =
            outFile == null ? 
                System.out : 
                new BufferedOutputStream (new FileOutputStream (outFile));
                
        outWriter = new OutputStreamWriter (os, encoding);        
        
        if (headers) {
            if (sequence == null)
                out.writeCells ((Object []) in.getHeaders ());
            else 
                out.writeCells ((Object []) filterHeaders);
            
            outWriter.write (sb.toString ());
            outWriter.write (IOUtil.CR);
        }
        
        while (in.nextLine () && in.getLineNumber () < numLines) {
            sb.setLength (0);
            
            int             num = 
                sequence == null ? in.getNumCells () : sequence.length;
            
            for (int ii = 0; ii < num; ii++) {
                if (ii > 0)
                    out.writeSeparator ();

                int     colIdx = 
                    sequence == null ? ii : sequence [ii];
                
                out.writeCell (in.getCell (colIdx, trim));
            }
            
            flushLine ();
        }
        
        outWriter.close ();
        in.close ();
    }