X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=inline;f=source%2Fmir%2Fmisc%2FHTMLTemplateProcessor.java;h=9faf4d02f6e30f09ab532f6e0a2b5912829887dc;hb=0525a0916e50fcf811403dcc75b7365949c6aca4;hp=139c69465310e0b7053333a288e65224dbf34587;hpb=31b2b299af14d02e348ba161ca7f1f831fc22806;p=mir.git diff --git a/source/mir/misc/HTMLTemplateProcessor.java b/source/mir/misc/HTMLTemplateProcessor.java index 139c6946..9faf4d02 100755 --- a/source/mir/misc/HTMLTemplateProcessor.java +++ b/source/mir/misc/HTMLTemplateProcessor.java @@ -13,6 +13,7 @@ import freemarker.template.*; import mir.entity.*; import mir.storage.*; import javax.servlet.http.*; +import org.apache.struts.util.MessageResources; /** @@ -29,32 +30,44 @@ public final class HTMLTemplateProcessor { private static String audioHost; private static String videoHost; private static String imageHost; + private static String imagePath; private static String openAction; - protected static String producerDocRoot = MirConfig.getProp("Producer.DocRoot"); - protected static String producerStorageRoot = MirConfig.getProp("Producer.StorageRoot"); - + protected static String producerDocRoot = + MirConfig.getProp("Producer.DocRoot"); + protected static String producerStorageRoot = + MirConfig.getProp("Producer.StorageRoot"); // // init static { - + /** @todo either in the above block or here :) //rk */ templateDir = MirConfig.getPropWithHome("HTMLTemplateProcessor.Dir"); templateCache = new FileTemplateCache(templateDir); templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND); - templateCache.startAutoUpdate(); + // gone in freemarker 1.7.1 + // templateCache.startAutoUpdate(); theLog = Logfile.getInstance(MirConfig.getPropWithHome("HTMLTemplateProcessor.Logfile")); docRoot = MirConfig.getProp("RootUri"); - actionRoot = docRoot + "/servlet/" + MirConfig.getProp("ServletName"); + //the quick hack is back in effect as it was more broken than ever before + // -mh + // sorry: nadir back in town, i have to debug the mirbase.jar in the + // nadir evironment. from my point of coding, this needs an urgent + // fixxx. + // yeah, from my point too - tob. + //actionRoot = docRoot + "/servlet/" + MirConfig.getProp("ServletName"); + //actionRoot = docRoot + "/servlet/NadirAktuell"; + + actionRoot = docRoot + "/servlet/Mir"; openAction = MirConfig.getProp("Producer.OpenAction"); productionHost = MirConfig.getProp("Producer.ProductionHost"); videoHost = MirConfig.getProp("Producer.VideoHost"); audioHost = MirConfig.getProp("Producer.AudioHost"); imageHost = MirConfig.getProp("Producer.Image.Host"); + imagePath = MirConfig.getProp("Producer.Image.Path"); producerDocRoot = MirConfig.getProp("Producer.DocRoot"); producerStorageRoot = MirConfig.getProp("Producer.StorageRoot"); - } /** @@ -95,9 +108,10 @@ public final class HTMLTemplateProcessor { * @param out * @exception HTMLParseException */ - public static void process(HttpServletResponse res,String templateFilename, EntityList entList, PrintWriter out) - throws HTMLParseException { - process(res, templateFilename, entList, (String)null, (TemplateModelRoot)null, out); + public static void process(HttpServletResponse res,String templateFilename, + EntityList entList, PrintWriter out, Locale locale) + throws HTMLParseException { + process(res, templateFilename, entList, (String)null, (TemplateModelRoot)null, out, locale); } /** @@ -113,14 +127,16 @@ public final class HTMLTemplateProcessor { * @param out * @exception HTMLParseException */ - public static void process(HttpServletResponse res,String templateFilename, EntityList entList, String additionalModelName, - TemplateModelRoot additionalModel, PrintWriter out) + public static void process(HttpServletResponse res,String templateFilename, + EntityList entList, String additionalModelName, + TemplateModelRoot additionalModel, PrintWriter out, + Locale locale) throws HTMLParseException { SimpleHash modelRoot = new SimpleHash(); if (entList == null) { - process(null,templateFilename, modelRoot, out); + process(null,templateFilename, modelRoot, out, locale); } else { try { modelRoot = makeSimpleHashWithEntitylistInfos(entList); @@ -129,7 +145,7 @@ public final class HTMLTemplateProcessor { if (additionalModelName != null && additionalModel != null) modelRoot.put(additionalModelName, additionalModel); - process(res,templateFilename, modelRoot, out); + process(res,templateFilename, modelRoot, out, locale); } catch (StorageObjectException e) { throw new HTMLParseException(e.toString()); } @@ -142,13 +158,14 @@ public final class HTMLTemplateProcessor { * out * * @param templateFilename - * @param mergeData + * @param mergeData - a HashMap with mergeData to be converted in SimpleHash * @param out * @exception HTMLParseException */ - public static void process(HttpServletResponse res,String templateFilename, HashMap mergeData, PrintWriter out) + public static void process(HttpServletResponse res,String templateFilename, + HashMap mergeData, PrintWriter out, Locale locale) throws HTMLParseException { - process(res,templateFilename, makeSimpleHash(mergeData), out); + process(res,templateFilename, makeSimpleHash(mergeData), out, locale); } /** @@ -160,11 +177,29 @@ public final class HTMLTemplateProcessor { * @param out * @exception HTMLParseException */ - public static void process(String templateFilename, PrintWriter out) + public static void process(String templateFilename, PrintWriter out, + Locale locale) throws HTMLParseException { - process(null,templateFilename, (TemplateModelRoot)null, out); + process(null,templateFilename, (TemplateModelRoot)null, out, locale); } + + /** + * Mischt die freemarker-Struktur tmr mit + * Template templateFilename und gibt das Ergebnis an den PrintWriter + * out + * + * @param templateFilename + * @param mergeData + * @param out + * @exception HTMLParseException + */ + public static void process(HttpServletResponse res,String templateFilename, + TemplateModelRoot tmr, PrintWriter out, Locale locale) + throws HTMLParseException { + process(res,templateFilename,tmr,null,out,locale); + + } /** * Mischt die freemarker-Struktur tmr mit @@ -176,53 +211,74 @@ public final class HTMLTemplateProcessor { * @param out * @exception HTMLParseException */ - public static void process(HttpServletResponse res,String templateFilename, TemplateModelRoot tmr, PrintWriter out) - throws HTMLParseException { - if (out==null) throw new HTMLParseException("KEIN OUTPUTSTREAM"); - Template tmpl = getTemplateFor(templateFilename); - if (tmpl == null) throw new HTMLParseException("KEIN TEMPLATE: " + templateFilename); - if (tmr==null) tmr = new SimpleHash(); - - String session=null; - if (res!=null) { - session=res.encodeURL(""); - } - - // put standard configuration into tempalteRootmodel - SimpleHash configHash = new SimpleHash(); - configHash.put("docroot", new SimpleScalar(producerDocRoot)); - configHash.put("storageroot", new SimpleScalar(producerStorageRoot)); - configHash.put("productionhost", new SimpleScalar(productionHost)); - configHash.put("openaction", new SimpleScalar(openAction)); - configHash.put("actionRootLogin",new SimpleScalar(actionRoot)); - - - tmr.put("docRoot", new SimpleScalar(docRoot)); - tmr.put("now", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar()))); - tmr.put("actionRoot", new SimpleScalar(actionRoot+session)); - tmr.put("openAction", new SimpleScalar(openAction)); - tmr.put("productionHost", new SimpleScalar(productionHost)); - tmr.put("videoHost", new SimpleScalar(videoHost)); - tmr.put("audioHost", new SimpleScalar(audioHost)); - tmr.put("imageHost", new SimpleScalar(imageHost)); - - tmr.put("config", configHash); - tmpl.process(tmr, out); - - } + public static void process(HttpServletResponse res,String templateFilename, + TemplateModelRoot tmr, TemplateModelRoot extra, + PrintWriter out, Locale locale) + throws HTMLParseException { + if (out==null) throw new HTMLParseException("no outputstream"); + Template tmpl = getTemplateFor(templateFilename); + if (tmpl == null) throw new HTMLParseException("no template: " + templateFilename); + if (tmr==null) tmr = new SimpleHash(); + + /** @todo what is this for? (rk) */ + String session=""; + if (res!=null) { + session=res.encodeURL(""); + } + + // put standard configuration into tempalteRootmodel + SimpleHash configHash = new SimpleHash(); + configHash.put("producerDocRoot", new SimpleScalar(producerDocRoot)); + configHash.put("storageRoot", new SimpleScalar(producerStorageRoot)); + configHash.put("productionHost", new SimpleScalar(productionHost)); + configHash.put("openAction", new SimpleScalar(openAction)); + configHash.put("actionRootLogin",new SimpleScalar(actionRoot)); + configHash.put("docRoot", new SimpleScalar(docRoot)); + configHash.put("now", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar()))); + configHash.put("actionRoot", new SimpleScalar(actionRoot+session)); + configHash.put("productionHost", new SimpleScalar(productionHost)); + configHash.put("videoHost", new SimpleScalar(videoHost)); + configHash.put("audioHost", new SimpleScalar(audioHost)); + configHash.put("imageHost", new SimpleScalar(imageHost)); + configHash.put("imagePath", new SimpleScalar(imagePath)); + configHash.put("mirVersion", new SimpleScalar(MirConfig.getProp("Mir.Version"))); + // this conform to updated freemarker syntax + configHash.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() ); + + SimpleHash outPutHash = new SimpleHash(); + + if(extra!=null){ + outPutHash.put("extra",extra); + try{ + while(((SimpleList)extra).hasNext()){ + theLog.printDebugInfo(((SimpleList)extra).next().toString()); + } + }catch(Exception e){} + } + outPutHash.put("data",tmr); + outPutHash.put("config", configHash); + + MessageResources messages = MessageResources.getMessageResources("bundles.admin"); + outPutHash.put("lang", new MessageMethodModel(locale, messages) ); + + tmpl.process(outPutHash,out); + } /** - * Wandelt eine Entity-Liste in eine SimpleList von SimpleHashes um. + * Converts Entity-List to SimpleList of SimpleHashes. * @param aList ist eine Liste von Entity * @return eine freemarker.template.SimpleList von SimpleHashes. + * + * @deprecated EntityLists comply with TemplateListModel now. */ public static SimpleList makeSimpleList(EntityList aList) throws StorageObjectException { - SimpleList simpleList = new SimpleList(); + theLog.printWarning("## using deprecated makeSimpleList(entityList) - a waste of resources"); + SimpleList simpleList = new SimpleList(); if (aList != null) { - for(int i=0;i"); - return null; - } + public static SimpleHash makeSimpleHash(Entity entity) { + if (entity != null) { + theLog.printWarning("## using deprecated makeSimpleHash(entity) - a waste of resources"); + return makeSimpleHash(entity.getValues()); } + else + return null; + } /** * Konvertiert ein Hashtable mit den keys und values als String @@ -289,37 +348,38 @@ public final class HTMLTemplateProcessor { /** - * Wandelt EntityListe in SimpleHash um, und versieht die Liste mit StandardInfos, - * die aus EntityList kommen. + * Converts EntityList in SimpleHash and adds additional information + * to the returned SimpleHash * * @param entList - * @return SimpleHash mit Entity-Daten und ZusatzInfos. + * @return SimpleHash returns SimpleHash with the converted EntityList plus + * additional Data about the list. * @exception StorageObjectException */ - public static SimpleHash makeSimpleHashWithEntitylistInfos(EntityList entList) throws StorageObjectException { - SimpleHash modelRoot = new SimpleHash(); - if (entList!=null) { - modelRoot.put("contentlist", makeSimpleList(entList)); - modelRoot.put("count", new SimpleScalar((new Integer(entList.getCount())).toString())); - if (entList.getWhere()!=null) { - modelRoot.put("where", new SimpleScalar(entList.getWhere())); - modelRoot.put("where_encoded", new SimpleScalar(URLEncoder.encode(entList.getWhere()))); - } - - if(entList.getOrder()!=null) { - modelRoot.put("order", new SimpleScalar(entList.getOrder())); - modelRoot.put("order_encoded", new SimpleScalar(URLEncoder.encode(entList.getOrder()))); - } - modelRoot.put("from", new SimpleScalar((new Integer(entList.getFrom())).toString())); - modelRoot.put("to", new SimpleScalar((new Integer(entList.getTo())).toString())); - - if (entList.hasNextBatch()) - modelRoot.put("next", new SimpleScalar((new Integer(entList.getNextBatch())).toString())); - if (entList.hasPrevBatch()) - modelRoot.put("prev", new SimpleScalar((new Integer(entList.getPrevBatch())).toString())); + + public static SimpleHash makeSimpleHashWithEntitylistInfos(EntityList entList) throws StorageObjectException { + SimpleHash modelRoot = new SimpleHash(); + if (entList!=null) { + modelRoot.put("contentlist", entList); + modelRoot.put("count", new SimpleScalar((new Integer(entList.getCount())).toString())); + if (entList.getWhere()!=null) { + modelRoot.put("where", new SimpleScalar(entList.getWhere())); + modelRoot.put("where_encoded", new SimpleScalar(URLEncoder.encode(entList.getWhere()))); + } + if(entList.getOrder()!=null) { + modelRoot.put("order", new SimpleScalar(entList.getOrder())); + modelRoot.put("order_encoded", new SimpleScalar(URLEncoder.encode(entList.getOrder()))); } - return modelRoot; + modelRoot.put("from", new SimpleScalar((new Integer(entList.getFrom())).toString())); + modelRoot.put("to", new SimpleScalar((new Integer(entList.getTo())).toString())); + + if (entList.hasNextBatch()) + modelRoot.put("next", new SimpleScalar((new Integer(entList.getNextBatch())).toString())); + if (entList.hasPrevBatch()) + modelRoot.put("prev", new SimpleScalar((new Integer(entList.getPrevBatch())).toString())); } + return modelRoot; + } /** * Private methods to get template from a templateFilename @@ -329,11 +389,17 @@ public final class HTMLTemplateProcessor { */ private static Template getTemplateFor(String templateFilename) throws HTMLParseException { - if (templateFilename!=null) return templateCache.getTemplate(templateFilename); - else { + Template returnTemplate = null; + if (templateFilename!=null) + returnTemplate = (Template)templateCache.getItem(templateFilename,"template"); + + + if (returnTemplate==null) { theLog.printError("CACHE (ERR): Unknown template: " + templateFilename); throw new HTMLParseException("Templatefile: "+ templateFilename + " not found."); } + + return returnTemplate; } public static void stopAutoUpdate(){