7 import mir.generator.*;
9 public class GeneratingProducerNode implements ProducerNode {
10 private String generatorExpression;
11 private String destinationExpression;
12 private String parametersExpression;
13 private Generator.GeneratorLibrary generatorLibrary;
14 private WriterEngine writerEngine;
16 public GeneratingProducerNode(Generator.GeneratorLibrary aGeneratorLibrary, WriterEngine aWriterEngine, String aGenerator, String aDestination, String aParameters) {
17 generatorExpression=aGenerator;
18 destinationExpression=aDestination;
19 parametersExpression=aParameters;
20 generatorLibrary = aGeneratorLibrary;
21 writerEngine = aWriterEngine;
24 public GeneratingProducerNode(Generator.GeneratorLibrary aGeneratorLibrary, WriterEngine aWriterEngine, String aGenerator, String aDestination) {
25 this(aGeneratorLibrary, aWriterEngine, aGenerator, aDestination, "");
28 public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
31 String generatorIdentifier;
32 String destinationIdentifier;
38 startTime = System.currentTimeMillis();
40 destinationIdentifier = ParameterExpander.expandExpression( aValueMap, destinationExpression );
41 generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression );
42 parameters = ParameterExpander.expandExpression( aValueMap, parametersExpression );
44 aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier + " using parameters " + parameters);
47 writer = writerEngine.openWriter( destinationIdentifier, parameters );
48 generator = generatorLibrary.makeGenerator( generatorIdentifier );
49 generator.generate(writer, aValueMap, aLogger);
50 writerEngine.closeWriter( writer );
53 aLogger.println(" error while generating: " + t.getClass().getName() + ": " + t.getMessage());
54 t.printStackTrace(aLogger);
57 endTime = System.currentTimeMillis();
59 aLogger.println(" Time: " + (endTime-startTime) + " ms");
63 public Set buildVerbSet() {