1
2
3
4
5
6
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
23
24
25
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 }