public interface MirProducerAssistantLocalizer {
public void initializeGenerationValueSet(Map aValueSet) throws MirLocalizerException, MirLocalizerFailure;
- public PrintWriter openWriter(String anIdentifier) throws MirLocalizerException, MirLocalizerFailure;
+ public PrintWriter openWriter(String anIdentifier, String anEncoding) throws MirLocalizerException, MirLocalizerFailure;
public void closeWriter(PrintWriter aWriter) throws MirLocalizerException, MirLocalizerFailure;
public String filterText(String aText) throws MirLocalizerException, MirLocalizerFailure;
}
aValueSet.put("articletype", articleTypeMap);
};
- public PrintWriter openWriter(String anIdentifier) throws MirLocalizerFailure {
+ public PrintWriter openWriter(String anIdentifier, String anEncoding) throws MirLocalizerFailure {
+ String encoding;
File file;
File dir;
+ if (anEncoding!=null && !anEncoding.equals(""))
+ encoding = anEncoding;
+ else
+ encoding = MirGlobal.getConfigProperty("Mir.DefaultEncoding");
+
try {
file = new File( anIdentifier );
dir = new File(file.getParent());
return new PrintWriter(
new OutputStreamWriter(
- new FileOutputStream(file), MirGlobal.getConfigProperty("Mir.DefaultEncoding")
+ new FileOutputStream(file), anEncoding
)
);
}
public class GeneratingProducerNode implements ProducerNode {
private String generatorExpression;
private String destinationExpression;
+ private String encodingExpression;
- public GeneratingProducerNode(String aGenerator, String aDestination) {
+ public GeneratingProducerNode(String aGenerator, String aDestination, String anEncoding) {
generatorExpression=aGenerator;
destinationExpression=aDestination;
+ encodingExpression=anEncoding;
+ }
+ public GeneratingProducerNode(String aGenerator, String aDestination) {
+ this(aGenerator, aDestination, "");
}
public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
PrintWriter printWriter;
String generatorIdentifier;
String destinationIdentifier;
+ String encodingIdentifier;
- long startTime;
- long endTime;
+ long startTime;
+ long endTime;
- startTime = System.currentTimeMillis();
+ startTime = System.currentTimeMillis();
try {
-
destinationIdentifier = ParameterExpander.expandExpression( aValueMap, destinationExpression );
generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression );
+ encodingIdentifier = ParameterExpander.expandExpression( aValueMap, encodingExpression );
- aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier);
+ aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier + " using encoding " + encodingIdentifier);
aLogger.flush();
- printWriter = MirGlobal.localizer().producerAssistant().openWriter( destinationIdentifier );
+ printWriter = MirGlobal.localizer().producerAssistant().openWriter( destinationIdentifier, encodingIdentifier);
generator = MirGlobal.localizer().generators().makeGenerator( generatorIdentifier );
generator.generate(printWriter, aValueMap, aLogger);
MirGlobal.localizer().producerAssistant().closeWriter( printWriter );
- }
- catch (Throwable t) {
- aLogger.println(" error while generating: " + t.getMessage());
+ }
+ catch (Throwable t) {
+ aLogger.println(" error while generating: " + t.getMessage());
aLogger.flush();
}
endTime = System.currentTimeMillis();