1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.freemarker;
35
36 import info.magnolia.cms.util.AlertUtil;
37 import org.apache.commons.lang.StringUtils;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40
41 import java.io.PrintWriter;
42 import java.io.StringWriter;
43 import java.io.Writer;
44 import java.util.HashMap;
45 import java.util.Map;
46
47
48
49
50
51
52
53
54
55 public class FreemarkerUtil {
56 private static final Logger log = LoggerFactory.getLogger(FreemarkerUtil.class);
57
58
59
60
61
62
63 public static String process(Object thisObj) {
64 final Writer writer = new StringWriter();
65 process(thisObj, writer);
66 return writer.toString();
67 }
68
69
70
71
72 public static void process(Object thisObj, Writer out) {
73 process(thisObj.getClass(), thisObj, out);
74 }
75
76
77
78
79 public static String process(Object thisObj, String classifier, String ext) {
80 final Writer writer = new StringWriter();
81 process(thisObj, classifier, ext, writer);
82 return writer.toString();
83 }
84
85
86
87
88 public static void process(Object thisObj, String classifier, String ext, Writer out) {
89 final Map data = new HashMap();
90 data.put("this", thisObj);
91 String template = createTemplateName(thisObj.getClass(), classifier, ext);
92 process(template, data, out);
93 }
94
95
96
97
98
99
100 public static String process(Class klass, Object thisObj) {
101 final Writer writer = new StringWriter();
102 process(klass, thisObj, writer);
103 return writer.toString();
104 }
105
106
107
108
109 public static void process(Class klass, Object thisObj, Writer out) {
110 final Map data = new HashMap();
111 data.put("this", thisObj);
112 String template = createTemplateName(klass, "html");
113 process(template, data, out);
114 }
115
116
117
118
119 public static String process(String name, Map data) {
120 final Writer writer = new StringWriter();
121 process(name, data, writer);
122 return writer.toString();
123 }
124
125
126
127
128
129 public static void process(String name, Map data, Writer writer) {
130 try {
131
132 if (AlertUtil.isMessageSet()) {
133 data.put("message", AlertUtil.getMessage());
134 }
135 FreemarkerHelper.getInstance().render(name, data, writer);
136 }
137 catch (Exception e) {
138 e.printStackTrace(new PrintWriter(writer));
139 log.error("Exception while processing template " + name, e);
140 }
141 }
142
143
144
145
146
147 public static String createTemplateName(Class klass, String ext) {
148 return createTemplateName(klass, null, ext);
149 }
150
151
152
153
154
155 public static String createTemplateName(Class klass, String classifier, String ext) {
156 classifier = (classifier != null) ? StringUtils.capitalize(classifier) : "";
157 return "/" + StringUtils.replace(klass.getName(), ".", "/") + classifier + "." + ext;
158 }
159
160 }