1ab617b1d60a0d355cd02925f17be48374a075df
[mir.git] / source / mircoders / producer / GeneratingProducerNode.java
1 package mircoders.producer;
2
3 import java.util.*;
4 import java.io.*;
5 import mir.util.*;
6 import mir.producer.*;
7 import mir.generator.*;
8 import mircoders.global.*;
9 import mircoders.localizer.*;
10
11 public class GeneratingProducerNode implements ProducerNode {
12   private String generatorExpression;
13   private String destinationExpression;
14
15   public GeneratingProducerNode(String aGenerator, String aDestination) {
16     generatorExpression=aGenerator;
17     destinationExpression=aDestination;
18   }
19
20   public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
21     Generator generator;
22     PrintWriter printWriter;
23     String generatorIdentifier;
24     String destinationIdentifier;
25
26           long startTime;
27           long endTime;
28
29           startTime = System.currentTimeMillis();
30     try {
31
32       destinationIdentifier = ParameterExpander.expandExpression( aValueMap, destinationExpression );
33       generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression );
34
35       aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier);
36       aLogger.flush();
37       printWriter = MirGlobal.localizer().producerTool().openWriter( destinationIdentifier );
38       generator = MirGlobal.localizer().generators().makeGenerator( generatorIdentifier );
39       generator.generate(printWriter, aValueMap, aLogger);
40       MirGlobal.localizer().producerTool().closeWriter( printWriter );
41         }
42         catch (Throwable t) {
43     }
44     endTime = System.currentTimeMillis();
45
46     aLogger.println("  Time: " + (endTime-startTime) + " ms<br>");
47     aLogger.flush();
48   }
49
50   public Set buildVerbSet() {
51     return new HashSet();
52   }
53 }