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}