import java.io.*;
import java.util.*;
+import mir.util.*;
import mir.misc.*;
import mir.entity.*;
import mir.producer.*;
private String generatorIdentifier;
private String resourceBundle;
- private String outputFilePrefix;
- private String outputFilePostfix;
+ private String outputFileExpression;
+
EntityBrowser browser;
EntityBrowser aBrowser,
String aGeneratorIdentifier,
String aResourceBundle,
- String anOutputFilePrefix,
- String anOutputFilePostfix) {
+ String anOutputFileExpression) {
browser = aBrowser;
- generatorIdentifier=aGeneratorIdentifier;
- resourceBundle=aResourceBundle;
- outputFilePrefix=anOutputFilePrefix;
- outputFilePostfix=anOutputFilePostfix;
+ generatorIdentifier = aGeneratorIdentifier;
+ resourceBundle = aResourceBundle;
+ outputFileExpression = anOutputFileExpression;
}
public void produce( PrintWriter aLogger ) throws ProducerException {
EntityContent content;
- Map configMap = new HashMap();
Map generationValues = new HashMap();
Map dataMap = new HashMap();
String fileName;
-
-
- configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));
- configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));
- configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));
- configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));
- configMap.put("docRoot", MirGlobal.getConfigProperty("RootUri"));
- configMap.put("now", StringUtil.date2readableDateTime(new GregorianCalendar()));
- configMap.put("videoHost", MirGlobal.getConfigProperty("Producer.Video.Host"));
- configMap.put("audioHost", MirGlobal.getConfigProperty("Producer.Audio.Host"));
- configMap.put("imageHost", MirGlobal.getConfigProperty("Producer.Image.Host"));
- configMap.put("imagePath", MirGlobal.getConfigProperty("Producer.Image.Path"));
- configMap.put("mirVersion", MirGlobal.getConfigProperty("Mir.Version"));
- configMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
- generationValues.put("config", configMap);
+ MirGlobal.localizer().producerTool().initializeGenerationValueSet(generationValues);
MessageResources messages = MessageResources.getMessageResources(resourceBundle);
generationValues.put("lang", new MessageMethodModel(null, messages) );
generationValues.put("data", dataMap);
-
-
try {
Generator generator = MirGlobal.localizer().generators().makeGenerator(generatorIdentifier);
- aLogger.println("ContentProducer.produce:<br>");
- aLogger.println("generatorIdentifier = " + generatorIdentifier + "<br>");
+ aLogger.println("ContentProducer.produce:");
+ aLogger.println("generatorIdentifier = " + generatorIdentifier);
while (browser.hasNext()) {
content = (EntityContent) browser.next();
String date = content.getValue("date");
- fileName = outputFilePrefix + "/" +
- date.substring(0,4) + "/" + date.substring(4,6) + "/" +
- content.getValue("id") + outputFilePostfix;
+ // ML: this will be done more elegantly soon!
+ dataMap.put("contentmonth", date.substring(4,6));
+ dataMap.put("contentyear", date.substring(0,4));
+ dataMap.put("contentid", content.getValue("id"));
+
+ aLogger.println("unparsed fileName = " + outputFileExpression);
+
+ fileName = ParameterExpander.expandExpression(dataMap, outputFileExpression);
- aLogger.println("fileName = " + fileName + "<br>");
+ aLogger.println("fileName = " + fileName);
try {
File file = new File(fileName);
FileWriter fileWriter = new FileWriter(file);
PrintWriter printWriter = new PrintWriter(fileWriter);
- aLogger.println("generating: " + fileName + "<br/>");
+ aLogger.println("generating: " + fileName);
generator.generate(printWriter, generationValues, aLogger);
printWriter.close();
fileWriter.close();
content.setProduced(true);
- aLogger.println("done generating: " + fileName + "<br/>");
+ aLogger.println("done generating: " + fileName);
}
catch (Exception e) {
- aLogger.println("exception while generating " + fileName + ":<br/>");
- aLogger.println(e.getMessage() + "<br/>");
+ aLogger.println("exception while generating " + fileName + ":");
+ aLogger.println(e.getMessage());
e.printStackTrace(aLogger);
aLogger.flush();
}
}
}
catch (Exception e) {
- aLogger.println("exception while generating:<br/>");
- aLogger.println(e.getMessage() + "<br/>");
+ aLogger.println("exception while generating:");
+ aLogger.println(e.getMessage());
e.printStackTrace(aLogger);
aLogger.flush();
}
- aLogger.println("ContentProducer.produce: done<br>");
+ aLogger.println("ContentProducer.produce: done");
}