1 package mircoders.producer;
10 import mir.generator.*;
12 import mircoders.localizer.*;
13 import mircoders.global.*;
14 import mircoders.entity.*;
16 import org.apache.struts.util.MessageResources;
18 // @todo ML: the file that gets generated should be better configurable
20 public class ContentProducer implements mir.producer.Producer {
22 private String generatorIdentifier;
23 private String resourceBundle;
25 private String outputFileExpression;
28 EntityBrowser browser;
30 public ContentProducer(
31 EntityBrowser aBrowser,
32 String aGeneratorIdentifier,
33 String aResourceBundle,
34 String anOutputFileExpression) {
37 generatorIdentifier = aGeneratorIdentifier;
38 resourceBundle = aResourceBundle;
39 outputFileExpression = anOutputFileExpression;
42 public void produce( PrintWriter aLogger ) throws ProducerException {
43 EntityContent content;
45 Map generationValues = new HashMap();
46 Map dataMap = new HashMap();
49 MirGlobal.localizer().producerTool().initializeGenerationValueSet(generationValues);
51 MessageResources messages = MessageResources.getMessageResources(resourceBundle);
52 generationValues.put("lang", new MessageMethodModel(null, messages) );
53 generationValues.put("data", dataMap);
56 Generator generator = MirGlobal.localizer().generators().makeGenerator(generatorIdentifier);
58 aLogger.println("ContentProducer.produce:");
59 aLogger.println("generatorIdentifier = " + generatorIdentifier);
61 while (browser.hasNext()) {
62 content = (EntityContent) browser.next();
63 dataMap.put("content", content);
65 String date = content.getValue("date");
67 // ML: this will be done more elegantly soon!
68 dataMap.put("contentmonth", date.substring(4,6));
69 dataMap.put("contentyear", date.substring(0,4));
70 dataMap.put("contentid", content.getValue("id"));
72 aLogger.println("unparsed fileName = " + outputFileExpression);
74 fileName = ParameterExpander.expandExpression(dataMap, outputFileExpression);
76 aLogger.println("fileName = " + fileName);
79 File file = new File(fileName);
81 File dir = new File(file.getParent());
86 FileWriter fileWriter = new FileWriter(file);
87 PrintWriter printWriter = new PrintWriter(fileWriter);
89 aLogger.println("generating: " + fileName);
91 generator.generate(printWriter, generationValues, aLogger);
94 content.setProduced(true);
96 aLogger.println("done generating: " + fileName);
99 aLogger.println("exception while generating " + fileName + ":");
100 aLogger.println(e.getMessage());
101 e.printStackTrace(aLogger);
106 catch (Exception e) {
107 aLogger.println("exception while generating:");
108 aLogger.println(e.getMessage());
109 e.printStackTrace(aLogger);
113 aLogger.println("ContentProducer.produce: done");