1 package mircoders.producer;
10 import mir.generator.*;
12 import mircoders.localizer.*;
13 import mircoders.global.*;
14 import mircoders.entity.*;
15 import mircoders.entity.adapter.*;
17 import org.apache.struts.util.MessageResources;
19 public class ContentProducer implements mir.producer.Producer {
21 private String generatorIdentifier;
22 private String resourceBundle;
24 private String outputFileExpression;
27 EntityBrowser browser;
29 public ContentProducer(
30 EntityBrowser aBrowser,
31 String aGeneratorIdentifier,
32 String aResourceBundle,
33 String anOutputFileExpression) {
36 generatorIdentifier = aGeneratorIdentifier;
37 resourceBundle = aResourceBundle;
38 outputFileExpression = anOutputFileExpression;
41 public void produce( PrintWriter aLogger ) throws ProducerFailure {
42 EntityContent content;
44 Map generationValues = new HashMap();
45 Map dataMap = new HashMap();
48 MirGlobal.localizer().producerTool().initializeGenerationValueSet(generationValues);
50 MessageResources messages = MessageResources.getMessageResources(resourceBundle);
51 generationValues.put("lang", new MessageMethodModel(null, messages) );
52 generationValues.put("data", dataMap);
55 Generator generator = MirGlobal.localizer().generators().makeGenerator(generatorIdentifier);
57 aLogger.println("ContentProducer.produce:");
58 aLogger.println("generatorIdentifier = " + generatorIdentifier);
60 while (browser.hasNext()) {
61 content = (EntityContent) browser.next();
62 dataMap.put("content", ContentAdapterDefinition.getInstance().makeEntityAdapter(content));
64 String date = content.getValue("date");
66 // ML: this will be done more elegantly soon!
67 dataMap.put("contentmonth", date.substring(4,6));
68 dataMap.put("contentyear", date.substring(0,4));
69 dataMap.put("contentid", content.getValue("id"));
71 aLogger.println("unparsed fileName = " + outputFileExpression);
73 fileName = ParameterExpander.expandExpression(dataMap, outputFileExpression);
75 aLogger.println("fileName = " + fileName);
78 aLogger.println("generating: " + fileName);
80 PrintWriter printWriter = MirGlobal.localizer().producerTool().openWriter(fileName);
82 generator.generate(printWriter, generationValues, aLogger);
84 MirGlobal.localizer().producerTool().closeWriter(printWriter);
86 content.setProduced(true);
88 aLogger.println("done generating: " + fileName);
91 aLogger.println("exception while generating " + fileName + ":");
92 aLogger.println(e.getMessage());
93 e.printStackTrace(aLogger);
99 aLogger.println("exception while generating:");
100 aLogger.println(e.getMessage());
101 e.printStackTrace(aLogger);
105 aLogger.println("ContentProducer.produce: done");