1 package br.com.ibnetwork.guara.view.impl; 2 3 import java.net.URL; 4 5 import org.apache.avalon.framework.configuration.Configurable; 6 import org.apache.avalon.framework.configuration.Configuration; 7 import org.apache.avalon.framework.configuration.ConfigurationException; 8 import org.apache.commons.logging.Log; 9 import org.apache.commons.logging.LogFactory; 10 11 import br.com.ibnetwork.guara.view.Context; 12 import br.com.ibnetwork.guara.view.TemplateEngine; 13 import br.com.ibnetwork.guara.view.TemplateEngineException; 14 15 /*** 16 * @author <a href="mailto:leandro@ibnetwork.com.br">leandro</a> 17 */ 18 public abstract class TemplateEngineSupport 19 implements TemplateEngine, Configurable 20 { 21 protected Log log = LogFactory.getLog(this.getClass()); 22 23 protected String extension; 24 25 protected String encoding; 26 27 protected String onErrorTemplate; 28 29 protected URL configurationFile; 30 31 public void configure(Configuration conf) 32 throws ConfigurationException 33 { 34 extension = conf.getChild("templates").getAttribute("extension",".txt"); 35 encoding = conf.getChild("encoding").getAttribute("name","ISO-8859-1"); 36 onErrorTemplate = conf.getChild("templates").getChild("onError").getAttribute("template","screens.Error"); 37 String fileName = conf.getChild("file").getAttribute("name",null); 38 if(fileName != null) 39 { 40 configurationFile = Thread.currentThread().getContextClassLoader().getResource(fileName); 41 } 42 log.info("TemplateEngine configuration file ["+configurationFile+"]"); 43 } 44 45 public Context createContext() 46 throws TemplateEngineException 47 { 48 return new ContextImpl(20); 49 } 50 51 public String toFileName(String templateName) 52 { 53 if(templateName.endsWith(extension)) 54 { 55 int pos = templateName.length() - extension.length(); 56 templateName = templateName.substring(0,pos); 57 } 58 String tmp = templateName.replaceAll("//.","/"); 59 return tmp + extension; 60 } 61 62 public String toTemplateName(String templateName) 63 { 64 if(templateName.startsWith("/")) 65 { 66 templateName = templateName.substring(1); 67 } 68 if(templateName.endsWith(extension)) 69 { 70 int pos = templateName.length() - extension.length(); 71 templateName = templateName.substring(0,pos); 72 } 73 String tmp = templateName.replaceAll("/","//."); 74 return tmp; 75 } 76 77 public String getTemplateExtension() 78 { 79 return extension; 80 } 81 82 public String getEncoding() 83 { 84 return encoding; 85 } 86 87 public String getOnErrorTemplate() 88 { 89 return onErrorTemplate; 90 } 91 92 }