001
002package gudusoft.gsqlparser.pp.print;
003
004import gudusoft.gsqlparser.ETokenStatus;
005import gudusoft.gsqlparser.TSourceToken;
006import gudusoft.gsqlparser.TSourceTokenList;
007import gudusoft.gsqlparser.pp.output.OutputConfig;
008
009import java.io.IOException;
010import java.io.OutputStream;
011
012/**
013 * the text print
014 * 
015 * @author zhoujun
016 * 
017 */
018public class TextPrinter implements IPrinter
019{
020
021        private OutputStream out = System.out;
022        private OutputConfig outputConfig = null;
023
024        /*
025         * (non-Javadoc)
026         * 
027         * @see gudusoft.gsqlparser.pp.print.IPrinter#print(gudusoft.gsqlparser.
028         * TSourceTokenList)
029         */
030        public void print( TSourceTokenList tl )
031        {
032                for ( int i = 0; i < tl.size( ); i++ )
033                {
034                        TSourceToken t = tl.get( i );
035                        if (t.tokenstatus == ETokenStatus.tsdeleted) {
036                                continue;
037                        }
038                        if ( t.getTokensBefore( ) != null
039                                        && t.getTokensBefore( ).size( ) > 0 )
040                        {
041                                print( t.getTokensBefore( ) );
042                        }
043                        if ( t.getReplaceToken( ) != null )
044                        {
045                                print( t.getReplaceToken( ) );
046                        }
047                        else
048                        {
049                                print( t );
050                        }
051
052                        if ( t.getTokensAfter( ) != null && t.getTokensAfter( ).size( ) > 0 )
053                        {
054                                print( t.getTokensAfter( ) );
055                        }
056
057                }
058        }
059
060        /*
061         * (non-Javadoc)
062         * 
063         * @see
064         * gudusoft.gsqlparser.pp.print.IPrinter#print(gudusoft.gsqlparser.TSourceToken
065         * )
066         */
067        public void print( TSourceToken t )
068        {
069                try
070                {
071                        if ( outputConfig != null )
072                        {
073                                out.write( outputConfig.renderHighlightingElement( t )
074                                                .toString( )
075                                                .getBytes( ) );
076                        }
077                        else
078                        {
079                                out.write( t.toString( ).getBytes( ) );
080                        }
081                }
082                catch ( IOException e )
083                {
084                        // TODO Auto-generated catch block
085                        e.printStackTrace( );
086                }
087        }
088
089        public OutputStream getOut( )
090        {
091                return out;
092        }
093
094        public void setOut( OutputStream out )
095        {
096                this.out = out;
097        }
098
099        public void setOutputConfig( OutputConfig outputConfig )
100        {
101                this.outputConfig = outputConfig;
102        }
103
104}