View Javadoc

1   /*
2    * $Id: Template.java 1419 2010-11-01 14:12:17Z hoheisel $
3    *
4    * Copyright (c) 2007
5    * Fraunhofer Institute for Computer Architecture and Software Technology
6    * See http://www.first.fraunhofer.de for more details.
7    */
8   
9   package net.kwfgrid.gwes.servlet;
10  
11  import org.antlr.stringtemplate.StringTemplateGroup;
12  import org.antlr.stringtemplate.StringTemplateGroupLoader;
13  import org.antlr.stringtemplate.CommonGroupLoader;
14  import org.antlr.stringtemplate.StringTemplateErrorListener;
15  import org.antlr.stringtemplate.language.DefaultTemplateLexer;
16  import org.apache.log4j.Logger;
17  
18  import java.util.Map;
19  import java.util.HashMap;
20  
21  /**
22   * Caches String template groups.
23   * @author Andreas Hoheisel
24   *         (<a href="http://www.andreas-hoheisel.de">www.andreas-hoheisel.de</a>)
25   * @version $Id: Template.java 1419 2010-11-01 14:12:17Z hoheisel $
26   */
27  public class Template {
28  
29      final static Logger logger = Logger.getLogger(Template.class);
30  
31      private static Map<String,StringTemplateGroup> stringTemplateGroups;
32  
33      public static StringTemplateGroup getStringTemplateGroup(String templateFilename) {
34          StringTemplateGroup ret;
35          if (stringTemplateGroups == null) {
36              stringTemplateGroups = new HashMap<String,StringTemplateGroup>();
37          }
38  
39          ret = stringTemplateGroups.get(templateFilename);
40          if (ret == null) {
41              ret = loadSTGFileFromClasspath(templateFilename);
42              stringTemplateGroups.put(templateFilename,ret);
43          }
44  
45          return ret;
46      }
47  
48  
49      private static StringTemplateGroup loadSTGFileFromClasspath(String templateFilename) {
50          logger.debug("Reading string template "+templateFilename);
51          String location = "templates";
52          StringTemplateGroupLoader loader = new CommonGroupLoader(location, new LogStringTemplateErrorListener());
53          StringTemplateGroup.registerGroupLoader(loader);
54          StringTemplateGroup.registerDefaultLexer(DefaultTemplateLexer.class);
55          return StringTemplateGroup.loadGroup(templateFilename);
56      }
57  
58      private static class LogStringTemplateErrorListener implements StringTemplateErrorListener {
59  
60          public void error(String msg, Throwable e) {
61              logger.error(msg, e);
62          }
63  
64          public void warning(String msg) {
65              logger.warn(msg);
66          }
67      }
68  
69  
70  
71  }