1 package br.com.ibnetwork.guara.view; 2 3 import java.io.ByteArrayOutputStream; 4 import java.io.IOException; 5 import java.io.OutputStreamWriter; 6 import java.io.Writer; 7 8 import javax.servlet.http.HttpServletResponse; 9 10 import org.apache.commons.logging.Log; 11 import org.apache.commons.logging.LogFactory; 12 13 import br.com.ibnetwork.guara.pipeline.PipelineException; 14 import br.com.ibnetwork.guara.rundata.RunData; 15 16 public class TemplateUtils 17 { 18 private static final String DEFAULT_CONTENT_TYPE = "text/html; charset=ISO-8859-1"; 19 20 private static Log logger = LogFactory.getLog(TemplateUtils.class); 21 22 public static String renderTemplate(TemplateEngine engine, String encoding, Context ctx, String templateName) 23 { 24 ByteArrayOutputStream bytes = null; 25 String result; 26 try 27 { 28 bytes = new ByteArrayOutputStream(); 29 OutputStreamWriter writer = new OutputStreamWriter(bytes, encoding); 30 engine.merge(templateName, ctx, writer); 31 writer.flush(); 32 result = bytes.toString(encoding); 33 return result; 34 } 35 catch (Throwable t) 36 { 37 throw new PipelineException("Error rendering template ["+templateName+"]",t); 38 } 39 finally 40 { 41 try 42 { 43 if (bytes != null) 44 { 45 bytes.close(); 46 } 47 } 48 catch (IOException e) 49 { 50 logger.warn("Error closing output stream",e); 51 } 52 } 53 } 54 55 public static void renderOutput(TemplateEngine engine, RunData runData, String templateName) 56 { 57 renderOutput(engine,runData,templateName,DEFAULT_CONTENT_TYPE); 58 } 59 60 public static void renderOutput(TemplateEngine engine, RunData runData, String templateName, String contentType) 61 { 62 HttpServletResponse response = runData.getResponse(); 63 response.setContentType(contentType); 64 Context ctx = runData.getContext(); 65 Writer writer = null; 66 try 67 { 68 writer = response.getWriter(); 69 engine.merge(templateName,ctx,writer); 70 writer.flush(); 71 } 72 catch(Exception e) 73 { 74 logger.error("Error rendering layout ["+templateName+"]",e); 75 } 76 finally 77 { 78 if(writer != null) 79 { 80 try 81 { 82 writer.close(); 83 } 84 catch (IOException e) 85 { 86 logger.warn("Error closing output stream",e); 87 } 88 } 89 } 90 } 91 92 }