1 <<<<<<< ContentProducer.java
2 package mircoders.producer;
\r
9 import mir.producer.*;
\r
10 import mir.generator.*;
\r
12 import mircoders.localizer.*;
\r
13 import mircoders.global.*;
\r
14 import mircoders.entity.*;
\r
16 import org.apache.struts.util.MessageResources;
\r
18 // @todo ML: the file that gets generated should be better configurable
\r
20 public class ContentProducer implements mir.producer.Producer {
\r
22 private String generatorIdentifier;
\r
23 private String resourceBundle;
\r
25 private String outputFilePrefix;
\r
26 private String outputFilePostfix;
\r
28 EntityBrowser browser;
\r
30 public ContentProducer(
\r
31 EntityBrowser aBrowser,
\r
32 String aGeneratorIdentifier,
\r
33 String aResourceBundle,
\r
34 String anOutputFilePrefix,
\r
35 String anOutputFilePostfix) {
\r
38 generatorIdentifier=aGeneratorIdentifier;
\r
39 resourceBundle=aResourceBundle;
\r
40 outputFilePrefix=anOutputFilePrefix;
\r
41 outputFilePostfix=anOutputFilePostfix;
\r
44 public void produce( PrintWriter aLogger ) throws ProducerException {
\r
45 EntityContent content;
\r
47 Map configMap = new HashMap();
\r
48 Map generationValues = new HashMap();
\r
49 Map dataMap = new HashMap();
\r
54 configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));
\r
55 configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));
\r
56 configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));
\r
57 configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));
\r
58 configMap.put("docRoot", MirGlobal.getConfigProperty("RootUri"));
\r
59 configMap.put("now", StringUtil.date2readableDateTime(new GregorianCalendar()));
\r
60 configMap.put("videoHost", MirGlobal.getConfigProperty("Producer.Video.Host"));
\r
61 configMap.put("audioHost", MirGlobal.getConfigProperty("Producer.Audio.Host"));
\r
62 configMap.put("imageHost", MirGlobal.getConfigProperty("Producer.Image.Host"));
\r
63 configMap.put("imagePath", MirGlobal.getConfigProperty("Producer.Image.Path"));
\r
64 configMap.put("mirVersion", MirGlobal.getConfigProperty("Mir.Version"));
\r
65 configMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
\r
66 generationValues.put("config", configMap);
\r
68 MessageResources messages = MessageResources.getMessageResources(resourceBundle);
\r
69 generationValues.put("lang", new MessageMethodModel(null, messages) );
\r
70 generationValues.put("data", dataMap);
\r
75 Generator generator = MirGlobal.localizer().generators().makeGenerator(generatorIdentifier);
\r
77 aLogger.println("ContentProducer.produce:<br>");
\r
78 aLogger.println("generatorIdentifier = " + generatorIdentifier + "<br>");
\r
80 while (browser.hasNext()) {
\r
81 content = (EntityContent) browser.next();
\r
82 dataMap.put("content", content);
\r
84 String date = content.getValue("date");
\r
86 fileName = outputFilePrefix + "/" +
\r
87 date.substring(0,4) + "/" + date.substring(4,6) + "/" +
\r
88 content.getValue("id") + outputFilePostfix;
\r
90 aLogger.println("fileName = " + fileName + "<br>");
\r
93 File file = new File(fileName);
\r
95 File dir = new File(file.getParent());
\r
100 FileWriter fileWriter = new FileWriter(file);
\r
101 PrintWriter printWriter = new PrintWriter(fileWriter);
\r
103 aLogger.println("generating: " + fileName + "<br/>");
\r
105 generator.generate(printWriter, generationValues, aLogger);
\r
106 printWriter.close();
\r
107 fileWriter.close();
\r
108 content.setProduced(true);
\r
110 aLogger.println("done generating: " + fileName + "<br/>");
\r
112 catch (Exception e) {
\r
113 aLogger.println("exception while generating " + fileName + ":<br/>");
\r
114 aLogger.println(e.getMessage() + "<br/>");
\r
115 e.printStackTrace(aLogger);
\r
120 catch (Exception e) {
\r
121 aLogger.println("exception while generating:<br/>");
\r
122 aLogger.println(e.getMessage() + "<br/>");
\r
123 e.printStackTrace(aLogger);
\r
127 aLogger.println("ContentProducer.produce: done<br>");
\r
134 package mircoders.producer;
141 import mir.producer.*;
142 import mir.generator.*;
144 import mircoders.localizer.*;
145 import mircoders.global.*;
146 import mircoders.entity.*;
148 import org.apache.struts.util.MessageResources;
150 // @todo ML: the file that gets generated should be better configurable
152 public class ContentProducer implements mir.producer.Producer {
154 private String generatorIdentifier;
155 private String resourceBundle;
157 private String outputFilePrefix;
158 private String outputFilePostfix;
160 EntityBrowser browser;
162 public ContentProducer(
163 EntityBrowser aBrowser,
164 String aGeneratorIdentifier,
165 String aResourceBundle,
166 String anOutputFilePrefix,
167 String anOutputFilePostfix) {
170 generatorIdentifier=aGeneratorIdentifier;
171 resourceBundle=aResourceBundle;
172 outputFilePrefix=anOutputFilePrefix;
173 outputFilePostfix=anOutputFilePostfix;
176 public void produce( PrintWriter aLogger ) throws ProducerException {
177 EntityContent content;
179 Map configMap = new HashMap();
180 Map generationValues = new HashMap();
181 Map dataMap = new HashMap();
186 configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));
187 configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));
188 configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));
189 configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));
190 configMap.put("docRoot", MirGlobal.getConfigProperty("RootUri"));
191 configMap.put("now", StringUtil.date2readableDateTime(new GregorianCalendar()));
192 configMap.put("videoHost", MirGlobal.getConfigProperty("Producer.Video.Host"));
193 configMap.put("audioHost", MirGlobal.getConfigProperty("Producer.Audio.Host"));
194 configMap.put("imageHost", MirGlobal.getConfigProperty("Producer.Image.Host"));
195 configMap.put("imagePath", MirGlobal.getConfigProperty("Producer.Image.Path"));
196 configMap.put("mirVersion", MirGlobal.getConfigProperty("Mir.Version"));
197 configMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
198 generationValues.put("config", configMap);
200 MessageResources messages = MessageResources.getMessageResources(resourceBundle);
201 generationValues.put("lang", new MessageMethodModel(null, messages) );
202 generationValues.put("data", dataMap);
207 Generator generator = MirGlobal.localizer().generators().makeGenerator(generatorIdentifier);
209 aLogger.println("ContentProducer.produce:<br>");
210 aLogger.println("generatorIdentifier = " + generatorIdentifier + "<br>");
212 while (browser.hasNext()) {
213 content = (EntityContent) browser.next();
214 dataMap.put("content", content);
216 String date = content.getValue("date");
219 fileName = outputFilePrefix + "/" +
220 date.substring(0,4) + "/" + date.substring(4,6) + "/" +
221 content.getValue("id") + outputFilePostfix;
223 aLogger.println("fileName = " + fileName + "<br>");
224 aLogger.println("Yo1<br>");
227 File file = new File(fileName);
228 File dir = new File(file.getParent());
232 FileWriter fileWriter = new FileWriter(file);
233 PrintWriter printWriter = new PrintWriter(fileWriter);
235 aLogger.println("generating: " + fileName + "<br/>");
237 aLogger.println("Yo2<br>");
238 generator.generate(printWriter, generationValues, aLogger);
240 aLogger.println("Yo3<br>");
243 aLogger.println("Yo4<br>");
245 aLogger.println("Yo5<br>");
247 content.setProduced(true);
248 aLogger.println("Yo6<br>");
250 aLogger.println("done generating: " + fileName + "<br/>");
252 catch (Exception e) {
253 aLogger.println("exception while generating " + fileName + ":<br/>");
254 aLogger.println(e.getMessage() + "<br/>");
255 e.printStackTrace(aLogger);
260 catch (Exception e) {
261 aLogger.println("exception while generating:<br/>");
262 aLogger.println(e.getMessage() + "<br/>");
263 e.printStackTrace(aLogger);
267 aLogger.println("ContentProducer.produce: done<br>");