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;
14 private String encodingExpression;
16 public GeneratingProducerNode(String aGenerator, String aDestination, String anEncoding) {
17 generatorExpression=aGenerator;
18 destinationExpression=aDestination;
19 encodingExpression=anEncoding;
21 public GeneratingProducerNode(String aGenerator, String aDestination) {
22 this(aGenerator, aDestination, "");
25 public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
27 PrintWriter printWriter;
28 String generatorIdentifier;
29 String destinationIdentifier;
30 String encodingIdentifier;
35 startTime = System.currentTimeMillis();
37 destinationIdentifier = ParameterExpander.expandExpression( aValueMap, destinationExpression );
38 generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression );
39 encodingIdentifier = ParameterExpander.expandExpression( aValueMap, encodingExpression );
41 aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier + " using encoding " + encodingIdentifier);
43 printWriter = MirGlobal.localizer().producerAssistant().openWriter( destinationIdentifier, encodingIdentifier);
44 generator = MirGlobal.localizer().generators().makeGenerator( generatorIdentifier );
45 generator.generate(printWriter, aValueMap, aLogger);
46 MirGlobal.localizer().producerAssistant().closeWriter( printWriter );
49 aLogger.println(" error while generating: " + t.getMessage());
52 endTime = System.currentTimeMillis();
54 aLogger.println(" Time: " + (endTime-startTime) + " ms<br>");
58 public Set buildVerbSet() {