1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package edu.samplu.common;
17
18 import freemarker.template.Configuration;
19 import freemarker.template.Template;
20 import freemarker.template.TemplateException;
21 import org.apache.commons.io.FileUtils;
22 import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
23
24 import java.io.File;
25 import java.io.IOException;
26 import java.io.InputStream;
27 import java.util.Properties;
28
29
30
31
32
33
34
35 public class FreemarkerUtil {
36
37 protected Configuration cfg;
38
39
40
41
42
43
44
45
46
47 public static File ftlWrite(File output, Template template, InputStream inputStream) throws IOException, TemplateException {
48
49 return ftlWrite(output.getName(), output, template, inputStream);
50 }
51
52
53
54
55
56
57
58
59
60
61
62 public static File ftlWrite(String key, File output, Template template, InputStream inputStream) throws IOException, TemplateException {
63 Properties props = PropertiesUtils.loadProperties(inputStream);
64 props.put("baseName", output.getName().substring(0, output.getName().indexOf("ST")));
65 props.put("className", output.getName().substring(0, output.getName().indexOf("ST")));
66 if (output.getName().contains("TmplMthd")) {
67 props.put("className", output.getName().substring(0, output.getName().indexOf("TmplMthd")));
68 }
69
70 if (props.get("test1") == null ) {
71 props.put("test1", "test" + props.get("className") + "Bookmark");
72 props.put("test2", "test" + props.get("className") + "Nav");
73 }
74
75 PropertiesUtils.systemPropertiesOverride(props, key);
76 PropertiesUtils.transformNumberedPropertiesToList(props);
77 File outputFile = writeTemplateToFile(output, template, props);
78
79 return outputFile;
80 }
81
82 protected static Properties loadProperties(InputStream inputStream) throws IOException {
83 Properties props = new Properties();
84
85 if(inputStream != null) {
86 props.load(inputStream);
87 }
88
89 return props;
90 }
91
92
93
94
95
96
97
98
99
100
101 protected static File writeTemplateToFile(File file, Template template, Properties props) throws IOException, TemplateException {
102 String output = FreeMarkerTemplateUtils.processTemplateIntoString(template, props);
103 FileUtils.writeStringToFile(file, output);
104
105 return file;
106 }
107 }