1 package mircoders.producer;
9 import mir.generator.*;
11 import mircoders.localizer.*;
12 import mircoders.global.*;
13 import mircoders.entity.*;
15 import mircoders.module.*;
17 import org.apache.struts.util.MessageResources;
19 public class StartPageProducer implements mir.producer.Producer {
21 private String generatorIdentifier;
22 private String resourceBundle;
23 private String outputFile;
24 private EntityList newswireItems;
25 private EntityList features;
26 private EntityList topics;
27 private EntityList breakingNews;
29 EntityBrowser browser;
31 public StartPageProducer(
32 String aGeneratorIdentifier,
33 String aResourceBundle,
36 EntityList aNewswireItems,
39 EntityList aBreakingNews) {
41 generatorIdentifier=aGeneratorIdentifier;
42 resourceBundle=aResourceBundle;
43 outputFile=anOutputFile;
44 newswireItems = aNewswireItems;
47 breakingNews = aBreakingNews;
50 public void produce( PrintWriter aLogger ) throws ProducerException {
51 Map configMap = new HashMap();
52 Map generationValues = new HashMap();
53 Map dataMap = new HashMap();
56 configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));
57 configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));
58 configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));
59 configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));
60 configMap.put("docRoot", MirGlobal.getConfigProperty("RootUri"));
61 configMap.put("now", StringUtil.date2readableDateTime(new GregorianCalendar()));
62 configMap.put("videoHost", MirGlobal.getConfigProperty("Producer.Video.Host"));
63 configMap.put("audioHost", MirGlobal.getConfigProperty("Producer.Audio.Host"));
64 configMap.put("imageHost", MirGlobal.getConfigProperty("Producer.Image.Host"));
65 configMap.put("imagePath", MirGlobal.getConfigProperty("Producer.Image.Path"));
66 configMap.put("mirVersion", MirGlobal.getConfigProperty("Mir.Version"));
67 configMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
69 generationValues.put("config", configMap);
71 MessageResources messages = MessageResources.getMessageResources(resourceBundle);
72 generationValues.put("lang", new MessageMethodModel(null, messages) );
74 generationValues.put("data", dataMap);
76 dataMap.put("dc_now", StringUtil.date2w3DateTime(new GregorianCalendar()));
77 dataMap.put("newswire", newswireItems);
78 dataMap.put("features", features);
79 dataMap.put("breakingnews", breakingNews);
80 dataMap.put("topics", topics);
83 Generator generator = MirGlobal.localizer().generators().makeGenerator(generatorIdentifier);
85 aLogger.println("StartPageProducer.produce:");
86 aLogger.println("generatorIdentifier = " + generatorIdentifier);
88 File file = new File(outputFile);
89 FileWriter fileWriter = new FileWriter(file);
90 PrintWriter printWriter = new PrintWriter(fileWriter);
92 aLogger.println("generating: " + outputFile);
93 generator.generate(printWriter, generationValues, aLogger);
96 aLogger.println("done");
99 aLogger.println("exception while generating " + outputFile + ":");
100 aLogger.println(e.getMessage());
101 e.printStackTrace(aLogger);