private List Queue;
private Thread queueThread;
- void ProducerEngine() {
+ protected ProducerEngine() {
producers = MirGlobal.localizer().producers().factories();
Queue = new Vector();
// queueThread = new Thread(
}
- void addTask(String aProducerFactory, String aVerb) {
+ public void addTask(String aProducerFactory, String aVerb) {
produceNow(aProducerFactory, aVerb, new PrintWriter(new NullWriter()));
}
- void produceNow(String aProducerFactory, String aVerb, PrintWriter aLogger) {
+ public void produceNow(String aProducerFactory, String aVerb, PrintWriter aLogger) {
try {
- aLogger.println("Producing <" + aProducerFactory + "," + aVerb + "><br>");
+ long startTime;
+ long endTime;
+
+ startTime = System.currentTimeMillis();
+
+ aLogger.println("Producing (" + aProducerFactory + "," + aVerb + ")<br>");
+
+ if (producers == null)
+ aLogger.println("??<br>");
ProducerFactory factory = (ProducerFactory) producers.get(aProducerFactory);
Producer producer = factory.makeProducer(aVerb);
producer.produce(aLogger);
+
+ endTime = System.currentTimeMillis();
+
+ aLogger.println("Time: " + (endTime-startTime) + " ms<br>");
}
catch (Throwable e) {
try {
+<<<<<<< ContentProducer.java
+package mircoders.producer;\r
+\r
+import java.io.*;\r
+import java.util.*;\r
+\r
+import mir.misc.*;\r
+import mir.entity.*;\r
+import mir.producer.*;\r
+import mir.generator.*;\r
+\r
+import mircoders.localizer.*;\r
+import mircoders.global.*;\r
+import mircoders.entity.*;\r
+\r
+import org.apache.struts.util.MessageResources;\r
+\r
+// @todo ML: the file that gets generated should be better configurable\r
+\r
+public class ContentProducer implements mir.producer.Producer {\r
+\r
+ private String generatorIdentifier;\r
+ private String resourceBundle;\r
+\r
+ private String outputFilePrefix;\r
+ private String outputFilePostfix;\r
+\r
+ EntityBrowser browser;\r
+\r
+ public ContentProducer(\r
+ EntityBrowser aBrowser,\r
+ String aGeneratorIdentifier,\r
+ String aResourceBundle,\r
+ String anOutputFilePrefix,\r
+ String anOutputFilePostfix) {\r
+\r
+ browser = aBrowser;\r
+ generatorIdentifier=aGeneratorIdentifier;\r
+ resourceBundle=aResourceBundle;\r
+ outputFilePrefix=anOutputFilePrefix;\r
+ outputFilePostfix=anOutputFilePostfix;\r
+ }\r
+\r
+ public void produce( PrintWriter aLogger ) throws ProducerException {\r
+ EntityContent content;\r
+\r
+ Map configMap = new HashMap();\r
+ Map generationValues = new HashMap();\r
+ Map dataMap = new HashMap();\r
+ String fileName;\r
+\r
+\r
+\r
+ configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));\r
+ configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));\r
+ configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));\r
+ configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));\r
+ configMap.put("docRoot", MirGlobal.getConfigProperty("RootUri"));\r
+ configMap.put("now", StringUtil.date2readableDateTime(new GregorianCalendar()));\r
+ configMap.put("videoHost", MirGlobal.getConfigProperty("Producer.Video.Host"));\r
+ configMap.put("audioHost", MirGlobal.getConfigProperty("Producer.Audio.Host"));\r
+ configMap.put("imageHost", MirGlobal.getConfigProperty("Producer.Image.Host"));\r
+ configMap.put("imagePath", MirGlobal.getConfigProperty("Producer.Image.Path"));\r
+ configMap.put("mirVersion", MirGlobal.getConfigProperty("Mir.Version"));\r
+ configMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );\r
+ generationValues.put("config", configMap);\r
+\r
+ MessageResources messages = MessageResources.getMessageResources(resourceBundle);\r
+ generationValues.put("lang", new MessageMethodModel(null, messages) );\r
+ generationValues.put("data", dataMap);\r
+\r
+\r
+\r
+ try {\r
+ Generator generator = MirGlobal.localizer().generators().makeGenerator(generatorIdentifier);\r
+\r
+ aLogger.println("ContentProducer.produce:<br>");\r
+ aLogger.println("generatorIdentifier = " + generatorIdentifier + "<br>");\r
+\r
+ while (browser.hasNext()) {\r
+ content = (EntityContent) browser.next();\r
+ dataMap.put("content", content);\r
+\r
+ String date = content.getValue("date");\r
+\r
+ fileName = outputFilePrefix + "/" +\r
+ date.substring(0,4) + "/" + date.substring(4,6) + "/" +\r
+ content.getValue("id") + outputFilePostfix;\r
+\r
+ aLogger.println("fileName = " + fileName + "<br>");\r
+\r
+ try {\r
+ File file = new File(fileName);\r
+\r
+ File dir = new File(file.getParent());\r
+ if (!dir.exists()){\r
+ dir.mkdirs();\r
+ }\r
+\r
+ FileWriter fileWriter = new FileWriter(file);\r
+ PrintWriter printWriter = new PrintWriter(fileWriter);\r
+\r
+ aLogger.println("generating: " + fileName + "<br/>");\r
+\r
+ generator.generate(printWriter, generationValues, aLogger);\r
+ printWriter.close();\r
+ fileWriter.close();\r
+ content.setProduced(true);\r
+\r
+ aLogger.println("done generating: " + fileName + "<br/>");\r
+ }\r
+ catch (Exception e) {\r
+ aLogger.println("exception while generating " + fileName + ":<br/>");\r
+ aLogger.println(e.getMessage() + "<br/>");\r
+ e.printStackTrace(aLogger);\r
+ aLogger.flush();\r
+ }\r
+ }\r
+ }\r
+ catch (Exception e) {\r
+ aLogger.println("exception while generating:<br/>");\r
+ aLogger.println(e.getMessage() + "<br/>");\r
+ e.printStackTrace(aLogger);\r
+ aLogger.flush();\r
+ }\r
+\r
+ aLogger.println("ContentProducer.produce: done<br>");\r
+\r
+ }\r
+\r
+}\r
+\r
+=======
package mircoders.producer;
import java.io.*;
}
+>>>>>>> 1.1.2.2