1 package mircoders.producer;
7 import mir.generator.*;
8 import mircoders.global.*;
9 import mircoders.localizer.*;
11 public class GeneratingProducerNode implements ProducerNode {
12 private String generatorExpression;
13 private String destinationExpression;
15 public GeneratingProducerNode(String aGenerator, String aDestination) {
16 generatorExpression=aGenerator;
17 destinationExpression=aDestination;
20 public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
22 PrintWriter printWriter;
23 String generatorIdentifier;
24 String destinationIdentifier;
27 destinationIdentifier = ParameterExpander.expandExpression( aValueMap, destinationExpression );
28 generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression );
30 aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier);
31 printWriter = MirGlobal.localizer().producerTool().openWriter( destinationIdentifier );
32 generator = MirGlobal.localizer().generators().makeGenerator( generatorIdentifier );
33 generator.generate(printWriter, aValueMap, aLogger);
34 MirGlobal.localizer().producerTool().closeWriter( printWriter );
35 aLogger.println("Done generating");
38 aLogger.println("Error while generating: " + t.getMessage());
39 t.printStackTrace(aLogger);
41 throw new ProducerFailure(t.getMessage(), t);
46 public Set buildVerbSet() {