001
002package gudusoft.gsqlparser.pp.print;
003
004import gudusoft.gsqlparser.pp.logger.PPLogger;
005
006import java.io.OutputStream;
007
008public class PrinterFactory
009{
010
011        /**
012         * create the text printer
013         * 
014         * @return
015         */
016        public static TextPrinter createTextPrinter( )
017        {
018                return createPrinter( TextPrinter.class );
019        }
020
021        /**
022         * create the text printer
023         * 
024         * @param out
025         * @return
026         */
027        public static TextPrinter createTextPrinter( OutputStream out )
028        {
029                return createPrinter( TextPrinter.class, out );
030        }
031
032        public static <E extends IPrinter> E createPrinter( Class<E> type,
033                        OutputStream out )
034        {
035                E printer = createPrinter( type );
036                printer.setOut( out );
037                return printer;
038        }
039
040        public static <E extends IPrinter> E createPrinter( Class<E> type )
041        {
042                try
043                {
044                        return (E) type.newInstance( );
045                }
046                catch ( InstantiationException e )
047                {
048                        PPLogger.error( e );
049                        return null;
050                }
051                catch ( IllegalAccessException e )
052                {
053                        PPLogger.error( e );
054                        return null;
055                }
056        }
057}