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}