X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fproducer%2FContentProducer.java;h=5790063a33f8f0094f2589978bdfd887e20a6def;hb=6a5286a1e7f2db55a7d312bb9b1ef40453b3612d;hp=428331b46d1a5a75c6f70fa439577772b5e1da4e;hpb=47a1f9d32e70436a3a92214296430184fabf6576;p=mir.git diff --git a/source/mircoders/producer/ContentProducer.java b/source/mircoders/producer/ContentProducer.java index 428331b4..5790063a 100755 --- a/source/mircoders/producer/ContentProducer.java +++ b/source/mircoders/producer/ContentProducer.java @@ -3,6 +3,7 @@ package mircoders.producer; import java.io.*; import java.util.*; +import mir.util.*; import mir.misc.*; import mir.entity.*; import mir.producer.*; @@ -21,8 +22,8 @@ public class ContentProducer implements mir.producer.Producer { private String generatorIdentifier; private String resourceBundle; - private String outputFilePrefix; - private String outputFilePostfix; + private String outputFileExpression; + EntityBrowser browser; @@ -30,51 +31,32 @@ public class ContentProducer implements mir.producer.Producer { 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:
"); - aLogger.println("generatorIdentifier = " + generatorIdentifier + "
"); + aLogger.println("ContentProducer.produce:"); + aLogger.println("generatorIdentifier = " + generatorIdentifier); while (browser.hasNext()) { content = (EntityContent) browser.next(); @@ -82,11 +64,16 @@ public class ContentProducer implements mir.producer.Producer { 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 + "
"); + aLogger.println("fileName = " + fileName); try { File file = new File(fileName); @@ -99,31 +86,31 @@ public class ContentProducer implements mir.producer.Producer { FileWriter fileWriter = new FileWriter(file); PrintWriter printWriter = new PrintWriter(fileWriter); - aLogger.println("generating: " + fileName + "
"); + aLogger.println("generating: " + fileName); generator.generate(printWriter, generationValues, aLogger); printWriter.close(); fileWriter.close(); content.setProduced(true); - aLogger.println("done generating: " + fileName + "
"); + aLogger.println("done generating: " + fileName); } catch (Exception e) { - aLogger.println("exception while generating " + fileName + ":
"); - aLogger.println(e.getMessage() + "
"); + aLogger.println("exception while generating " + fileName + ":"); + aLogger.println(e.getMessage()); e.printStackTrace(aLogger); aLogger.flush(); } } } catch (Exception e) { - aLogger.println("exception while generating:
"); - aLogger.println(e.getMessage() + "
"); + aLogger.println("exception while generating:"); + aLogger.println(e.getMessage()); e.printStackTrace(aLogger); aLogger.flush(); } - aLogger.println("ContentProducer.produce: done
"); + aLogger.println("ContentProducer.produce: done"); }