-<<<<<<< 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.*;
import java.util.*;
+import mir.util.*;
import mir.misc.*;
import mir.entity.*;
import mir.producer.*;
import mircoders.localizer.*;
import mircoders.global.*;
import mircoders.entity.*;
+import mircoders.entity.adapter.*;
import org.apache.struts.util.MessageResources;
-// @todo ML: the file that gets generated should be better configurable
-
public class ContentProducer implements mir.producer.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 {
+ public void produce( PrintWriter aLogger ) throws ProducerFailure {
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();
- dataMap.put("content", content);
+ dataMap.put("content", ContentAdapterDefinition.getInstance().makeEntityAdapter(content));
String date = content.getValue("date");
+ // 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 = outputFilePrefix + "/" +
- date.substring(0,4) + "/" + date.substring(4,6) + "/" +
- content.getValue("id") + outputFilePostfix;
+ fileName = ParameterExpander.expandExpression(dataMap, outputFileExpression);
- aLogger.println("fileName = " + fileName + "<br>");
- aLogger.println("Yo1<br>");
+ aLogger.println("fileName = " + fileName);
try {
- File file = new File(fileName);
- File dir = new File(file.getParent());
- if (!dir.exists()){
- dir.mkdirs();
- }
- FileWriter fileWriter = new FileWriter(file);
- PrintWriter printWriter = new PrintWriter(fileWriter);
+ aLogger.println("generating: " + fileName);
- aLogger.println("generating: " + fileName + "<br/>");
+ PrintWriter printWriter = MirGlobal.localizer().producerTool().openWriter(fileName);
- aLogger.println("Yo2<br>");
generator.generate(printWriter, generationValues, aLogger);
- aLogger.println("Yo3<br>");
- printWriter.close();
- fileWriter.close();
- aLogger.println("Yo4<br>");
-
- aLogger.println("Yo5<br>");
+ MirGlobal.localizer().producerTool().closeWriter(printWriter);
content.setProduced(true);
- aLogger.println("Yo6<br>");
- 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");
}
}
-
->>>>>>> 1.1.2.2